0

template.phpファイルに、以下のコードを挿入しました。コードを提供するチュートリアルをオンラインで見つけましたが、それを機能させる方法について混乱しています。

以下のコードをコピーして、テーマHTML5_baseからtemplate.phpに挿入しました。page.tpl.phpファイルを複製し、カスタムページ( page-gallery.tpl.phppage-articles.tpl.php )を作成しました。ファイルにテキストを挿入したところ、変更を加えたページに移動したことがわかります。Drupalがgallery.tpl.phpとpage-articles.tpl.phpを認識していないようです。

template.phpには、次の関数があります。

html5_base_preprocess_page()

html5_base_preprocess_node()

html5_base_preprocess_block()

チュートリアルでは、次の関数を使用します

phptemplate_preprocess_page()

phptemplate_preprocess_block()

phptemplate_preprocess_node()

 function phptemplate_preprocess_page(&$vars)

{
    //code block from the Drupal handbook

    //the path module is required and must be activated
    if(module_exists('path'))
    {
        //gets the "clean" URL of the current page
        $alias = drupal_get_path_alias($_GET['q']);

        $suggestions = array();
        $template_filename = 'page';
        foreach(explode('/', $alias) as $path_part)
        {
            $template_filename = $template_filename.'-'.$path_part;
            $suggestions[] = $template_filename;
        }

        $vars['template_files'] = $suggestions;
    }
}

function phptemplate_preprocess_node(&$vars)
{
    //default template suggestions for all nodes
    $vars['template_files'] = array();
    $vars['template_files'][] = 'node';

    //individual node being displayed
    if($vars['page'])
    {    
        $vars['template_files'][] = 'node-page';
        $vars['template_files'][] = 'node-'.$vars['node']->type.'-page';
        $vars['template_files'][] = 'node-'.$vars['node']->nid.'-page';
    }
    //multiple nodes being displayed on one page in either teaser
    //or full view
    else
    {
        //template suggestions for nodes in general
        $vars['template_files'][] = 'node-'.$vars['node']->type;
        $vars['template_files'][] = 'node-'.$vars['node']->nid;

        //template suggestions for nodes in teaser view
        //more granular control
        if($vars['teaser'])
        {
            $vars['template_files'][] = 'node-'.$vars['node']->type.'-teaser';    
            $vars['template_files'][] = 'node-'.$vars['node']->nid.'-teaser';
        }
    }
}

function phptemplate_preprocess_block(&$vars)
{
    //the "cleaned-up" block title to be used for suggestion file name
    $subject = str_replace(" ", "-", strtolower($vars['block']->subject));

    $vars['template_files'] = array('block', 'block-'.$vars['block']->delta, 'block-'.$subject);    
}
4

1 に答える 1

0

ああ!これを行うのは非常に苦痛です。

CtoolsおよびPanelsモジュールを試してみませんか。

Ctoolsには便利なモジュールがたくさんありますが、よく利用するのは " Page Manager " と呼ばれるものです。選択したカスタム ページを作成し、パネルモジュールを使用してカスタム レイアウトを適用できます。

これが物事を簡素化することを願っています。

于 2010-12-25T12:34:47.247 に答える