Joomla 2.5 - макет статьи в соответствии с макетом категории

Я хочу использовать пользовательский макет для статей на основе пользовательских макетов их категорий.

  • макет спортивной категории - макет спортивной статьи
  • макет научной категории - макет научной категории

Спасибо за любой ответ.

ОБНОВЛЕНИЕ:
У меня есть идея, как с этим справиться, так как ответы ниже дают мне некоторый намек. Мне нужно иметь возможность получить макет категории на странице элемента статьи. Я знаю, что это сложно, но в Joomla есть все для этого, так что же лучше сделать сейчас?


person thednp    schedule 25.02.2013    source источник


Ответы (4)


Что ж, я нашел гораздо более простое и удобное решение для такого трюка. После того, как вы переопределили макет категории, вы должны были поместить что-то вроде «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"
      />

или просто скрытое поле для макета, который вы хотите. И это сработает.

person Kintar    schedule 01.10.2014
comment
Не могли бы вы уточнить этот ответ? У меня есть два разных макета статьи. У меня есть два XML-файла в папке /html/com_content/article. Тем не менее, добавив свой код в мой blog.xml (в папку переопределения моей категории). Но раскрывающийся список, который появляется в «Выборе макета», показывает только значение по умолчанию. - person Vik; 09.10.2014
comment
проблема в вашем случае - в том, что поле joomla componentlayout находит только макеты без соответствующего xml, потому что макеты с соответствующим xml - это пункты меню для joomla, а не макеты (ну, я не знаю почему, но у них есть это объяснение в объявлении поля Комментарии). Итак, в вашем случае я бы рекомендовал создать еще одну категорию xml, в которой вы можете иметь скрытое поле article_layout. Это должно сработать. - person Kintar; 10.10.2014

Прежде всего, вам нужно будет сделать переопределение шаблона. Это очень легко. Документацию, показывающую, как это сделать, можно посмотреть здесь:

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

Затем в своем переопределении вам нужно будет использовать операторы 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
}

Надеюсь это поможет.

person Lodder    schedule 25.02.2013
comment
Спасибо за ваш вклад, я думаю, что это гораздо лучший подход. Тем не менее, моя идея состоит в том, чтобы связать макет категории с макетом их статей, одним из способов может быть использование функции класса страницы, выглядит более многообещающе, если бы я объединился с вашим кодом здесь. Например: если на странице категории есть блог класса, в статье должен использоваться макет блога. Ваш путь слишком жесткий, он должен быть более конкретным и гибким. Еще раз спасибо. - person thednp; 26.02.2013

Лучший способ добиться этого — использовать K2 (http://getk2.org), так как вы можете создавать наборы переопределений шаблонов ( например, элемент, категория и т. д.), затем назначьте их своим категориям в админке.

Пошаговое руководство можно найти здесь: http://getk2.org/documentation/tutorials/174-templating-with-k2-and-the-concepts-of-sub-templates

Чтобы упростить переход, они также включили функцию импорта всех ваших статей в K2.

person Adam B    schedule 26.02.2013
comment
Спасибо за ваш вклад. Тем не менее, моя работа состоит в том, чтобы работать лучше, чем K2, просто с помощью файла com_content. У меня было много проблем с системой K2, и обновление/миграция/портирование было очень болезненным. - person thednp; 26.02.2013

Это должно быть в yourblog.xml в разделе name="article"

    <fieldset name="article" label="COM_CONTENT_ATTRIBS_FIELDSET_LABEL">
person Max Sychov    schedule 16.01.2015