如何将这个Joomla模块呈现到另一个位置而不丢失它与文章的连接

如何将这个Joomla模块呈现到另一个位置而不丢失它与文章的连接,joomla,joomla-extensions,joomla3.0,Joomla,Joomla Extensions,Joomla3.0,这是来自Joomla的Dizi图像模块(plugin/content/images/images.php)的代码。这样做有效,它会在特定文章的末尾发布一个图像或图像库 但是,如果我想将图像/图像库发布到另一个位置(通过更改其在Joomla admin中的位置和下面代码中的getModules值),它将失去与文章的“连接”。它出现在网站上的每一篇文章上 是否可以使下面的代码能够将图像/图像库发布到另一个位置,而不丢失与特定文章的连接 /* * load front end images modu

这是来自Joomla的Dizi图像模块(plugin/content/images/images.php)的代码。这样做有效,它会在特定文章的末尾发布一个图像或图像库

但是,如果我想将图像/图像库发布到另一个位置(通过更改其在Joomla admin中的位置和下面代码中的getModules值),它将失去与文章的“连接”。它出现在网站上的每一篇文章上

是否可以使下面的代码能够将图像/图像库发布到另一个位置,而不丢失与特定文章的连接

/*
 * load front end images module
 */

public function onContentAfterDisplay( $context, &$row, &$params, $limitstart = null )
{
    $jinput = JFactory::getApplication()->input;
    $option = $jinput->get('option', '', '');
    $view = $jinput->get('view', '', '');

    if( $context == 'com_content.article' && ( $modules = JModuleHelper::getModules( 'images' ) ) )
    {
        return JModuleHelper::renderModule( $modules[ 0 ] );
    }

    return '';
}
谢谢

马格纳斯

我更改位置的模块的屏幕截图(Joomla Admin/Extensions/Module Manager/)

我使用的插件是“Dizi images gallery”-扩展


这显示了Dizi图像选项卡。将图像/图像库添加到您的文章中。

为什么不为其他位置创建模块的新实例?这样,该模块保持原样,新模块将在其他地方发布,而不会与现有代码冲突


也同意寄宿者,使用JInput

这三行代码将允许您根据需要加载和呈现任何现有模块

jimport( 'joomla.application.module.helper' );
$module = JModuleHelper::getModule('mod_myimagemodulename', 'Images Gallery');
echo JModuleHelper::renderModule($module, array('style' => 'xhtml'));
如果要从后端进行管理,则需要复制具有不同菜单位置分配的现有模块。听起来唯一的限制是源图像文件夹,所以模块不应该介意

**编辑**

要创建一个像“right”这样的新位置,您需要在templates index.php中添加一个新的jdoc元素,您需要在其中创建新位置:

<jdoc:include type="moduels" name="right" style="xhtml" />

而且一定要从JRequest迁移出去。

不要在Joomla 3.x中使用
JRequest
,因为它已被弃用。您需要使用
JFactory::getApplication()->input->get()
I将代码更新为JInput。我不是程序员,请告诉我是否正确。它不会为每个图像/图像库创建新模块。该插件对所有图像/图像库使用相同的模块。所以我只改变了Joomla管理员“模块管理器”(上图)中现有模块的位置,这是一个保留原始代码的好主意。如果是这样的话,解决方案可能需要一个If-else语句,这样图像库就不会同时出现在两个地方。我已经尝试过这个方法和一些类似的代码。它似乎失去了与文章的连接,这可能是($context=='com\u content.article')。该模块显示在所有页面上。我如何将它渲染到一个特定的位置(例如“右”)呢?是的,这个解决方案适用于定位。现在是最重要的问题。仅在添加到的文章上显示图像/图像库(请参见新屏幕截图)。这在原始代码中起作用,但它将其放在内容(onContentAfterDisplay)之后,执行此操作的代码可能是$context==“com_content.article”。当模块在某个位置渲染时,该代码不起作用。我曾尝试谷歌的解决方案,但没有运气。我可能没有正确的关键字。我不知道现在该用什么关键词。为这个永无止境的故事感到抱歉。。。
<position>right</position>
$modules = JModuleHelper::getModules( 'images', 'Images gallery' )