【问题标题】:joomla 2.5 modify backend componentjoomla 2.5 修改后端组件
【发布时间】:2012-10-31 11:45:03
【问题描述】:

我想做下一件事:

我正在开发一个 Joomla 网站,该网站具有显示一些图像的背景。

我想要的是根据显示的网站部分显示不同的图像,例如:

首页: ../图像/img1.jpg ../images/img2.jpg

关于我们: ../图像/img3.jpg ../images/img4.jpg

我想在后端的“编辑菜单项”布局上使用某种覆盖来添加一些新字段,在这些字段中我选择我希望该部分显示的图片,然后将这些文件作为 HTML 输出到模板。

有没有办法做到这一点?

或者也许有更简单的方法。

【问题讨论】:

    标签: templates joomla overriding custom-backend


    【解决方案1】:

    这不是您应该使用 Joomla 编写代码的东西,因为有多种方法可以使用模板样式变体(在 2.5+ 中)或各种扩展来执行此操作。

    多年来,当我们需要一个简单的解决方案并且它适用于 1.5->2.5 时,我们一直使用“Menu Dependent Items”扩展。

    【讨论】:

    • 我正在使用 joomla 2.5,这看起来很完美,但我得到了这个错误严格标准:非静态方法 JSite::getMenu() 不应该被静态调用,假设 $this 来自 D:\ 中的不兼容上下文xampp\htdocs\{sitename}\modules\mod_menu_dep_items\mod_menu_dep_items_class.php 第 75 行严格标准:不应静态调用非静态方法 JApplication::getMenu(),假设 $this 来自 D:\xampp\htdocs 中的不兼容上下文\{sitename}\includes\application.php 在第 523 行
    • 严格标准:不应静态调用非静态方法 JApplication::getMenu(),假设 $this 来自 D:\xampp\htdocs\{sitename}\includes\application.php 中的不兼容上下文在第 523 行严格标准:只有变量应该通过引用在第 75 行的 D:\xampp\htdocs\{sitename}\modules\mod_menu_dep_items\mod_menu_dep_items_class.php 中分配
    • 另外,我想设置的不仅仅是一张图片
    • 严格的标准 警告 意味着您在 Joomla 中将错误级别设置为“开发”!或在您的php.ini 中 - 通常不是问题,除非您在非常严格的环境中运行,因为这只是一个警告。
    • 这是最有效的方法。至于您收到的错误,您可以禁用 ESTRICT 错误报告。更多信息见链接:stackoverflow.com/questions/1248952/…
    【解决方案2】:

    如果我理解你的问题

    <?php
    $menu = &JSite::getMenu();
    $menuItem = $menu->getActive();
    
    print_r($menuItem);
    ?>
    

    根据您所在的菜单,您可以输出 CSS。如果您有任何问题,请告诉我。

    【讨论】:

    • 不,因为我需要将 uotput 作为 标签,并且我需要一种方法来添加到后端的“编辑/新菜单项”中,以便选择将显示在该部分,就像您选择将显示的模块或元数据选项
    • 根据您获得的菜单,您可以回显 img 标签。但是您要求的是开发一个完成您的任务的组件。
    • 不是一个组件,我只需要在创建菜单项时显示的菜单上添加一个额外的字段。这个想法只是根据网站的当前部分输出某些图像的“src”
    • 得到了你想要的。然后您将扩展核心文件。让我看看
    【解决方案3】:

    我同意使用模板样式。

    复制您的模板并将背景图像的新参数添加到 template.xml。 然后添加代码以将图像插入到模板的 index.php 中。

    然后为您要使用的每张图片制作一个样式。

    为适当的菜单项指定适当的样式。

    【讨论】:

      【解决方案4】:

      这可能对你有帮助....

      首先你必须在administrator/components/com_menus/models/forms/item.xml中创建一个字段

      示例

      <field name="your_fieldname" type="media"
                      label="fieldname"
                      description="Give your field description" />
      

      administrator/components/com_menus/views/item/tmpl/edit.php中添加这一行

      <li><?php echo $this->form->getLabel('your_fieldname'); ?>
      <?php echo $this->form->getInput('your_fieldname'); ?></li>
      

      yourtableprefix_menu中再添加一个字段,字段名必须是你的字段名。

      已添加

      在文件includes/menu.php,函数load()

      在以下行中添加您的字段名

      $query->select('m.id, m.menutype, m.title, m.alias, m.path AS route, m.link, m.type, m.level, m.language,m.our_image');
      

      我已添加m.our_image,这样你可以添加你的字段名

      index.php 文件中

      $menu = &JSite::getMenu();
      $menuItem = $menu->getActive();
      print_r($menuItem); 
      echo $menuItem->your_fieldname; //for get the particular value
      

      【讨论】:

      • 我真的不会以这种方式编辑核心文件。除其他外,它们可能会在您更新时被覆盖。如果你真的想添加一个字段,你应该使用插件来完成。
      猜你喜欢
      • 2013-03-10
      • 2012-11-10
      • 2012-06-19
      • 2012-11-24
      • 2016-03-08
      • 2012-10-12
      • 2012-06-19
      • 2013-05-01
      • 2012-07-13
      相关资源
      最近更新 更多