質問
私はDrupalにサイトを構築していますが、作成したビューを使用するページにセカンダリリンクを表示するだけです。views-view.tpl.phpで$ secondary_links変数を使用しようとしましたが、変数はnullです。どうすればこれを達成できますか?
解決
テーマ設定からセカンダリリンクを有効にしましたか?それは次のようになります:
http://example.com/admin/build/themes/settings/name_of_your_theme
このオプションを有効にすると、変数が設定されると思います。
編集: もう一度考えてみると、プライマリ リンクとセカンダリ リンクがビュー テンプレートに渡されるかどうかは不明であるともコメントします。それらはに渡されると思います page.tpl.php
代わりにファイルを作成します。私の考えが正しく、何らかの理由でその変数をビュー テンプレートに渡される変数に追加したい場合は、説明したように前処理関数を使用する必要があります。 ここ.
編集#2: 確かに、特定のビュー テンプレートで使用される 2 番目のメニューのみが必要な場合、別のアプローチは、単純に呼び出すことです。 menu_secondary_links()
テンプレート内から。これは、別の場所に属するべきテーマ要素を挿入するため、これまでで最もエレガントなソリューションではありませんが、ビュー内のそのメニューがコア機能であるか、スタイル要素であるかを判断するのはユーザー次第です。
ひーっ!
他のヒント
Mac が正しく記述するように、セカンダリ リンクは page.tpl.php でのみ利用可能ですが、私の理解が正しければ、最善の解決策はセカンダリ リンクをビューに表示しないことです。
あなたのテーマでは、ビュー、ノード、フロントページなど、何が表示されているかに関係なく、セカンダリリンクが本来あるべき場所に印刷される可能性が高くなります。ビューが表示され、その他のレンダリングするものはすべてページ テンプレートにラップされ、メニューの配置場所、領域、その他の楽しい要素が制御されます。
さて、これ、メニューの位置、スタイルなどを変更したくない場合は、ビュー テンプレートに 2 番目のメニューを印刷すべきではなく、それに対して何もするべきではありません。
解決策は簡単です
macが言及したものを使用していますが、方法は異なります。前処理機能。これらの関数は、変数にロジックを追加するために template.php ファイルで使用されます。変数を変更したり、完全に削除したりできます。私がやるべきことは、単に次の値を設定してプライマリリンクを削除することです。 $primary_links
空のテキスト文字列に。
これにより、実質的にプライマリ リンクが削除され、セカンダリ リンクのみが表示されます。セカンダリ リンクをプライマリとして表示することもできますが、これによりユーザーが混乱する可能性があります。これがいつ起こるかを制御するロジックを追加するだけで、準備は完了です。
あなたはどのビューに二次メニューを表示するには、次のコードを使用することができます。
function YourTheme_preprocess_views_view(&$vars)
{
$menu_sec = menu_navigation_links('menu-secondary');
$vars['custom_menu'] = theme('links__menu-secondary', array('links' => $menu_sec));
}
またはあなたもあなたのニーズに応じて、他の前処理機能を使用することができます。
また、あなたが使用して.tpl.phpファイルにそれを呼び出すことができます:
<?php
$menu_sec = menu_navigation_links('menu-secondary');
print theme('links__menu-secondary',
array(
'links' => $menu_sec,
'attributes'=>array(
'class' => array('nav', 'nav-pills', 'p-f-subfilter'),
)
)
);
?>