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



我开发了一个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:xampphtdocsjoomladomodulesmod_xp_comparisontmpldefault.php:31) in E:xampphtdocsjoomladomodulesmod_xp_comparisontmpldefault.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实践,而不是在布局中放置自定义函数,创建一个帮助类(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]),
);

最新更新