5

私は 4 年間 PHP でコーディングしてきましたが、PHP は非常に複雑で理解しにくいと感じています。デザイナーがどのようにテーマを管理することを彼らが期待しているのか、私にはわかりません。

基本的なテーマ設定、tpl ファイルを使用したテーマ設定、ビュー テンプレート、熟考テンプレートなどは知っていますが、template.php ファイルに入るたびに迷子になります。

カスタム コンテンツ タイプのノード入力フォームのテーマを設定する必要がありました。7 ~ 9 個のチュートリアルで頭を悩ませましたが、まだまとまりません。モジュールの構築が複雑になる理由は理解できます。モジュールを扱うほとんどの人はとにかく開発者だからです。

ただし、開発者でさえテーマを理解できない場合、それは間違いなく過剰設計です!

私のせいかもしれません。Drupal をきちんと学ばなかったのかもしれません。その場合、Drupal の第一人者になるための段階的なシステムはありますか?

4

6 に答える 6

10

基本的なphpさえ知っていれば、テーマはそれほど難しくありません。マークアップを変更するには、css と js の 3 つの方法があり、処理できるはずです。

  • テンプレート ファイル。テーマでテンプレート ファイルを作成し、適切な名前を付けることで、他のテンプレート ファイルよりも優先されるため、ビュー、ノードなどのカスタム マークアップを作成できます。noce タイプのテンプレートを作成することで、印刷などの操作を実行できます。を使用する代わりに、その他の cck フィールドをアウトし$contentます。必要なのはノード オブジェクトだけです。

  • テーマに配置される前処理関数は、テンプレートで使用される変数を追加または変更する可能性を提供します。関数にフックのような名前を付けます:ノード テンプレートyourtheme_pageのページyourtheme_nodeテンプレートなど。ここで、カスタム ロジックまたは変更を作成して、テンプレートをよりクリーンにし、変数の出力のみを処理することができます。

  • テーマ関数。テーマ関数を上書きして、使用されるマークアップを変更できます。という関数を作成するだけですyourtheme_[theme_function_name]。これを行うために多くの php を理解する必要はありません。多くの場合、元のテーマ関数をコピーし、それにいくつかの変更を加えて、必要なマークアップを取得できます。

上記の方法で、必要なことの 90 ~ 95% を実行できます。Drupal 6 ではフォームをテーマで (簡単に) 変更できないため、フォームは少し特殊です。代わりに、小さなモジュールを作成して を使用するhook_form_alter必要があります。これにより、フォーム、ボタンで使用されるテキストなどを変更できます。これは Drupal 7 で変更され、テーマがさらに簡単になります。

それほど複雑ではありません。上記の 3 つの基本的なツールを使用するだけです。関数とテンプレートに名前を付けるのは難しい部分ですが、開発者がそれを手伝ってくれます。使用するもう 1 つのツールはdevelです。これは、変数を出力して検査し、ノードの fx CCK フィールドで利用可能なものを確認できるようにするのに役立ちます。

于 2010-09-14T07:08:53.377 に答える
6

ほとんどの人は「ああ!」と感じます。テーマが突然意味を成し始める瞬間。

これはおそらく、経験豊富な PHP 開発者にとっては難しいと思います。なぜなら、バニラ PHP では意味をなさない多くの概念を乗り越える必要があるからです (「関数は適切なタイミングで魔法のように呼び出されます...名前?!")

@googletorp の回答は非常に包括的であるため、役立つ実用的なヒントをいくつか追加します。

1) 独自のテーマ設定可能な出力と単純なフックを実装するモジュールを構築してみてください。フックとテーマ関数は、モジュールが実際にそれらをどのように呼び出して使用しているかを見ると、より意味のあるものになります。

devel2)モジュール、特にテーマ レジストリ メニュー (新しいテーマ関数を追加するとどのように変化するかに注意してください)、「レンダリング」タブ、dpm()およびdvm()関数を自由に使用してください。

3) Drupal テーマに関する昔ながらの枯れ木の本を購入する。オンライン ドキュメントは、自分が何をしているかを既に知っている場合には非常に優れていますが、何を探しているのかわからない場合は非常に混乱する可能性があります。

4) カップを空にします。テーマ レベルでは、PHP は単純なロジックと構文にすぎません。ほとんどすべての内容が Drupal API 関数によって処理されます。PHP 開発者ではなく、Drupal 開発者のように考えてみてください (つまり、同じことを行うバニラ PHP サイトを構築したからといって、何かを行う方法を知っていると思い込まないでください)。

それを守ってください!一度理解すれば、テーマシステムは実際には非常に使いやすいです。

于 2010-09-14T10:38:21.050 に答える
6

Front End Drupalのコピーを入手する必要があるかもしれません。

私の意見では、Drupal のテーマ設定は、テンプレート、オーバーライド、.info ファイル、前処理関数などの概念を理解すれば難しくありません。これらは PHP のスキルとは直接関係ありません。システムを理解することがすべてです。

あなたがテーマ担当者であるにもかかわらず、CSS や HTML についてではなく、PHP についてのみ話しているのは興味深いことです。私の経験では、多くのテーマ タスクは、php に触れることなく、CSS で実行できます。

最後に、ベース/スターター テーマ( ZenGenesisなど) を既に使用しているかどうかはわかりません。ベーステーマを使用し、サブテーマとして独自のデザインを実現することをお勧めします。

于 2010-09-14T07:18:37.913 に答える
3

なぜそれがとても難しいのかについてのあなたの質問に答えるために:

Drupalのテーマは、可能性が非常に多いため、圧倒されるように思われるかもしれません。概要については、@googletorpsの回答を参照してください。「1つのことを行うための多くの方法」を持つことでパワーがもたらされます。パワーユーザーはすべての可能性の中から最良のものを選択できます。しかし、それは複雑さももたらします。「この方法で行う必要があります。フルストップ」がないため、新しいユーザーは良いリードを得ることができません。

物事を成し遂げるためのその量の方法に加えて、入れ子の問題があります。Drupalには、非常に深くネストされたアイテムの概念があります。ランダムでありながら単純な例をとるには:

username<menuitem<menuitem<menuitem<menu<block<region<page. 

サイドバーブロックの3レベルの深いメニュー項目にユーザー名を含むメニュー項目をレンダリングします。ほとんどのテンプレート環境にページの概念があり、多くてもいくつかの部分を含む可能性のあるいくつかの「コンテンツ」が含まれています。入れ子は最大で3レベルの深さです。また、各レベルには明確で明確な専門分野があります。Drupalにはそれがありません。ネストはかなり恣意的です。また、ネストされた各アイテムは、その親と同じです。これもまた、パワーユーザーに優れたコンセプトと作業能力を提供しますが、新しい開発者/設計者にとっては理解しがたいものです。

最後に、習得が難しいもう1つの理由は、Drupalのオンラインドキュメントが最初から最後まで読むマニュアルというよりもwikiであるということです。htatのギャップを埋める素晴らしい本がありますが、それらを購入する必要があります。

于 2010-09-14T08:14:49.183 に答える
1

最大のトリックの 1 つは、テーマ関数で通常レンダリングされるものをテンプレートにオーバーライドすることです。これにより、マークアップをより詳細に制御できるようになり、前処理関数を使用して変数をテンプレートに渡す前に操作することもできます。

これは、フォームのテーマに大きな恩恵をもたらします。ここで説明するよりも詳しく説明している短いビデオをご覧ください: http://drupaldojo.com/session/fine-tuning-ui-theming-forms-drupal-60

于 2010-09-17T05:56:32.893 に答える
1

まだご覧になっていない方のために説明すると、これは Drupal 6 のテーマ設定が難しい理由と、Drupal 7 でどのように改善されるかについての素晴らしいプレゼンテーションです。希望があります! ビデオは、より多くの経験をテーマにした後、2回目に見るとより意味がありました. http://sf2010.drupal.org/conference/sessions/design-and-theming-whats-new-drupal-7

于 2010-09-14T12:14:06.710 に答える