料理サイトモジュール

こんにちは、ユーザー名、

「ノード参照Drupalフィールドの非自明なタスク」に応えて、調理用のカスタムモジュールの1つを提出することにしました。

モジュールが機能するために、サイト資料の次の構造が想定されます。
レシピ材料タイプ-レシピ説明付きのメインコンテンツ
成分を含む材料の種類:
  1. 成分1-最初のグループの成分を含むサイト材料(例:材料の種類「スパイス」)
  2. 成分2-2番目のグループの成分を含むサイト材料(例:材料の種類「果物」)
  3. ...
  4. 成分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にメールを送ってください。

Source: https://habr.com/ru/post/J82632/


All Articles