两个不同的joomla模块,显示相同的信息

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了两个不同的joomla模块,显示相同的信息相关的知识,希望对你有一定的参考价值。

我有一个显示来自Joomla表的信息的模块。该模块具有用于配置它的表单字段。问题是:当我使用适当的参数创建此模块的实例并将该模块显示在一个位置时,一切正常。现在,我取消发布该模块。我用其他参数创建了模块的第二个实例(不同的名称),并在第二个位置显示它没有问题。现在,当我想在两个不同位置的同一页面中显示两个模块时,它们会显示第一个模块的数据。不考虑第二个的数据。

这是模块代码:

<?php
// Pas d'acces direct
defined('_JEXEC') or die;
// Inclure la fonction de recuperation des donnees
require_once dirname(__FILE__).'/helper.php';

// Recuperer les choix a partir du fichier XML
$module = JModuleHelper::getModule('mod_evenementdmmc');
$params =  new JRegistry($module->params);
$position = $params->get('position', 'g'); // Position du module
$special = $params->get('special', '50');  // Cas speciaux a traiter
$event = $params->get('choixEvent', '0');  // Choix de l'evenement a traiter

// Recuperer les donnees pour les evenements
$lstInfos = ModEvenementdmmcHelper::getInfos($event);

require JModuleHelper::getLayoutPath('mod_evenementdmmc');

助手代码:

<?php
/**
 * Classe Helper class pour le module Evenements du DMMC
 **/
class ModEvenementdmmcHelper
{
    /**
     * Recherche les donnees associees aux choix de l'utilisateur
     *
     * @params - Choix effectues
     *
     * @access public
     */    
    public static function getInfos($param) { 
        // Acces a la BD et recuperation des donnees
        $db = JFactory::getDbo();
        $query = $db->getQuery(true);

        $query 
            ->select(array('t.*', $db->quoteName('c1.nomclub', 'nomclub1'), $db->quoteName('c2.nomclub', 'nomclub2')))
            ->from($db->quoteName('#__trntournois', 't'))
            ->join('INNER', $db->quoteName('#__trnclubs', 'c1').' ON ('.$db->quoteName('c1.idclub').' = '.$db->quoteName('t.club1').')')
            ->join('INNER', $db->quoteName('#__trnclubs', 'c2').' ON ('.$db->quoteName('c2.idclub').' = '.$db->quoteName('t.club2').')')
            ->where($db->quoteName('t.idtrn')." = ".$db->quote($param));
        $db->setQuery($query);

        $results = $db->loadObject();

        return $results;
    }
}
答案

在params调用中,您从一个模块实例获取params数据,因此您在两个模块中显示相同的数据。两个模块之间的区别在于您为模块命名的命名。所以你需要用这种方式使用模块标题来调用params

jimport('joomla.application.module.helper');
$input  = JFactory::getApplication()->input;
$title  = $input->get('title', '', 'string');
$module = JModuleHelper::getModule('mod_evenementdmmc', $title);
$params = new JRegistry();
$params->loadString($module->params);
另一答案

在对Joomla版本进行了几次读数之后,我发现Joomla 3.8版本中模块参数的管理非常简单。创建模块时,模块提供了两个有用的变量。第一个是$ module,它返回模块的一般参数:

$module ( 
[id] => 153 
[title] => Event futur 
[module] => mod_evenementdmmc 
[position] => bottom-a 
[content] => .....
[showtitle] => 0 
[control] => .....
[params] => .....
...
)

第二个参数称为$ params,它返回用户在模块表单(XML文件)中输入的值。这是我案例的一个例子:

$params (
[position] => 'd' 
[special] =>  '0'
[choixEvent] => '2'
...
)

结果,模块代码已经简化。只需使用$ params变量来检索此模块的请求结果。这是代码:

<?php
// Pas d'acces direct
defined('_JEXEC') or die;
// Inclure la fonction de recuperation des donnees
require_once dirname(__FILE__).'/helper.php';

// Recuperer les parametres choisis par l'utilisateur
$position = $params->get('position', 'g'); // Position du module
$special = $params->get('special', '50');  // Cas speciaux a traiter
$event = $params->get('choixEvent', '0');  // Choix de l'evenement a traiter

// Recuperer les donnees pour les evenements
$lstInfos = ModEvenementdmmcHelper::getInfos($event);

require JModuleHelper::getLayoutPath('mod_evenementdmmc');

感谢答案的建议,它引导我找到解决方案。

以上是关于两个不同的joomla模块,显示相同的信息的主要内容,如果未能解决你的问题,请参考以下文章

将对象从组件发送到模块 - Joomla

Joomla 2.5 在模块中显示联系人

对注册用户隐藏的 Joomla 模块

如何在组件中显示 Joomla 模块?

如何使用 ViewPager 显示相同的片段,但每次加载不同的数据?

我可以在 Joomla 中向不同的用户显示不同的文章吗?