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

问题描述 投票:0回答:2

我有一个显示来自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;
    }
}
php joomla module
2个回答
0
投票

在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);

0
投票

在对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');

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

© www.soinside.com 2019 - 2024. All rights reserved.