Php Joomla 3.9-当我发布两次由我开发的自定义模块时,主页消失了

Php Joomla 3.9-当我发布两次由我开发的自定义模块时,主页消失了,php,joomla,joomla3.0,Php,Joomla,Joomla3.0,我开发了一个joomla模块,运行良好。当它被发布一次,但当我在同一页上再次发布时,主页消失了,我得到500个错误,如果我试图取消发布一个模块,两个模块都被取消发布 如何解决这个问题。我想我应该为每个模块创建一个动态id。但我不知道在乔姆拉该怎么做 这段代码正在制造问题 function group_by_key($array) { $result = array(); foreach ($array as $sub) { foreach ($sub as $k

我开发了一个joomla模块,运行良好。当它被发布一次,但当我在同一页上再次发布时,主页消失了,我得到500个错误,如果我试图取消发布一个模块,两个模块都被取消发布

如何解决这个问题。我想我应该为每个模块创建一个动态id。但我不知道在乔姆拉该怎么做

这段代码正在制造问题

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
中的全局范围中定义,那么它只会导致冲突。因此,如果您不确定,那么您必须在
中使用该函数(如果(!function\u exists('any\u function\u name')){…//function…}
条件语句。

您应该这样尝试:

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
中的全局范围中定义,那么它只会导致冲突。因此,如果您不确定,那么您必须在
中使用该函数(如果(!function\u exists('any\u function\u name')){…//function…}
条件语句。

如果您想遵循标准的Joomla实践,而不是在布局中放置自定义函数,请创建一个helper类(
helper.php
):

在主模块文件(
mod\u xp\u comparison.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实践,而不是在布局中放置自定义函数,请创建一个helper类(
helper.php
):

在主模块文件(
mod\u xp\u comparison.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]),
);

你的问题我不太清楚。你知道有堆栈交换吗?现在检查我解释了更多…个人而言,我希望你在JSE上发布,这样社区可以继续收到新的问题,这样你就可以得到专门观众的支持。你在这里有200个积分,所以当你启动你的JSE帐户时,你将以101个代表和特权开始。为什么你需要一个重复的自定义模块?基本上我想在同一页上发布这个模块两次,但这个group_by_密钥使重复这个模块成为问题。你的问题对我来说不是很清楚。你知道有堆栈交换吗?现在检查我解释了更多…个人而言,我希望你在JSE上发布,这样社区可以继续收到新的问题,这样你就可以得到专门观众的支持。你在这里有200个积分,所以当你启动你的JSE帐户时,你将以101个代表和特权开始。为什么你需要一个重复的自定义模块?基本上我想在同一页上发布这个模块两次,但是这个group_by_密钥使得重复这个模块成为问题。只有代码的答案是有帮助的,但代码加上解释更好,考虑添加一些文本来解释你改变了什么以及为什么它会起作用。@ Elin -谢谢你的笔记,我会简短地解释一下,只有一个侧面代码才有帮助,但是代码加上解释更好,考虑添加一些文本来解释你改变了什么以及为什么会这样。@ Elin -谢谢你的注意,我稍后会对此做一个简短的解释