1ページのウェブサイトを作りたいのですが。私ができることを望んでいるのは、1つのコンテンツタイプから作成されたすべてのページを、おそらくfor eachループで互いにロードすることです。
したがって、page.tpl.phpでは、次のようになります。
foreach($pages as $page){
print $title;
print render($page['content']);
}
このようにして、ビュー/ブロックをページの特定の部分にバインドすることもできます。このようなアプローチを探しているのは、ウェブサイトを管理しやすい状態に保つためです。
構造は次のようになります。
home
about
- slide one (view)
- slide two (view)
- slide three (view)
other page
- slide one (view)
- slide two (view)
したがって、言及されたスライドは、ビューからロードされた、異なるコンテンツタイプのアイテムです。
誰かが私を正しい方向に向けることができる場合、または質問の一部を解決する必要がある場合は、私に知らせてください。
人々がまだこれに興味があるなら、私はここに私の解決策を与えます:
$query = new EntityFieldQuery();
$query->entityCondition('entity_type', 'node')
->propertyCondition('status', 1) /* Status to make sure it is published */
->propertyCondition('type', array('page', 'webform')) /* get pages and webforms */
->fieldOrderBy('field_volgorde', 'value', 'ASC') /* a custom field to set the order */
->range(0, 9999); /* amount of pages to get */
$result = $query->execute();
$nodes = node_load_multiple(array_keys($result['node']));
foreach($nodes as $node):
// Do your code magic
endforeach;
Foreach内では、次のコード例を使用してフィールドをエコーできます。
echo $node->title;
echo $node->body['und'][0]['value'];
// ['und'] = language undefined
ご不明な点がございましたら、お気軽にお問い合わせください。
ページの各セクション(home、about、other)にtextareaフィールドを持つカスタムコンテンツタイプを作成します。
コンテンツタイプのカスタムテンプレートを作成し、すべてのフィールドを適切な場所に出力します。ビューをブロックとして追加できます。
理にかなっていますか?
次のコードを使用して、タイプのすべてのノードを取得します。
$type = 'example';
$query = db_select('node', 'n')
->fields('n', array('nid'))
->condition('type', $type)
->condition('status', 1);
$nids = $query->execute()->fetchCol();
$nodes = node_load_multiple($nids);
最終的に、次のコードを使用してすべてのページを取得しました。
<?php
$type = "page"; // machine name for Basic Page
$nodes = node_load_multiple(array(), array('type' => $type));
foreach($nodes as $node):
// code here
endforeach;
?>