【问题标题】:Joomla 2.5 - article layout according to category layoutJoomla 2.5 - 根据类别布局的文章布局
【发布时间】:2013-02-11 02:15:17
【问题描述】:

我想根据文章类别的自定义布局为文章使用自定义布局。

  • 体育类布局-体育文章布局
  • 科学类布局-科学类布局

感谢您的回复。

更新:
我对如何处理这个问题有一个想法,因为下面的答案给了我一些提示。我需要能够在文章项目页面上获取类别布局。我知道这很棘手,但 Joomla 拥有一切可以做的事情,那么现在最好的事情是什么?

【问题讨论】:

    标签: layout joomla overriding categories article


    【解决方案1】:

    嗯,我找到了更容易和无缝的解决方案来完成这种技巧。一旦你覆盖了类别布局,你应该在你的模板文件夹中放置类似“sports.xml”的东西,否则它不会与你的菜单项一起工作(因为 joomla blog.xml 有关于布局的隐藏字段,你应该覆盖它来制作对的)。在此 sports.xml 中,您可以为文章布局添加另一个字段 - 例如

    <field
          name="article_layout" type="componentlayout"
          label="JGLOBAL_FIELD_LAYOUT_LABEL"
          description="JGLOBAL_FIELD_LAYOUT_DESC"
          menuitems="true"
          extension="com_content"
          view="article"
          />
    

    或者只是你想要的布局的隐藏字段。它会起作用的。

    【讨论】:

    • 你能详细说明这个答案吗?我有两种不同的文章布局。我的 /html/com_content/article 文件夹中有两个 XML。但是,将您的代码添加到我的 blog.xml(在我的类别覆盖文件夹中)。但是“选择布局”中出现的下拉菜单仅显示默认值。
    • 您的问题 - joomla componentlayout 字段仅找到没有相应 xml 的布局,因为具有相应 xml 的布局是 joomla 的菜单项 - 不是布局(嗯,我不知道为什么,但他们在字段声明 cmets 中有这样的解释)。因此,在您的情况下,我建议创建另一个类别 xml,您可以在其中拥有 article_layout 隐藏字段。那应该可以。
    【解决方案2】:

    首先,您需要进行模板覆盖。这很容易。可以在此处查看向您展示如何执行此操作的文档:

    http://docs.joomla.org/How_to_override_the_output_from_the_Joomla!_core

    然后,您需要根据文章所属的类别 ID 在覆盖中使用 if 语句。可以这样实现:

    $catid = JRequest::getInt('catid');
    
    if($catid == 1){
        //layout for article belonging to a category with an ID of 1 goes here
    }
    elseif($catid == 2){
        //layout for article belonging to a category with an ID of 2 goes here
    }
    else {
        //standard layout goes here
    }
    

    希望这会有所帮助。

    【讨论】:

    • 也感谢您的意见,我认为这是一个更好的方法。但是,我的想法是将类别布局与他们的文章布局连接起来,一种方法是利用页面类功能,如果我在这里结合您的代码看起来更有希望。 EG:如果分类页面有“博客”类,文章应该使用布局博客。你的方式太死板,需要更具体、更灵活。再次感谢。
    【解决方案3】:

    实现此目的的最佳方法是使用 K2 (http://getk2.org),因为您可以创建模板覆盖集(例如项目、类别等),然后在后端将它们分配给您的类别。

    您可以在此处找到分步指南:http://getk2.org/documentation/tutorials/174-templating-with-k2-and-the-concepts-of-sub-templates

    为了让转换更容易,他们还提供了一项功能,可将您的所有文章导入 K2。

    【讨论】:

    • 感谢您的意见。但是,我的工作是完全比 K2 做得更好,仅使用 com_content。我在 K2 系统上遇到了很多麻烦,升级/迁移/移植非常痛苦。
    【解决方案4】:

    这必须在 yourblog.xml 中的 name="article" 部分

        <fieldset name="article" label="COM_CONTENT_ATTRIBS_FIELDSET_LABEL">
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-09-28
      • 2013-05-20
      • 2017-12-31
      • 1970-01-01
      • 1970-01-01
      • 2013-01-20
      • 1970-01-01
      • 2013-09-19
      相关资源
      最近更新 更多