Joomla 2.5でcom_ajaxを使用しています- https://github.com/Joomla-Ajax-Interface/component
私はjQuery ajaxによってcom_ajaxコンポーネントを呼び出す場所から同じモジュールの多くのインスタンス(重複モジュール)を持っているので。私たちの知っているように、ajax呼び出しのデータを取得するために、com_ajaxが私のモジュールのhelper.phpファイルを呼び出します。問題は、デフォルトの呼び出し$module = JModuleHelper::getModule('mod_name_here');
では不可能であるhelper.phpファイル内の別のモジュールインスタンスのパラメーターにアクセスしたいので、モジュールid
をヘルパーに渡してこの方法を実現しようとしていましたモジュールのjQuery ajax呼び出しからの.phpファイル-
_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);
_
そのため、_$params1
_で目的のモジュールインスタンスの設定を取得しています。ただし、デバッガーが$modules = JModuleHelper::_load();
の行でハングします。これらの同じコードをモジュールのメインphpファイルに配置してテストすると、 、物事はうまくいきます。では、なぜその行の後にさらに進んでいないのですか?代替案はありますか?
エラーメッセージなどが表示されなかったため、問題を理解できたとは思いません。デバッガーもJModuleHelper::load()
の内部に移動します。私の推測では、この関数で使用されるItemIdは提供されていませんが、これは推測です。
JModuleHelper :: getModule() には2つのパラメーターがあることに注意してください。
タイトルも(どういうわけか)提供することで、検索を絞り込むことができるはずです。
お役に立てれば。
ヘルパークラスのモジュールパラメータを取得するためにJModuleHelperを使用する必要はありません。
すべてのモジュールインスタンスが適切に作成され、パラメーターの使用のためにコンテキスト変数$ paramsが割り当てられます。たとえば、mod_exampleは$ paramsを初期化しているため、ヘルパークラスを呼び出して$ params全体または特定の変数を送信できます。
たとえば、mod_menはこのように機能し、レイアウトパラメータをヘルパークラス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'));
}