Php 在同一页面中显示多个joomla模块时显示一次模块代码

Php 在同一页面中显示多个joomla模块时显示一次模块代码,php,session,joomla2.5,joomla3.0,joomla-module,Php,Session,Joomla2.5,Joomla3.0,Joomla Module,在joomla菜单项页面中,我多次放置了相同的模块实例(我在模块管理器中复制)。现在,我的模块的某些代码在页面中只能出现一次是一个严格的要求。因为我的模块的每个实例一次又一次地注入相同的代码。 当我在同一页面中有多个模块实例时,如何避免这样的情况,以便只有一些代码只在该页面中出现一次? 在网上搜索我发现了一些不可靠的方法- 1.Using session in module i track whether same module loading two or more times and res

在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和joomla 3版本有多兼容!。如果有更好的无错误方法,请尽快提供给我。

在您的模块代码中,您可以使用addscript方法(它检查重复的脚本),而不是直接编写js。因此,将脚本外部化,然后在代码中:

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

是什么让你认为这些是不可靠的?比如说,这个常数是否在全球范围内起作用。。。。“顾名思义,该值在脚本执行期间无法更改。”它们是非常全局的。您更关心的是定义另一个扩展试图定义的常量。但是,只要让你的名字具有描述性(即,将模块的名称放在常量中),你就可以了。谢谢你的回复,我将尝试使用它作为最佳选择。还有一个问题-它在当前页面还是在其他页面中是全局的?它在对服务器的调用中是全局的。我知道,但我的代码不仅包含脚本,还包含html代码。如果覆盖它,您可能需要通过在modules/mod_yourmodule/tmpl或templates/your_template/html/mod_yourmodule/中添加一些layout.php文件来为您的模块添加其他布局