Joomla 3.9 - 当我发布两次由我开发的自定义模块时主页消失了
Joomla 3.9 - Home Page Disappeared When I published twice a custom Module Developed by me
我开发了一个 joomla 模块,它运行良好。当它发布了一次但当我在同一页面上再次发布时,主页消失了,我得到了 500 错误,如果我试图取消发布一个模块,两个模块都会取消发布。
如何解决该问题。作为一个猜测,我认为我应该为每个模块创建一个动态 ID。但我不知道如何在 joomla 中做到这一点。
这段代码有问题。
function group_by_key($array) {
$result = array();
foreach ($array as $sub) {
foreach ($sub as $k => $v) {
$result[$k][] = $v;
}
}
return $result;
}
$features_list = array(
$features_list1 = group_by_key($features[0]),
$features_list2 = group_by_key($features[1]),
$features_list3 = group_by_key($features[2]),
$features_list4 = group_by_key($features[3]),
);
因为我低于错误。
Fatal error: Cannot redeclare group_by_key() (previously declared in E:\xampp\htdocs\joomla\do\modules\mod_xp_comparison\tmpl\default.php:31) in E:\xampp\htdocs\joomla\do\modules\mod_xp_comparison\tmpl\default.php on line 40
你应该这样试试:
if (!function_exists('group_by_key')) {
function group_by_key($array) {
$result = array();
foreach ($array as $sub) {
foreach ($sub as $k => $v) {
$result[$k][] = $v;
}
}
return $result;
}
}
$features_list = array(
$features_list1 = group_by_key($features[0]),
$features_list2 = group_by_key($features[1]),
$features_list3 = group_by_key($features[2]),
$features_list4 = group_by_key($features[3]),
);
上面的原因是你不能两次包含(或声明)同一个函数。因此,如果它已经在您的 default.php
的全局范围内定义,那么它只会引起冲突。因此,如果您不确定,则必须在 if (!function_exists('any_function_name')) { ...// function ... }
条件语句中使用该函数。
如果您想遵循标准的 Joomla 实践,而不是在布局中放置自定义功能,请创建一个助手 class (helper.php
):
defined('_JEXEC') or die;
class ModXpComparisonHelper
{
public static function group_by_key($array)
{
$result = array();
foreach ($array as $sub)
{
foreach ($sub as $k => $v)
{
$result[$k][] = $v;
}
}
return $result;
}
}
在主模块文件中包含助手 (mod_xp_comparison.php
):
JLoader::register('ModXpComparisonHelper', __DIR__ . '/helper.php');
然后在需要的时候调用函数:
$features_list = array(
$features_list1 = ModXpComparisonHelper::group_by_key($features[0]),
$features_list2 = ModXpComparisonHelper::group_by_key($features[1]),
$features_list3 = ModXpComparisonHelper::group_by_key($features[2]),
$features_list4 = ModXpComparisonHelper::group_by_key($features[3]),
);
我开发了一个 joomla 模块,它运行良好。当它发布了一次但当我在同一页面上再次发布时,主页消失了,我得到了 500 错误,如果我试图取消发布一个模块,两个模块都会取消发布。
如何解决该问题。作为一个猜测,我认为我应该为每个模块创建一个动态 ID。但我不知道如何在 joomla 中做到这一点。
这段代码有问题。
function group_by_key($array) {
$result = array();
foreach ($array as $sub) {
foreach ($sub as $k => $v) {
$result[$k][] = $v;
}
}
return $result;
}
$features_list = array(
$features_list1 = group_by_key($features[0]),
$features_list2 = group_by_key($features[1]),
$features_list3 = group_by_key($features[2]),
$features_list4 = group_by_key($features[3]),
);
因为我低于错误。
Fatal error: Cannot redeclare group_by_key() (previously declared in E:\xampp\htdocs\joomla\do\modules\mod_xp_comparison\tmpl\default.php:31) in E:\xampp\htdocs\joomla\do\modules\mod_xp_comparison\tmpl\default.php on line 40
你应该这样试试:
if (!function_exists('group_by_key')) {
function group_by_key($array) {
$result = array();
foreach ($array as $sub) {
foreach ($sub as $k => $v) {
$result[$k][] = $v;
}
}
return $result;
}
}
$features_list = array(
$features_list1 = group_by_key($features[0]),
$features_list2 = group_by_key($features[1]),
$features_list3 = group_by_key($features[2]),
$features_list4 = group_by_key($features[3]),
);
上面的原因是你不能两次包含(或声明)同一个函数。因此,如果它已经在您的 default.php
的全局范围内定义,那么它只会引起冲突。因此,如果您不确定,则必须在 if (!function_exists('any_function_name')) { ...// function ... }
条件语句中使用该函数。
如果您想遵循标准的 Joomla 实践,而不是在布局中放置自定义功能,请创建一个助手 class (helper.php
):
defined('_JEXEC') or die;
class ModXpComparisonHelper
{
public static function group_by_key($array)
{
$result = array();
foreach ($array as $sub)
{
foreach ($sub as $k => $v)
{
$result[$k][] = $v;
}
}
return $result;
}
}
在主模块文件中包含助手 (mod_xp_comparison.php
):
JLoader::register('ModXpComparisonHelper', __DIR__ . '/helper.php');
然后在需要的时候调用函数:
$features_list = array(
$features_list1 = ModXpComparisonHelper::group_by_key($features[0]),
$features_list2 = ModXpComparisonHelper::group_by_key($features[1]),
$features_list3 = ModXpComparisonHelper::group_by_key($features[2]),
$features_list4 = ModXpComparisonHelper::group_by_key($features[3]),
);