web-dev-qa-db-ja.com

テンプレートファイルのコンテンツタイプのフィールドの取得-スライドショーの作成

スライドショーを追加する必要があります(各スライドには、見出し、画像、HTMLテキストが含まれています)slideshowという名前のカスタムcontent typeという名前のフィールドを作成することにしました。

スライドショーに使用するコードを追加する必要な.tpl.phpファイル(page--front.tpl.php)を見つけました。

私がすでにやったこと

  • すべての適切なfieldsを使用してslideshowという名前のカスタムcontent typeを作成しました
  • スライドショーに必要なすべてのhtmlを.tpl.phpテンプレートファイルに追加しました。私のテーマの.infoファイルを使用して、必要なJavaScriptがすでに含まれています。

今問題:

  • データベースからデータをフェッチし、.tpl.phpファイルに必要な変数を次の場所に入力します。テーマのtemplate.phpファイルのpreprocess関数。 データベースからslideshowcontent typefieldsを取得するにはどうすればよいですか?

助けてください!

1
Shafiul

私があなたの質問をよく理解している場合、node.tpl.phpは、コンテンツタイプごとのテンプレートを使用して、個々のフィールドを制御するのに適していると思います。

page.tpl.php :単一のDrupalページを表示するためのデフォルトのテーマ実装。

node.tpl.php :ノードを表示するためのデフォルトのテーマ実装。

必要に応じてテンプレートに名前を付ける方法については、このドキュメントを参照してください:Drupal 7テンプレートの提案 http ://drupal.org/node/1089656 。ケースに関しては、コンテンツタイプのテンプレートでは、名前は_node--slideshow.tpl.php_になる可能性があります。詳細は this answer を参照してくださいnode.tpl.phpに関連しています。

また、フィールドの表示方法については、 答え への同じリンクに1つの例があります。

_field_demotext1_というフィールドがあります。これは、ノードレイアウトのカスタムHTMLゾーン内でそれぞれの値を呼び出すために使用できる方法です。

_print $content['field_demotext1']['#items'][0]['value'];
_

whit print_r($content);(またはdsm($content);を使用する場合 Devel module )プル可能なフィールドが表示されます。このスクリーンショットは、例に関連するdsm($content);を使用しています。

dsm $content

Render Drupal APIは以前の方法の代替手段です。この方法では、dsm()またはprint_r()

_print render($content['field_demotext1']);
_

また、 field_view_field はレンダリングのもう1つの代替手段であるようですDrupal fields。see this 関連ドキュメント:

情報がお役に立てば幸いです。

3
cigotete

最初の解決策:

関数「db_select」を使用してSQLクエリを作成する

2番目のソリューション:

関数「node_load」を利用しますが、必要なノードを取得します。

2
Onita