2013-02-22 125 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*/ 
} 

它會阻止你的插件從修改管理面板輸出。如果你已經完成了它,並且確實檢查了它,那麼你的問題的原因就不是那個插件。