2011-03-16 32 views
1

现在,如果我想重写Book模块生成的$ block-> content ...我如何覆盖它并自定义标题列表?谢谢。

回答

5

可以使用preprocess_block功能

function phptemplate_preprocess_block(&$vars) { 
    if (isset($vars['block'])) { 
     print_r($vars); 
    } 
    } 

,挖掘到这些结果。

关于内容,这是一个模块生成的块,我希望$content是使用theme()函数的渲染器,所以你只需要改变它。

+0

通过书签模块产生的块。我应该怎么做?谢谢 – runeveryday 2011-03-16 02:13:24

+0

我建议使用Devel模块并使用它提供的dpm()函数来更容易地读取调试输出。 – 2011-03-16 04:30:10

2

$ vars参数将包含有关以块为主题的所有信息。在你的情况下,你希望模块是“书”。

function phptemplate_preprocess_block(&$vars) {  
    if (isset($vars['block'])) { 
     if($vars['block']->module == 'book') { 
     $vars['block']->content = "My new content"; 
     } 
    } 
    } 
+0

好一个PPC代码,我知道phptemplate_preprocess_node,但phptemplate_preprocess_block看起来很有趣。 drupal拥有预处理函数中的所有实体吗? – 2011-03-16 19:26:01

+0

它们只适用于作为模板实现的主题钩子(纯主题功能不会获得预处理器)。看到这个http://stackoverflow.com/questions/2383865/how-do-i-use-theme-preprocessor-functions-for-my-own-templates – 2011-03-17 04:42:23

+0

PPC编码器,对不起,我出你代码我的主题是template.php.但它不能工作。 – runeveryday 2011-03-17 04:56:40

2

可以使用preprocess_block功能

function yourthemename_preprocess_block(&$vars) 
{ 
    if(isset($vars['block'])) 
    { 
      //i have override a footer_block 
      if($vars['block']->region == 'footer_block') 
      { 
       $vars['content] = "Please Enter Some data"; 
      } 
    } 
}