【问题标题】:Joomla! 2.5 hide module programmaticallyJoomla! 2.5 以编程方式隐藏模块
【发布时间】:2012-09-04 19:04:51
【问题描述】:

简短

我正在尝试隐藏或取消发布带有另一个组件的模块。 有人知道如何通过代码启用/禁用特定菜单项的模块吗?


场景:

我正在使用 T3 来构建我的模板。

我使用一个名为 Jreviews 的组件来列出事件,并且可以自定义视图。 它由 joomla 菜单项分配的组件。

我还将横幅组件分配到同一菜单项的顶部。

我只想要第一次加载页面时的横幅组件,而不是当用户在 Jreviews 组件中搜索时。 (搜索joomla后留在同一个url)

我可以在 Jreviews 组件中捕获搜索事件并按位置呈现模块。

<?php 
$position = 'user1';
$params     = array('style'=>'');
$document   = &JFactory::getDocument();
$renderer   = $document->loadRenderer('module');
$contents = '';
foreach (JModuleHelper::getModules($position) as $mod)  {   
    $contents .= $renderer->render($mod, $params);
}
echo $contents;
?>

但我得到了一个与组件中分配的副本相同的副本。

问题

仅当我在 Jreview 模板中通过代码加载模块横幅组件时,如何显示它?

非常感谢,

爱德华多

【问题讨论】:

  • 你能解释一下你想要做什么吗?也许还有其他方法。
  • 感谢 vdespa 我只是更改了问题以使其更清楚

标签: module components joomla2.5 banner


【解决方案1】:

我找到了添加以下代码的方法

<?php 
$position = 'show-by-code';
$params     = array('style'=>'');
$document   = &JFactory::getDocument();
$renderer   = $document->loadRenderer('module');
$contents = '';
foreach (JModuleHelper::getModules($position) as $mod)  {   
    $contents .= $renderer->render($mod, $params);
}
echo $contents;
?>

然后在模块管理中,我使用不属于我的模板的相同位置“按代码显示”。

【讨论】:

    【解决方案2】:

    如果可以,尝试在模块代码中也捕获事件,并在那里决定是否应该显示横幅。

    【讨论】:

    • 我可以做到这一点没问题,我现在的主要问题是我知道如何按位置呈现模块,但只有在发布并分配给页面时才能工作,所以我得到模块 2 次。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-16
    • 1970-01-01
    相关资源
    最近更新 更多