Drupalでサイトを構築していますが、作成したビューを使用するページにセカンダリリンクのみを表示したいと思います。views-view.tpl.phpで$secondary_links変数を使用しようとしましたが、変数がnullです。どうすればこれを達成できますか?
3 に答える
セカンダリ リンクは、mac が正しく書いているように、page.tpl.php でのみ利用可能です。
あなたのテーマでは、ビュー、ノード、フロントページなど、表示されているものに関係なく、セカンダリリンクが必要な場所に印刷される可能性が高くなります。ビューが表示され、レンダリングする他のすべてのものはメニューが配置される場所、リージョン、およびその他の楽しいものを制御するページ テンプレート。
ここで、メニューの場所、スタイルなどを変更したくない場合は、ビュー テンプレートでセカンダリ メニューを印刷しないでください。何もしないでください。
解決策は簡単
です。Macが言及したものを別の方法で使用しています:前処理機能。これらの関数は、変数にいくつかのロジックを追加するために、template.php ファイルで使用されます。変数を変更したり、完全に削除したりできます。$primary_links
の値を空のテキスト文字列に設定して、プライマリ リンクを削除するだけです。
これにより、プライマリ リンクが効果的に削除されるため、セカンダリ リンクのみが表示されます。セカンダリ リンクをプライマリとして表示することもできますが、これによりユーザーが混乱する可能性があります。これがいつ発生するかを制御するためのロジックを追加するだけで、設定が完了します。
テーマ設定から二次リンクを有効にしましたか? それは次のようになります。
http://example.com/admin/build/themes/settings/name_of_your_theme
オプションを有効にすると、変数が入力されると思います。
EDIT:もう少し考えて、プライマリリンクとセカンダリリンクがビューテンプレートに渡されているかどうかわからないこともコメントします。それらはpage.tpl.php
代わりにファイルに渡されると思います。私が正しく、何らかの理由でその変数をビュー テンプレートに渡される変数に追加したい場合は、こちらで説明されているように、前処理関数を使用する必要があります。
編集 #2:実際、特定のビュー テンプレートで使用されるセカンダリ メニューのみが必要な場合はmenu_secondary_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'),
)
)
);
?>