なぜDrupalのテーマがそんなに難しいのですか?それを簡素化したり、より速く学んだりするためのヒントはありますか?

StackOverflow https://stackoverflow.com/questions/3706118

  •  02-10-2019
  •  | 
  •  

質問

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

基本的なテーマ、TPLファイルのテーマ、テンプレートの表示、テンプレートの概要などを知っています。ただし、Template.phpファイルを入力すると迷子になります。

カスタムコンテンツタイプのノード入力フォームをテーマにする必要がありました。私は7-9のチュートリアルのように脳を破壊しましたが、まだ一緒になっていません。モジュールの構築が複雑になる理由を理解しています。モジュールを使用しているほとんどの人はとにかく開発者であるためです。

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

多分それは私のせいです、多分私はDrupalを適切に学ばなかったでしょう。その場合、Drupalの第一人者になるための段階的なシステムはありますか?

役に立ちましたか?

解決

基本的なPHPだけを知っている場合、テーマはそれほど難しくありません。マークアップを変更する3つの方法、CSSとJSがあります。処理できるはずです。

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

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

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

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

そのため、それほど複雑ではありません。上記の3つの基本ツールを使用してください。トリッキーな部分は、あなたの機能とテンプレートに名前を付けることですが、 デブテーマ それであなたを助けることができます。使用するもう1つのツールはです デビル 変数を印刷するのに役立つので、それらを検査して、利用可能なもの、ノード上のFX CCKフィールドを確認できます。

他のヒント

たぶんあなたはのコピーを入手する必要があります フロントエンドドラップ.

私の意見では、Drupalテーマは、テンプレート、オーバーライド、.infoファイル、プリプロース機能などの概念に頭を包むと、難しくありません。これらはPHPスキルに直接関係していないため、システムを理解することがすべてです。

あなたがテーマであることを見るのは興味深いことですが、CSSやHTMLではなく、PHPについてのみ話しています。私の経験では、PHPに触れることなく、CSSで多くのテーマタスクを実現できます。

最後に、あなたが使用しているかどうかはわかりません ベース/スターターのテーマ (お気に入り また 創世記) すでに。基本テーマを使用して、独自のデザインをサブテーマとして実現することをお勧めします。

ほとんどの人は「ああ!」テーマが突然理にかなっている瞬間。

バニラのPHPで意味をなさない多くの概念を乗り越えなければならないので、これは経験豊富なPHP開発者にとっておそらくより難しいと主張します(「適切な時期に魔法のように呼ばれます...これは 名前が付けられました?!")

@googletorpの答えはかなり包括的なので、私を助けてくれた実用的なヒントをいくつか追加するだけです。

1)独自の出力とシンプルなフックを実装するモジュールを構築してみてください。フックとテーマ関数はaを作成します 多く モジュールが実際にそれらを呼び出して使用している方法を見ると、より感覚があります。

2)リベラルな使用を行う devel モジュール、特にテーマレジストリメニュー(新しいテーマ関数を追加するとそれがどのように変更されるかに注意してください)、「レンダリング」タブ、および dpm()dvm() 関数

3)Drupalテーマに関する古い型のデッドツリーブックを購入します。オンラインドキュメントは、自分が何をしているのかを既に知っている場合は本当に傑出していますが、探しているものがわからない場合は非常に混乱する可能性があります。

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

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

あなたの質問に答えるために なぜそんなに難しいのか:

Drupalのテーマは、膨大な量の可能性があるため、圧倒的に見えるかもしれません。良い概要については、@googletorpsの回答を参照してください。 「1つのことをするための多くの方法」を持つことは、パワーをもたらします。パワーユーザーは、すべての可能性を最大限に選択できます。しかし、それは複雑さをもたらします。新しいユーザーは良いリードを獲得しません。

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

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

サイドバーブロックの3レベルの深いメニューアイテムのユーザー名を含むメニューアイテムをレンダリングします。ほとんどのテンプレート環境がページの概念を備えており、せいぜい一部の部分的な「内容」が含まれているいくつかの「内容」が含まれています。ネスティングは最大3レベルの深さです。また、各レベルには、明確で明確な専門分野があります。 Drupalにはそれがありません:ネスティングはかなりarbitrary意的です。そして、各ネストされたアイテムは、その親と違いはありません。繰り返しますが、これにより、パワーユーザーに素晴らしいコンセプトとパワーを操作することができますが、新しい開発者/デザイナーにとってはgloっています。

最後に、学ぶのが難しいもう1つの理由は、Drupalオンラインドキュメントが読み取りから終了したマニュアルよりもウィキであることです。ただし、HTATギャップを埋める素晴らしい本がありますが、購入する必要があります。

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

最大のトリックの1つは、テーマ関数で通常のレンダリングされたものをテンプレートにオーバーライドすることです。これにより、マークアップをはるかに制御できます。また、プレプロース機能を使用して変数を操作してから、テンプレートに引き渡すことができます。

これは、テーマ形式の大きな恩恵です。ここでできるよりもよく説明する短いビデオを見てください: http://drupaldojo.com/session/fine-tuning-ui-theming-forms-drupal-60

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top