2013-02-07 89 views
1

我真的希望有人能幫助我。擴展Joomla 2.5橫幅組件

我需要能夠服務橫幅在這依賴於會話變量類別 - 並不能找到這確實是一個組成部分。所以我想擴展Joomla Banner組件,以便根據包含類別路徑的會話變量選擇橫幅。

正確的會話變量被正確存儲。

爲了做到這一點,我添加了橫幅模塊.xml一個選項,允許會話變量和會話變量的名稱。這將正確存儲在params字段中的模塊表中以及其他模塊參數中。

然後,我開始對

部件>橫幅> com_banners>模型> banners.php

getListQuery加入兩行代碼,其中SQL被組裝。它們是:

$sess_vars = $this->getState('filter.sess_vars'); 
$sess_vars_name = $this->getState('filter.sess_vars_name'); 

但是這兩個變量都不包含任何東西,即使組件已經擁有的東西都可以很好地檢索。毫無疑問,我需要改變其他地方 - 但只是不知道該怎麼做。

任何幫助將不勝感激。

+0

您可以添加使用什麼代碼來存儲會話變量? –

回答

1
  1. 做的是沒本事的核心文件的第一件事,黑客核心阻止您使用內置的更新功能應用是Joomla發佈的常規錯誤修復和安全補丁! (例如recently released 2.5.9 version)。

  2. 而是使它們的副本,並修改它,這就是所謂的別的東西一樣com_mybanners。除了文件夾名稱和入口點文件(即banners.php變爲mybanners.php),您還需要將組件banners.xml更新爲mybanners.php

    您將需要複製和修改這兩個前端/components/com_banners//administrator/components/mybanners.php

  3. 由於道路橫幅的工作(即橫幅顯示模塊),您也將需要複製和修改/modules/mod_banners//modules/mod_banners/mod_banners.php/modules/mod_banners/mod_banners.xml。在各個位置將mod_banners更改爲mod_mybanners

  4. 在Joomla!當JModel被實例化時,組件state通常被填充,然而,在這種情況下,組件實際上是關於管理橫幅和記錄點擊,顯示由mod_banners來處理。因此,您需要將一些代碼添加到mod_mybanners.php以使用您想要處理的會話變量。

    通常,當查詢模型狀態時,您將通過JInput收集變量並將它們添加到對象的狀態,例如

protected function populateState() 
{ 
    $jApp = JFactory::getApplication('site'); 

    // Load state from the request. 
    $pk = $jApp->input->get('id',0,'INT'); 
    $this->setState('myItem.id', $pk); 

    $offset = $jApp->input->get('limitstart',0,'INT'); 
    $this->setState('list.offset', $offset); 

    // Load the parameters. 
    $params = $app->getParams(); 
    $this->setState('params', $params); 

    // Get the user permissions 
    $user  = JFactory::getUser(); 
    if ((!$user->authorise('core.edit.state', 'com_mycomponent')) && (!$user->authorise('core.edit', 'com_mycomponent'))) 
    { 
     $this->setState('filter.published', 1); 
     $this->setState('filter.archived', 2); 
    } 
} 

populateState()方法時的狀態由getState方法讀取被調用。

這意味着您將不得不更改您的副本/components/com_banners/models/banner.php以將您的變量捕獲到對象狀態,類似於上面的示例。

從那裏它是所有你自己的代碼。

你可以找到所有這些信息在Developing a Model-View-Controller tutorialJoomla Doc's site

+0

非常感謝 - 這很好:) –

+1

不客氣 - 這是一個好主意,如果它解決了你的問題,或者如果它有幫助,就將它標記爲「接受」是一個好主意(或者甚至兩者都是答案的優點) 。 – Craig