如何仅在Joomla插件后台设置页面加载脚本与样式?
解决Joomla插件JS/CSS仅在后台设置页面加载的问题
嘿,这问题我熟!你现在的代码只判断了是后台页面,但后台有一大堆不同的管理页面,所以你的JS和CSS才会被加载到所有后台页面里。咱们把判断条件再精准点,只在你的插件设置页面加载这些资源就好啦~
修改后的完整代码
public function onBeforeCompileHead(){ $app = JFactory::getApplication(); // 先判断是否是前台,是的话直接返回 if ($app->isSite()) { return; } $input = $app->input; $option = $input->get('option'); $view = $input->get('view'); $layout = $input->get('layout'); $pluginElement = $input->get('element'); // 精准匹配你的插件设置页面:com_plugins组件的plugin视图,edit布局,且是你的插件 if ($option !== 'com_plugins' || $view !== 'plugin' || $layout !== 'edit' || $pluginElement !== 'plugin_name') { return; } $document = JFactory::getDocument(); $document->addScript(JUri::root() . 'plugins/system/plugin_name/js/jquery-ui.js'); $document->addScript(JUri::root() . 'plugins/system/plugin_name/js/custom.js'); $document->addStyleSheet(JUri::root() . 'plugins/system/plugin_name/css/style.css'); }
关键修改说明
- 新增了对后台页面参数的精准判断:
$option === 'com_plugins':确保当前是插件管理组件页面$view === 'plugin':确保当前是单个插件的视图$layout === 'edit':确保当前是插件的编辑(设置)页面$pluginElement === 'plugin_name':把plugin_name替换成你实际的插件名称,确保只加载你这个插件的资源
这样修改后,只有当用户进入你的插件的后台设置编辑页面时,这些JS和CSS才会被加载,其他后台页面(比如文章管理、菜单设置等)都不会加载多余的资源啦~
内容的提问来源于stack exchange,提问作者kyle
相关产品推荐
相关产品推荐

