2
這是我第一次嘗試創建一個Joomla插件,我需要一些幫助才能使其工作。該插件非常簡單,我想要捕獲HTTP_REFERER,檢查請求是否來自Google有機或付費結果,將數據傳遞給會話變量,然後將其與聯繫人表單中的值一起提交。 (我的表單中有一個隱藏的字段,它會獲得會話var值)。我使用RSForms創建我的表單,僅供參考。Joomla插件不被稱爲
在開始的時候,我硬編碼下面的代碼index.php文件在網站根目錄和它工作得很好。現在,我試圖製作一個合適的插件,但是當頁面加載時我無法啓動它。我試過所有的系統方法,但仍然無法運行。
這是我的代碼:
defined('_JEXEC') or die('Restricted access');
jimport('joomla.plugin.plugin');
class plgSystemRsformsGoogleReferer extends JPlugin
{
public function plgSystemRsformsGoogleReferer(&$subject, $config)
{
parent::__construct($subject, $config);
}
function onAfterRender()
{
$session = & JFactory::getSession();
if (!$session->get('referrer', $origref, 'extref')) //If does not exist
{
$origref = $_SERVER['HTTP_REFERER'];
$session->set('referrer', $origref, 'extref');
$q = search_engine_query_string($session->get('referrer', $origref, 'extref'));
if(stristr($origref, 'aclk')) { // if referer is a google adwords link as opposed to an organic link
$type = ', paid link';
} else {
$type = ', organic result';
}
$ginfo = $q.$type;
$session->set('referrer', $ginfo, 'extref');
}
function search_engine_query_string($url = false) {
if(!$url && !$url = isset($_SERVER['HTTP_REFERER']) ? $_SERVER['HTTP_REFERER'] : false) {
return '';
}
$parts_url = parse_url($url);
$query = isset($parts_url['query']) ? $parts_url['query'] : (isset($parts_url['fragment']) ? $parts_url['fragment'] : '');
if(!$query) {
return '';
}
parse_str($query, $parts_query);
return isset($parts_query['q']) ? $parts_query['q'] : (isset($parts_query['p']) ? $parts_query['p'] : '');
}
}
}
,這是我的插件安裝清單XML(安裝正常工作):
<?xml version="1.0" encoding="utf-8"?>
<install version="1.5" type="plugin" group="system" method="upgrade">
<name>RSForm Google Referer v1.1</name>
<author>Me</author>
<creationDate>July 2012</creationDate>
<copyright>(C) 2004-2012 www.mysite.com</copyright>
<license>Commercial</license>
<authorEmail>[email protected]</authorEmail>
<authorUrl>www.mysite.com</authorUrl>
<version>1.1</version>
<description><![CDATA[Track visitor's search terms and and attaches the information to the RSForm! Pro Forms emails when sent.]]></description>
<files>
<filename plugin="rsform_google_referer">rsform_google_referer.php</filename>
</files>
</install>
我覺得我很接近,但我不能讓它運行,任何建議將不勝感激。謝謝!
第一個猜測是,它是你的插件的內部名稱之間的不匹配 - 從插件=「」 parametever在文件 - >文件名的XML元素和類的名稱。 它也可能是它使用的'name'標籤,但你有空格和版本號。無法記住具體信息,但是您的類名 - 包括字母的大小寫必須與內部插件名稱(但是派生)相對應。 – 2013-02-05 23:58:50
@DeanMarshall謝謝Dean,真的救了我一天。我正在尋找一個解決方案,爲什麼舊的和不支持的joomla 1.5插件不渲染後渲染。原因是類插件沒有下劃線,如插件內部名稱。 – 2013-09-13 19:51:24