- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我是 Drupal 开发新手,正在尝试将现有区域变量添加到我的模块的预处理器函数中。
基本上,我为我的站点创建了一个新区域(这是我主题的 .info 文件中的定义):
regions[feeds] = Feeds
从 Administer->Blocks,我已将我想要的 block 添加到新的“Feeds”区域。
然后,从另一个模块“高级首页”模块,我试图将一些 PHP 添加到该模块内的“首页”。 Advanced Front Page 模块只允许站点有一个登陆页面,而不是立即查看其他站点内容的列表等。我已经为内容区域启用了 PHP,然后添加了以下内容:
<div>
<?php print $feeds; ?>
</div>
它不打印“Feeds”区域,我相信这是因为无法从 page.tpl.php 文件外部访问该区域变量。环顾四周后,我发现了这些链接:
从那里,我尝试为模块“Advanced Front Page”添加预处理器函数,该模块的模块名称为“front_page”(或者可能只是“front”,我不是 100% 确定)。这是我的预处理器函数,我试图将其添加到我的 template.php 文件和/modules/front/front_page.module 文件(请注意,不是同时):
function front_preprocess(&$vars)
{
$vars['feeds'] = theme('blocks', 'feeds');
}
无论我将此文件放在哪里(template.php 或 front_page.module),它似乎都没有执行任何操作。知道我可能哪里出错了吗?
最佳答案
您的问题有几点需要说明:
*_preprocess
函数只能用于操作/注入(inject)模板或主题函数的变量,例如page.tpl.php, node.tpl.php, theme_links()
等。由于 front_page 模块不使用主题函数或(特殊)模板来呈现其输出,因此您不能通过 *_preprocess
在那里创建 $feed 变量。功能。*_preprocess
功能,命名是至关重要的。您需要使用确切的模块名称或主题名称作为函数名称的前缀,具体取决于您声明它的位置。所以在你的例子中,如果你想给模块添加一个预处理函数,你会在它前面加上 'front_page_'
前缀, 如果你把它添加到你的主题 template.php 中,你会添加 'yourThemeName_'
.您可以通过直接从首页内容区域中的代码创建 block 来实现您想要的。您可以调用:
而不是尝试输出(不可用的)$feed 变量主题(' block ','提要')
这将导致 Drupal 返回给定区域的主题 block (在本例中为“提要”)。请注意,这仍然不是一个好的方法,因为即使您不在 page.tpl.php 中使用该区域,它仍然会为您网站发出的每个页面请求创建!
<所以我会接受 googletorps 的建议,只有在它还有其他用途时才添加新区域。如果我只想向首页添加一些 block ,我不会创建新区域,而是将 block 配置为显示在内容区域中,并简单地将它们限制为仅显示 <front>
。在他们的可见性设置中。
关于php - Drupal *_preprocess 模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1354475/
我是 Drupal 开发新手,正在尝试将现有区域变量添加到我的模块的预处理器函数中。 基本上,我为我的站点创建了一个新区域(这是我主题的 .info 文件中的定义): regions[feeds] =
我正在尝试运行 https://www.tensorflow.org/probability/examples/Probabilistic_Layers_VAE 中找到的代码. 我使用的是 Pytho
我是一名优秀的程序员,十分优秀!