Joomla 中的模块只调用一次
Module in Joomla only called once
我有一个调用模块的组件
< ?php
$modules = JModuleHelper::getModules('modulename');
foreach ($modules as $module) {
echo JModuleHelper::renderModule($module);
}
? >
这在 foreach 语句中被多次调用,但是我注意到,如果我在模块中放置一个 rand() 或 microtime() ,它似乎只执行一次然后复制到其他调用(比如缓存?)。这是为什么?我需要该模块内的唯一 ID。有没有办法覆盖它并为每个模块呈现强制不同的内容?
这可能取决于缓存或模块的实现。
在全局级别,您可以在全局配置中禁用缓存;或者您可以阻止在单个模块的配置中使用缓存。
您应该将缓存设置为 "conservative",而不是渐进式,因为后者确实会在单个页面上弄乱同一模块的副本。
最后,缓存是在模块代码中实现的,所以它最终发挥作用的前提是所有开发者都正确地实现了所有的缓存策略;这对大多数扩展都是正确的,但不是全部。
我有一个调用模块的组件
< ?php
$modules = JModuleHelper::getModules('modulename');
foreach ($modules as $module) {
echo JModuleHelper::renderModule($module);
}
? >
这在 foreach 语句中被多次调用,但是我注意到,如果我在模块中放置一个 rand() 或 microtime() ,它似乎只执行一次然后复制到其他调用(比如缓存?)。这是为什么?我需要该模块内的唯一 ID。有没有办法覆盖它并为每个模块呈现强制不同的内容?
这可能取决于缓存或模块的实现。
在全局级别,您可以在全局配置中禁用缓存;或者您可以阻止在单个模块的配置中使用缓存。
您应该将缓存设置为 "conservative",而不是渐进式,因为后者确实会在单个页面上弄乱同一模块的副本。
最后,缓存是在模块代码中实现的,所以它最终发挥作用的前提是所有开发者都正确地实现了所有的缓存策略;这对大多数扩展都是正确的,但不是全部。