以编程方式将块(视图)移动到不同的区域(Drupal 7)

时间:2017-10-11 11:37:17

标签: php drupal drupal-7 theming commerce-kickstart

我使用Drupal 7的Commerce Kickstart Distribution。我希望将搜索栏分配给首页上的不同区域,而不是我主题中的所有其他网站。我使用了此处显示的方法:http://saw.tl/drupal/programmatically-manage-drupal-blocks.html

function mytheme_hook_block_info_alter(&$blocks, $theme, $code_blocks) 
{
  if(drupal_is_front_page()) {
      $blocks['views]['-exp-display_products-page']['region'] = "branding";
   }
}

这是我的template.php中的功能。我知道搜索栏是使用views模块创建的,而不是"默认块"。

搜索栏的“阻止”菜单中显示的名称为Exposed form: display_products-page,我在本教程后选择的模块名称和机器名称http://drupalchamp.org/node/166

然而,它根本不起作用。我没有收到任何错误或警告,当我加载首页时,块只是保留在默认区域。

1 个答案:

答案 0 :(得分:0)

您可以使用上下文模块根据某些条件将块添加到不同的区域:

https://www.drupal.org/project/context

非常强大且易于使用的模块,所以我建议它。

如果您喜欢使用表单代码,您可以抓取块的内容并直接从模板打印,具体取决于检测到的页面。类似的东西:

$block = module_invoke('views', 'block_view', 'block_machine_name');
print render($block);

当然你会有条件地执行它......