Drupal 7 - 如何以正确的方式使用预处理功能?

时间:2015-06-15 18:29:55

标签: php drupal drupal-7

在我的 page.tpl.php 中,我有以下代码,这在后端会造成一些麻烦。因此,我希望通过预处理功能以更好的方式解决它。

if (!path_is_admin(current_path())) {
                    $pathArray = explode('/', current_path());
                    if (!empty($pathArray)) {
                        $path_to_node = url("node/".$pathArray[1]);
                        $img = '<img src="'.$theme_path.'/images/default.png" alt="Default" />';                        
                        if (!empty($path_to_node)) {
                            $menuChildArray = explode('/', $path_to_node);
                            if (!empty($menuChildArray[2])) {
                                $menuParent = $menuChildArray[2];
                                    switch($menuParent) {
                                        case "one":
                                        $img = '<img src="'.$theme_path.'/images/one.png" alt="Pic tne!" />';
                                        break;

                                        case "two":
                                        default:
                                        $img = '<img src="'.$theme_path.'/images/two.png" alt="Pic two!" />';
                                        break;
                                    }

                            }
                        print $img;                         
                        }
                    }
                }

但我怎么能意识到这一点?为了尝试它,我做了以下事情:

我在Theme文件夹中添加了 template.php 并添加了:

function set2015_preprocess_page(&$variables) {
    $variables['set2015_pics'] = 'test';
}

在page.tpl.php中,我做了:

<?php
    print $set2015_pics;

但是什么都没有印刷......我在这里做错了什么?

谢谢!

2 个答案:

答案 0 :(得分:1)

假设set2015是你主题的名字,一切看起来都不错,所以用drush或config / development / performance清除缓存会让变量显示出来。如果set2015不是主题的名称,则将函数set2015_preprocess_page重命名为YOURTHEME_preprocess_page

答案 1 :(得分:0)

调试它。在第一个echo "I'm here";之上添加一些if,然后在第二个if之后添加{... 1},依此类推...以查看执行的内容和不执行的内容。尝试本地化问题。