私はこれについて私の機知に富んでいるので、ここの誰かが私を正しい方向に向けることができることを願っています. field_portfolio_description というテキスト フィールドを持つ、portfolio_item というコンテンツ タイプがあります。ビューを使用せずに、そのフィールドに存在するすべての値のリストを印刷しようとしています。これは、これまでに template.php ファイルにある preprocess_page 関数です。
function blocks_preprocess_page(&$vars, $hook) {
$node = menu_get_object();
if ($node->type == 'portfolio_item') {
$portfolios = field_get_items('node', $node, 'field_portfolio_description');
$items = array();
foreach ($portfolios as $folio) {
$items['data'] = $folio['value'];
}
$vars['description'] = theme('item_list', array('items' => $items));
}
}
最後に、次のようにページ テンプレートでそれを呼び出そうとしています。
<?php print render($description); ?>
私はいくつかの異なるバリエーションを試しましたが、役に立ちませんでした。どんな助け/提案も大歓迎です。
更新: ようやくデバッグ結果が得られました。次のエラーが表示されます: 注意: blocks_preprocess_page() で非オブジェクトのプロパティを取得しようとしています (/sites/all/themes/blocks/template.php の 24 行目)。これは 24 行目です:
if ($node->type == 'portfolio_item') {
Portfolio_item はコンテンツ タイプのマシン名であるため、これは問題ではありません。
更新 2: よし、関数を $node = menu_get_object(); まで削除しました。行を調べて var_dump を実行し (dpm が機能していませんでした)、非オブジェクト エラーが原因で、ページにアクセスしたときに、portfolio_item が出力に存在しないことを発見しました。ポートフォリオ アイテムが存在するのは、実際のポートフォリオ アイテムにアクセスしたときだけです。
そのため、私はこれについて完全に間違った方法で行っているように見えます。また、ビューでは、そのフィールドに項目の単純なリストを表示できないようです。
私はおそらくこれを後で再検討し、解決策を見つけた場合は必ず最終的なコードを投稿します. 繰り返しますが、他の誰かがアイデアを持っているなら、私はそれらを試してみましょう. 声をかけてくれた人たちに改めて感謝します。