私は本当にシンプルなサイトを構築していて、今この質問に出くわしました。サイトにはいくつかのコンテンツタイプがあり、そのうちの1つはモデレートWikiとして機能します(特定の役割を持つユーザーのみがそのコンテンツを作成/編集できます)。これらのノードのリストを表示するとき、またはフルモードでそのコンテンツタイプのノードを表示するとき、サイトのロゴを変更したいと思います。 "My site"ではなく、"My site [[wiki]]"のように言います。
私の最初の考えは、コンテキストに基づいてテーマ設定を変更するためにコンテキストを微調整することでした。残念ながら、それを取得する方法が見つかりませんでした:/
私はここで利用可能な回答に飛び込んできましたが、答えはないようですが、いくつかの同様の質問が異なるシステムを通じてこの主題に取り組んでいます:
特定のコンテンツタイプに対してこのカスタムロゴを取得するための最良のアプローチは何かに関するアイデアはありますか?
ありがとう:)
回答で提供されたコードは適切に機能していませんでしたが、コードを適合させて機能させました。
function YOURTHEMENAME_preprocess_page(&$vars, $hook) {
if (isset($vars['node'])) {
// If the node type is "blog" the template suggestion will be "page--node--blog.tpl.php".
$vars['theme_hook_suggestions'][] = 'page__node__' . str_replace('_', '--', $vars['node']->type);
}
}
この関数を使用して、調整可能なカスタマイズされたpage.tpl.phpを取得しました。代替ロゴのURLパスをハードコーディングするのは洗練されていないように見えるので、このコンテンツタイプの$ logo値を変更するか、テーマに追加の設定を追加するだけです。
最も簡単な方法は、コンテンツタイプのtplを作成して、以下の手順に従うことです。
最初に、以下のようにpreprocess_page関数を作成します。これは、template.phpファイルに入ります。
function YOURTHEMENAME_preprocess_page(&$vars) {
if (isset($vars['node']->type)) {
$vars['theme_hook_suggestions'][] = 'page__' . $vars['node']->type;
}
}
これで、コンテンツタイプごとに次のような新しいpage.tplを作成できます。
page__CONTERNTTYPENAME.tpl.php
既存のpage.tpl.phpのコンテンツ全体をこれにコピーして、ロゴを目的のロゴに置き換えることができます。
禅のテーマでは、ロゴはページにあります。tplは次のように印刷されます。
<?php if ($logo): ?>
<a href="<?php print $front_page; ?>" title="<?php print t('Home'); ?>" rel="home" id="logo"><img src="<?php print $logo; ?>" alt="<?php print t('Home'); ?>" /></a>
<?php endif; ?>
ここで、画像のsrcをロゴへの直接パスに置き換えることができます。