如何加载joomla模块作为链接?

时间:2016-07-28 23:38:19

标签: joomla3.0 joomla-module loadmodule

这是我的问题......

我有一些图像和链接,我想在用户点击它们时加载不同的joomla模块。

表示每个超链接都可以加载另一个模块位置

感谢所有

1 个答案:

答案 0 :(得分:0)

如果您只想从网址调用模块的内容,以下答案将对您有所帮助。

如果您只是想在同一页面中显示/隐藏模块,您可以使用与我之前的答案类似的内容:Joomla 3 Show different modules on same position depending on toggler

Joomla提供了通过将tmpl=FILENAME键/值添加到url的查询字符串来调用活动模板的特定文件的功能。 如果用户只想使用组件加载模板,则所有内置模板都有一个component.php文件。您可以查看以下链接以获取更多详细信息:Adding print pop-up functionality to a component

您可以执行类似的操作,仅显示要加载的模块。 您可以将component.php复制到一个新文件(我使用了custom.php)并在<body> ... </body>部分添加了以下php代码。

<?php
    $jinput = JFactory::getApplication()->input;
    $selectedPosition = $jinput->getString("position", "");
    $selectedModule = $jinput->getString("module", "");
    $selectedModuleTitle = $jinput->getString("title");

    if($selectedPosition !== "") {
        $modules = JModuleHelper::getModules($selectedPosition);
        foreach ($modules as $module) {
            echo JModuleHelper::renderModule($module);
        }
    } elseif ($selectedModule !== "") {
        $module = JModuleHelper::getModule($selectedModule, $selectedModuleTitle);
        echo JModuleHelper::renderModule($module);
    }
?>

因此,使用与loadposition / loadmodule类似的方式,您可以使用以下方法调用新模板文件:

index.php?tmpl=custom&position=MODULE_POSITION

index.php?tmpl=custom&module=MODULE_TYPE

index.php?tmpl=custom&module=MODULE_TYPE&title=MODULE_TITLE

可选择如果要加载具有特定样式的模块,可以将其传递给renderModule方法的第二个参数,如:

echo JModuleHelper::renderModule($module, array("style" => "xhtml"));

希望这有帮助