【发布时间】:2013-02-11 02:15:17
【问题描述】:
我想根据文章类别的自定义布局为文章使用自定义布局。
- 体育类布局-体育文章布局
- 科学类布局-科学类布局
感谢您的回复。
更新:
我对如何处理这个问题有一个想法,因为下面的答案给了我一些提示。我需要能够在文章项目页面上获取类别布局。我知道这很棘手,但 Joomla 拥有一切可以做的事情,那么现在最好的事情是什么?
【问题讨论】:
标签: layout joomla overriding categories article
我想根据文章类别的自定义布局为文章使用自定义布局。
感谢您的回复。
更新:
我对如何处理这个问题有一个想法,因为下面的答案给了我一些提示。我需要能够在文章项目页面上获取类别布局。我知道这很棘手,但 Joomla 拥有一切可以做的事情,那么现在最好的事情是什么?
【问题讨论】:
标签: layout joomla overriding categories article
嗯,我找到了更容易和无缝的解决方案来完成这种技巧。一旦你覆盖了类别布局,你应该在你的模板文件夹中放置类似“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"
/>
或者只是你想要的布局的隐藏字段。它会起作用的。
【讨论】:
首先,您需要进行模板覆盖。这很容易。可以在此处查看向您展示如何执行此操作的文档:
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
}
希望这会有所帮助。
【讨论】:
实现此目的的最佳方法是使用 K2 (http://getk2.org),因为您可以创建模板覆盖集(例如项目、类别等),然后在后端将它们分配给您的类别。
您可以在此处找到分步指南:http://getk2.org/documentation/tutorials/174-templating-with-k2-and-the-concepts-of-sub-templates
为了让转换更容易,他们还提供了一项功能,可将您的所有文章导入 K2。
【讨论】:
这必须在 yourblog.xml 中的 name="article" 部分
<fieldset name="article" label="COM_CONTENT_ATTRIBS_FIELDSET_LABEL">
【讨论】: