2

かなり簡単な質問:

drupal 7 サイトで page--front.tpl および page.tpl テンプレート ページを使用しています。しかし、もう 1 つのページで page-front.tpl を使用したいと考えています。これは可能ですか、それとも別の .tpl ページを作成する必要がありますか?

私が取り組んでいるサイトは 2 つのセクションに分かれています。基本的には、消費者かビジネス オーナーかを切り替えることができる 2 つの別々の Web サイトです。そこで、各サイトのホームページに front.tpl テンプレートを使いたいと思います。

乾杯。

4

1 に答える 1

6

theme_preprocess_pageテーマのファイルに関数を追加してからtemplate.php、テンプレート名をテンプレート候補リストに追加できます。

function mytheme_preprocess_page(&$vars) {
    // you can perform different if statements
    // if () {...
        $template = 'page__front'; // you should replace dash sign with underscore
        $vars['theme_hook_suggestions'][] = $template;
    // }
}

編集

テンプレート名をパス エイリアスで指定する場合は、次のようなコードを記述できます。

function phptemplate_preprocess_page(&$variables) {
    if (module_exists('path')) {
        $alias = drupal_get_path_alias($_GET['q']);
        if ($alias != $_GET['q']) {
            $template = 'page_';
            foreach (explode('/', $alias) as $part) {
                $template.= "_{$part}";
                $variables['theme_hook_suggestions'][] = $template;
            }
        }
    }
}

この関数がないと、デフォルトで次のノード テンプレートの提案が表示されます。

array(
    [0] => page__node
    [1] => page__node__%
    [2] => page__node__1
)

この関数は、次の新しいテンプレートの提案をノードに適用します。node/1パスとpage/aboutエイリアスを持つノードの例:

array(
    [0] => page__node
    [1] => page__node__%
    [2] => page__node__1
    [3] => page__page
    [4] => page__page_about
)

その後page--page-about.tpl.php、ページに使用できます。

page--front.tpl.phplet's sayに適用したい場合node/15は、この関数に if ステートメントを追加できます。

function phptemplate_preprocess_page(&$variables) {
    if (module_exists('path')) {
        $alias = drupal_get_path_alias($_GET['q']);
        if ($alias != $_GET['q']) {
            $template = 'page_';
            foreach (explode('/', $alias) as $part) {
                $template.= "_{$part}";
                $variables['theme_hook_suggestions'][] = $template;
            }
        }
    }

    if ($_GET['q'] == 'node/15') {
        $variables['theme_hook_suggestions'][] = 'page__front';
    }
}

これにより、次のテンプレートの提案が得られます。

array(
    [0] => page__node
    [1] => page__node__%
    [2] => page__node__1
    [3] => page__page
    [4] => page__page_about
    [5] => page__front
)

最高のインデックス - 最高のテンプレート優先度。

于 2011-11-25T11:35:58.117 に答える