PHP7.4环境下Joomla模板TransPro函数重声明错误求助
Joomla模板TransPro错误修复方案(PHP7.4环境)
环境信息
- PHP版本:7.4
- 涉及模板:TransPro
错误详情
错误页面:https://voltshost.com.br/aarontrans/
错误提示:
Fatal error: Cannot redeclare sp_button_group_addon() (previously declared in /home/storage/f/7e/46/voltshost2/public_html/aarontrans/templates/transpro/sppagebuilder/addons/button_group/site.php:15) in /home/storage/f/7e/46/voltshost2/public_html/aarontrans/templates/transpro/sppagebuilder/addons/button_group12/site.php on line 15
问题核心
PHP不允许同一作用域内重复定义同名函数,当前sp_button_group_addon()函数在button_group/site.php和button_group12/site.php两个文件中被重复声明,触发致命错误。
修复方案
方案1:删除冗余插件目录
检查button_group12目录是否为重复生成的冗余插件:
- 若
button_group目录已能正常提供按钮组功能,直接删除transpro/sppagebuilder/addons/button_group12整个目录即可解决冲突。
方案2:修改函数名避免冲突
如需保留button_group12的功能,修改该目录下site.php的函数与注册名:
- 打开
/transpro/sppagebuilder/addons/button_group12/site.php文件 - 将所有
sp_button_group_addon替换为唯一名称(例如sp_button_group12_addon) - 同步修改插件注册代码:
原代码:
修改为:AddonParser::addAddon('sp_button_group','sp_button_group_addon');AddonParser::addAddon('sp_button_group12','sp_button_group12_addon'); - 保存文件后刷新页面测试。
方案3:添加函数存在性检查(临时兼容)
若不想删除或重命名,可给函数添加存在性判断,避免重复声明:
修改button_group12/site.php中的函数定义:
原代码:
function sp_button_group_addon($atts, $content){ // 函数内容 }
修改为:
if (!function_exists('sp_button_group_addon')) { function sp_button_group_addon($atts, $content){ // 原函数内容保持不变 } }
注意:该方案可能导致
button_group12的插件功能无法正常触发(优先使用已存在的函数),仅作为临时兼容手段。
参考文件代码(button_group/site.php)
<?php /** * @package SP Page Builder * @author JoomShaper http://www.joomshaper.com * @copyright Copyright (c) 2010 - 2016 JoomShaper * @license http://www.gnu.org/licenses/gpl-2.0.html GNU/GPLv2 or later */ //no direct accees defined ('_JEXEC') or die ('restricted aceess'); AddonParser::addAddon('sp_button_group','sp_button_group_addon'); AddonParser::addAddon('sp_button_group_item','sp_button_group_item_addon'); $sppbButtonGroup_margin = ''; function sp_button_group_addon($atts, $content){ global $sppbButtonGroup_margin; extract(spAddonAtts(array( 'alignment' =>'', 'margin' =>'', 'class' =>'' ), $atts)); $sppbButtonGroup_margin = $margin; $output = '<div class="sppb-addon sppb-addon-button-group ' . $alignment . ' ' . $class . '">'; $output .= '<div class="sppb-addon-content" style="margin:-' . (int) $margin . 'px;">'; $output .= AddonParser::spDoAddon($content); $output .= '</div>'; $output .= '</div>'; $sppbButtonGroup_margin = ''; return $output; }
内容的提问来源于stack exchange,提问作者Benhur Augusto
相关产品推荐
相关产品推荐

