「ノード参照Drupalフィールドの非自明なタスク」に応えて、調理用のカスタムモジュールの1つを提出することにしました。
モジュールが機能するために、サイト資料の次の構造が想定されます。
レシピ材料タイプ-レシピ説明付きのメインコンテンツ
成分を含む材料の種類:
- 成分1-最初のグループの成分を含むサイト材料(例:材料の種類「スパイス」)
- 成分2-2番目のグループの成分を含むサイト材料(例:材料の種類「果物」)
- ...
- 成分N-グループN成分を含むサイトマテリアル
ドロップダウンリストのすべての材料はグループに分けられます。 したがって、それらを見つけるのは簡単です。
モジュールをオンにすると、使用可能なフィールドタイプのリストに「タイプ」という追加のタイプが表示されます。
このモジュールを使用すると、成分のノードに参照リンクを追加し、製品の数量と測定単位を設定できます。 複数行の追加、ドラッグアンドドロップの並べ替えをサポートします。
原料の種類を示すだけで十分です。
モジュールの便利な機能は、表示されるデータのテーマ機能です
関数theme_recipe_site_formatter_default($要素){ $ fields = $ element ['#item']; $ res = ''; if(!empty($ fields)){ $ item = explode( '[nid:'、$ fields ['ingredient_name']); $ title = trim($アイテム[0]); $ nid = drupal_substr($アイテム[1]、0、-1); $ res = l($タイトル、「ノード/」。$nid)。 -'。 $ fields ['ingredient_qty']。($ fields ['ingredient_unit'] == '<space>'? '': ''。$ fields ['ingredient_unit']); } $ resを返します。 }
テーマファイルtemplate.phpで、関数を作成し、変数$ resを事前準備済みのビューへのリンクとして作成します。これは、引数として成分のnidを受け取ります。 これにより、この成分を使用するすべてのレシピのリストを取得できます。
関数NAME_recipe_site_formatter_default($要素){ $ fields = $ element ['#item']; $ res = ''; if(!empty($ fields)){ $ item = explode( '[nid:'、$ fields ['ingredient_name']); $ title = trim($アイテム[0]); $ nid = drupal_substr($アイテム[1]、0、-1); $ res = l($タイトル、 'WAY_C_VIEWS/'。$nid)' -'。 $ fields ['ingredient_qty']。($ fields ['ingredient_unit'] == '<space>'? '': ''。$ fields ['ingredient_unit']); } $ resを返します。 }
キャッシュをフラッシュすることを忘れないでください。
実際には、 モジュール自体
奇妙なことに-それは動作します;)
Habrahabrのユーザーではなく、友人からの招待状を受け取るための記事。
親切な人がいる場合は、serjik.bozhko @ gmail.comにメールを送ってください。