1

这是我的问题...

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

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

谢谢大家

4

1 回答 1

1

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

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

tmpl=FILENAMEJoomla 提供了通过将键/值添加到 url 的查询字符串来调用活动模板的特定文件的功能。如果用户只想加载带有组件的模板,所有内置模板都有一个 component.php 文件。您可以查看以下链接以获取更多详细信息:向组件添加打印弹出功能

您可以执行类似的操作,仅显示您要加载的模块。您可以将 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"));

希望这可以帮助

于 2016-10-15T19:33:41.050 回答