web-dev-qa-db-ja.com

ノードのテーマ設定に関する質問

Drupal 7.で特定のノードタイプのテーマを設定しています。7。ファイルにnode--mynodetypename.tpl.phpという名前を付けました。すべて問題なく、デフォルトのノードテンプレートを上書きできます。問題は通常のノードテンプレートに微妙な変更を加えます。基本的にはDIVの構造です。元のレイアウトを複製しようとして問題が発生します。コンテンツテンプレートモジュールをインストールし、そこから変数名を取得しています。現在のバージョンにはいくつかのバグがあるため、それを使用しています。

  1. コンテンツタイプの最後にコメントブロックを追加するにはどうすればよいですか?そこに通常のコメントエンジンを配置したいのですが、新しいレイアウトでは消えてしまいました。 Contemplateは、コメントブロックをすべて表示するための変数を提供していません。

  2. 画像のURLを公開する正しい方法はありますか? Contemplateは、生の画像ファイル用にこれを$node->field_image['pt-br'][0]['filename']で提供しますが、すべてのフォルダー構造を手動で満たす必要があります。これも$node->field_image['pt-br'][0]['uri']です。それは多かれ少なかれpublic://images/folder1/folder2/filename.JPGのように画像ファイルの上にフォルダ構造を示します。
    画像のURL全体を作成するために呼び出す必要がある関数はありますか?

  3. 国のパイプリストを選択リストとして作成しました。私のレイアウトでは、国の名前を表示したいのですが、contemplate $node->field_country['pt-br'][0]['value']で生成された変数は国コードのみを保持しています。国の名前を教えてください。
    どうやってやるの?

2
Marcos Buarque

デフォルトのnode.tpl.phpを見てください。 render($content)を使用してコンテンツをレンダリングしていることがわかります。

私はContemplateを使用したことはありませんが、 devel module をインストールすると、dpm()関数を使用して変数を詳細に確認できます。 dpm($content)を試すと、レンダリングできるすべてのコンテンツが表示されます。または、hide関数を使用してコンテンツを削除することもできます。たとえば、hide($content['links])の前にrender($content)を使用すると、リンクはレンダリングされません。コメントはrender($content['comments']);で表示できます。 render()は、引数として関数に渡された要素のレンダリングに使用されるHTMLマークアップを返すため、render()が返す値を出力することを忘れないでください。

render($content['your_image_field'])を使用すると、画像フィールドを簡単にレンダリングできます。
Countries モジュールを使用している場合、admin/structure/types/manage/your-content-type/displayのコンテンツタイプ表示に表示される内容を制御できます。コンテンツの残りの部分と同じようにレンダリングするだけです。

2
Jepedo