在我的 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;
但是什么都没有印刷......我在这里做错了什么?
谢谢!
答案 0 :(得分:1)
假设set2015是你主题的名字,一切看起来都不错,所以用drush或config / development / performance清除缓存会让变量显示出来。如果set2015不是主题的名称,则将函数set2015_preprocess_page重命名为YOURTHEME_preprocess_page
答案 1 :(得分:0)
调试它。在第一个echo "I'm here";
之上添加一些if
,然后在第二个if
之后添加{... 1},依此类推...以查看执行的内容和不执行的内容。尝试本地化问题。