2013-02-07 87 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