2013-07-25 27 views
0

在joomla菜單項頁面中,我多次放置相同的模塊實例(我在模塊管理器中複製)。現在嚴格要求我的模塊的某些代碼必須是一次在page.Because我的模塊的每個實例一次又一次地注入相同的代碼。 如何避免它,這樣只有一些代碼會出現在頁面中,當我在同一頁中有多個模塊實例的我的模塊? 通過網絡搜索,我發現了一些不可靠的方法 -在同一頁面中顯示多個joomla模塊時顯示一次模塊代碼

1.Using session in module i track whether same module loading two or more times and restrict code injecting one time only 
2.using a constant like this way - 
if(!defined('MODULE_ALREADY_LOADED')){ 
//echo codes that you only want done once 
//this will set the constant and now the other modules won't load/echo the code 
define('MODULE_ALREADY_LOADED', true); 
} 

,但不知道第二個途徑是多少兼容與Joomla 2.5和3個的Joomla版本。如果有更好的無差錯的方式來做到這一點呢!儘快提供給我。

+0

是什麼讓你覺得這些不可靠? –

+0

就好像那個常數在全局工作...... – mks

+0

http://php.net/manual/en/language.constants.php「顧名思義,在腳本執行過程中,這個值不能改變。」他們非常全球化。你更大的擔心是定義另一個擴展試圖定義的常量。但是隻要讓你的名字具有描述性(即把模塊的名字放在常量中),你應該沒問題。 –

回答

0

在你的模塊代碼中,你可以使用addscript方法(它檢查重複的腳本),而不是直接寫js。因此,將您的腳本外化,然後在代碼中:

$document = JFactory::getDocument(); 
$document->addScript('your_script.js'); 
+0

我知道它,但我的代碼不僅包含腳本,而且還包含html代碼 – mks

+0

您可能需要通過在modules/mod_yourmodule/tmpl或templates/your_template/html/mod_yourmodule中添加somelayout.php文件來爲模塊添加一些替代佈局。重寫它 – scraaappy