it-swarm-eu.dev

Impossibile accedere al metodo di caricamento jmodulehelper nel file di supporto del modulo

Sto usando com_ajax in joomla 2.5 - https://github.com/Joomla-Ajax-Interface/component

Come ho molte istanze (moduli duplicati) dello stesso modulo da cui chiamo al componente com_ajax di jQuery ajax. Quindi com_ajax chiama il file helper.php del mio modulo per ottenere i dati per la chiamata ajax come sappiamo. Il problema è che voglio accedere ai parametri di un'altra istanza del modulo nel file helper.php che non è possibile con la chiamata predefinita $module = JModuleHelper::getModule('mod_name_here'); quindi stavo cercando di ottenere questo risultato passando il modulo id all'helper File .php dalla chiamata ajax del modulo jQuery -

jimport('joomla.application.module.helper');
$input  = JFactory::getApplication()->input;
$mod_id = $input->get('module_id'); //module_id passed by ajax call             
$module = null; 
$modules = JModuleHelper::_load(); 
$total = count($modules); $name="mod_name_here";

for ($i = 0; $i < $total; $i++)
{
    // Match the name of the module
    if (($modules[$i]->name == $name || $modules[$i]->module == $name)&&($modules[$i]->id==$mod_id))
    {
        $module = $modules[$i];
        break; // Found it          
    }
}               
$params1 = new JRegistry();
$params1->loadString($module->params);

quindi in $params1 Ricevo le impostazioni dell'istanza del modulo desiderata. Ma il debugger si blocca sulla riga $modules = JModuleHelper::_load(); non so perché, ma quando inserisco questi stessi codici in un file php principale del modulo per test, le cose funzionano. Quindi perché non va oltre dopo quella linea? Qualche alternativa?

3
dev-m

Non sono sicuro di aver capito il tuo problema, perché non hai presentato alcun messaggio di errore o qualcosa del genere. Il debugger dovrebbe portarti anche all'interno di JModuleHelper::load(). La mia ipotesi è che non si fornisce ItemId che viene utilizzato da questa funzione, ma questa è una supposizione.

Si noti che JModuleHelper :: getModule () ha due parametri:

  • $ name
  • $ titolo

Dovresti essere in grado di restringere la ricerca fornendo anche il titolo (in qualche modo).

Spero che sia di aiuto.

1
Valentin Despa

Non è necessario utilizzare JModuleHelper per recuperare i parametri del modulo nella classe helper.

Ogni istanza del modulo viene creata correttamente e una variabile di contesto $ params viene assegnata per l'utilizzo dei parametri. Ad esempio, mod_example ha $ params inizializzato, puoi semplicemente chiamare la tua classe helper inviando l'intero $ params o variabili specifiche.

Ad esempio mod_men funziona in questo modo, inviando il parametro layout alla classe helper modMenuHelper:

// no direct access
defined('_JEXEC') or die;

// Include the syndicate functions only once
require_once dirname(__FILE__).'/helper.php';

$list   = modMenuHelper::getList($params);
$app    = JFactory::getApplication();
$menu   = $app->getMenu();
$active = $menu->getActive();
$active_id = isset($active) ? $active->id : $menu->getDefault()->id;
$path   = isset($active) ? $active->tree : array();
$showAll    = $params->get('showAllChildren');
$class_sfx  = htmlspecialchars($params->get('class_sfx'));

if(count($list)) {
    require JModuleHelper::getLayoutPath('mod_menu', $params->get('layout', 'default'));
}
1
Anibal