Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
扩展Joomla 2.5横幅组件_Joomla - Fatal编程技术网

扩展Joomla 2.5横幅组件

扩展Joomla 2.5横幅组件,joomla,Joomla,我真的希望有人能帮助我 我需要能够服务的类别,这是依赖于会话变量横幅-但找不到一个组件,这样做。因此,我想扩展Joomla Banner组件,以便根据包含类别路径的会话变量选择横幅 正确存储了正确的会话变量 为此,我在banner模块.xml中添加了一个选项,以允许会话变量和会话变量的名称。这与其他模块参数一起正确存储在模块表的params字段中 然后我开始了新的工作 组件>横幅>com_横幅>模型>banner.php 通过在getListQuery中添加两行代码,将SQL组合在一起。它们是:

我真的希望有人能帮助我

我需要能够服务的类别,这是依赖于会话变量横幅-但找不到一个组件,这样做。因此,我想扩展Joomla Banner组件,以便根据包含类别路径的会话变量选择横幅

正确存储了正确的会话变量

为此,我在banner模块
.xml
中添加了一个选项,以允许会话变量和会话变量的名称。这与其他模块参数一起正确存储在模块表的
params
字段中

然后我开始了新的工作

组件>横幅>com_横幅>模型>banner.php

通过在
getListQuery
中添加两行代码,将
SQL
组合在一起。它们是:

$sess_vars  = $this->getState('filter.sess_vars');
$sess_vars_name = $this->getState('filter.sess_vars_name');
但这两个变量都不包含任何内容,即使组件已有的变量可以很好地检索。毫无疑问,我也需要在其他地方做些改变,但就是不知道该怎么做

任何帮助都将不胜感激

  • 首先要做的是不要攻击核心文件,攻击核心会阻止您使用内置的更新功能来应用Joomla发布的常规错误修复和安全补丁!(例如)

  • 而是复制并修改它们,这样它就被称为类似于
    com\u mybanner
    的东西。除了文件夹名称和入口点文件(即
    banners.php
    变成
    mybanners.php
    ),您还需要将组件
    banners.xml
    更新为
    mybanners.php


    (您需要复制和修改前端
    /components/com_banner/
    /administrator/components/mybanner.php

  • 由于横幅的工作方式(即在模块中显示横幅)您还需要复制和修改
    /modules/mod_banners/
    /modules/mod_banners/mod_banners.php
    /modules/mod_banners/mod_banners.xml
    。在每个位置将
    mod_banners
    更改为
    mod mybanners

  • 在Joomla!组件中,
    状态
    通常在实例化JModel时填充,然而,在这种情况下,组件实际上是关于管理横幅和录制点击。显示由
    mod_banner
    处理。因此,您需要向
    mod_mybanner.php
    添加一些代码,以使用您想要的会话变量通常,当查询模型状态时,您将通过收集变量并将其添加到对象的状态,例如

  • 受保护的函数populateState()
    {
    $jApp=JFactory::getApplication('site');
    //从请求加载状态。
    $pk=$jApp->input->get('id',0,'INT');
    $this->setState('myItem.id',$pk);
    $offset=$jApp->input->get('limitstart',0,'INT');
    $this->setState('list.offset',$offset);
    //加载参数。
    $params=$app->getParams();
    $this->setState('params',$params);
    //获取用户权限
    $user=JFactory::getUser();
    如果(!$user->authorize('core.edit.state','com\u mycomponent')和(!$user->authorize('core.edit','com\u mycomponent'))
    {
    $this->setState('filter.published',1);
    $this->setState('filter.archived',2);
    }
    }
    
    当使用
    getState
    方法读取状态时,将调用
    populateState()
    方法

    这意味着您必须更改
    /components/com_banner/models/banner.php
    的副本,以将变量捕获到与上面示例类似的对象状态

    从这里开始,所有的代码都是你自己的

    您可以在上的中找到所有这些信息

  • 首先要做的是不要攻击核心文件,攻击核心会阻止您使用内置的更新功能来应用Joomla!发布的常规错误修复和安全补丁(例如

  • 而是复制并修改它们,这样它就被称为其他东西,比如
    com\u mybanners
    。除了文件夹名称和入口点文件(即
    banners.php
    变成
    mybanners.php
    ),您还需要将组件
    banners.xml
    更新为
    mybanners.php

    (您需要复制和修改前端
    /components/com_banner/
    /administrator/components/mybanner.php

  • 由于横幅的工作方式(即在模块中显示横幅)您还需要复制和修改
    /modules/mod_banners/
    /modules/mod_banners/mod_banners.php
    /modules/mod_banners/mod_banners.xml
    。在每个位置将
    mod_banners
    更改为
    mod mybanners

  • 在Joomla!组件中,
    状态
    通常在实例化JModel时填充,然而,在这种情况下,组件实际上是关于管理横幅和录制点击。显示由
    mod_banner
    处理。因此,您需要向
    mod_mybanner.php
    添加一些代码,以使用您想要的会话变量通常,当查询模型状态时,您将通过收集变量并将其添加到对象的状态,例如

  • 受保护的函数populateState()
    {
    $jApp=JFactory::getApplication('site');
    //从请求加载状态。
    $pk=$jApp->input->get('id',0,'INT');
    $this->setState('myItem.id',$pk);
    $offset=$jApp->input->get('limitstart',0,'INT');
    $this->setState('list.offset',$offset);
    //加载参数。
    $params=$app->getParams();
    $this->setState('params',$params);
    //获取用户权限
    $user=JFactory::getUser();
    如果(!$user->autho