如何解决如何以编程方式禁用Drupal 7页面上的区域?
| 我正在一个模块上工作,该模块的页面必须没有区域或多余的内容。一种“请稍候”页面。 如何将所有多余的内容(区域菜单等)划掉?我认为Panels具有此功能,但我找不到它使用的代码段。 另一方面,模块是否可以指定特殊的自定义页面?例如维护页面?解决方法
您可以为要隐藏区域的页面专门创建一个额外的page.tpl.php。命名原理类似于节点的命名原理。
假设您有一个网址,网址为example.com/content/contact。名为page--content--contact.tpl.php的模板将为该页面提供服务,并且以该url开头的任何页面(即example.com/content/contact/staff页面)也将使用该模板(我认为)。
检查body元素的类,以获取可为模板命名的线索,大多数主题都会打印出来。在上面的示例中,body元素将包括class page-content-contact。
,page.tpl.php方法不灵活。它基于表示逻辑。您应该将hook_page_alter()用于业务逻辑解决方案。例如:
function yourmodulename_page_alter(&$page) {
if (current_path() == \'node/add/yourcontenttype\') {
unset($page[\'sidebar_first\']);
}
}
还要看看非常强大的上下文模块。
,我唯一能想到的就是在您的page.tpl.php文件中编写检查,以查看您是否在该“页面”上进行讨论,而不是打印出区域/菜单,或者使用其他模板。 http://drupal.org/node/223440
,如果要在渲染块之前执行此操作:
/**
* Implements hook_block_list_alter()
*
* Hides the right sidebar on some pages.
*/
function THEME_NAME_block_list_alter(&$blocks) {
// This condition could be more interesting.
if (current_path() !== \'node/add/yourcontenttype\') {
return;
}
// Go through all blocks,and hide those in the \'sidebar_second\' region.
foreach ($blocks as $i => $block) {
if (\'sidebar_second\' === $block->region) {
// Hide this block.
unset($blocks[$i]);
}
}
}
注意:有趣的是,无论您在主题中还是模块中使用此钩子,它似乎都可以工作。
(如果我错了,请纠正我)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。