Drupal 6模板 - 更好地建议在预处理中更改图像路径?

时间:2014-02-05 13:41:57

标签: image templates drupal drupal-6 preprocessor

我必须在Drupal 6 project之一更改模板。

在每个“页面”节点类型上存储CCK字段中的图像。我已经制作了新的设计模板来通过CSS改变设计。但现在客户的需求是仅在我的新设计模板中更改名为“field_obr”(每个节点一个)的CCK字段中的图像。他可以切换主题和图像将与主题相对应(当前设计=来自CCK的原始图像,新设计=来自原始CCK场路径的改变路径的图像)。图像名称可以相同,只更改目录。

原始图像存储在以下文件夹中:

sites/default/files/image1.jpg
sites/default/files/image2.jpg
...

我想在新主题中将图片的路径更改为:

sites/default/files/new_img/image1.jpg
sites/default/files/new_img/image2.jpg
...

=在图像之前的路径中添加“/ new_img”文件夹。 (或者以后我的模板文件的路径 - 我知道怎么做,但我在这里寻找原则。)

模板将图像输出为:

 <img  class="imagefield imagefield-field_obr" width="229" height="346" alt="" src="/sites/default/files/radek_home_0.jpg?1354577633" /> 

我喜欢这个解决方案:

第一个解决方案 - 通过preg_replace()

更改$ content输出

在“node-page.tpl.php”中查看$ content throug preg_replace()函数,找到路径并根据需要更改/添加字符串。 - 这是可行的,但我觉得这不是Drupal-flow的最佳解决方案。

第二个解决方案 - 使用hook_page_alter()或hook_page_build()函数

我知道可以通过使用hook_page_alter()和hook_page_build()函数来改变变量的内容。

我在phptemplate_preprocess_page(&amp; $ vars)函数之前将这些函数放到我的“template.php”中,似乎它们什么都不做:

function hook_page_build(&$page) {
//    print_r($page);
    $page['node']->field_obr['0']['filepath'] = "sites/default/files/new_img/radek_home_0.jpg";
    echo "Test function hook_page_build() has run";
}

我在文档中发现,这些函数适用于Drupal 7+: - (

问题: 谁能解释一下解决一开始描述的情况的最佳解决方案?如何通过profi“Drupal方式”实现它? 谢谢。 弗兰蒂谢克

1 个答案:

答案 0 :(得分:1)

我做了一些研究,Drupal 6找到了针对上述问题的单一简易工作解决方案。它是模板page.tpl.php中提到的PHP preg_replace()函数:

print preg_replace('#/sites/default/files/#', '/sites/default/files/_new/', $content);
相关问题