2013-02-22 90 views
1

我开发了Joomla 3.0的前端系统插件,用于替换HTML格式化对象的关键字。这在我的本地实验室环境中完美工作,但是当安装在托管站点(WHM/cPanel)时,会导致管理区域出现问题,并阻止管理员编辑文章。系统插件安装后无法编辑文章

当管理员点击文章编辑页面尝试加载时,似乎回到同一页面。我已经将此作为前端插件开发,所以我不应该影响管理区域。

的问题也防止管理员从创建任何新的东西(新闻,博客,内容,菜单项等)

由于这我的实验室内不会发生,我只能假设的问题是与一些服务器设置,这些设置我可能需要启用/禁用。我有这两个WHM的cPanel和Joomla完整的管理权限,以便可以更改曾经需要设置...

事情我观察:从

文章URL变化:

/administrator/index.php?option=com_content&view=article&layout=edit&id=7 

到:

/administrator/index.php?option=com_content&view=article&layout=edit&id=7 

当插件被启用。请注意,&号已更改为amp;。这让我认为这可能与UTF-8字符编码有关,它已经在MySQL中设置为utf8general_ci

我可能需要更改的配置上的任何指针都会被大量接收。

问题:如何防止发生这种情况(不删除我的基本插件)。

+1

它是如何防止它在管理员的操作?插件响应了哪些事件?正在编码的&符号与utf8无关,这与&符号以及所有正在编码的特殊字符进行验证。您可能想要显示一些代码以获得帮助。 – Elin 2013-03-02 14:31:15

+0

@Elin,我在调用该类之前添加了一个检查以确保IsAdmin()=== false;这阻止了插件破坏Joomla框架,但似乎很奇怪,这只发生在托管环境而不是本地。 – 2013-03-04 09:14:06

+0

这绝对是奇怪的,我想不出为什么会发生,除非你的PHP版本稍有不同? – Elin 2013-03-04 13:03:36

回答

0

如果您创建的系统插件仅适用于前端,您必须在当前页面为前端时检查插件。您可以使用此功能做到这一点:JFactory::getApplication()->isSite()JFactory::getApplication()->isAdmin()

用法示例(我假设你使用onAfterRender事件):

function onAfterRender() { 
    // Exit if current page is from Administration panel 
    if(JFactory::getApplication()->isAdmin() ) return; 

    /* your plugin main code goes here*/ 
} 

它会阻止你的插件从修改管理面板输出。如果你已经完成了它,并且确实检查了它,那么你的问题的原因就不是那个插件。