Персональный блог

Переопределение - это файлы, который загружаются вместо нормальных файлов ядра.
В данном руководстве я не буду полностью про то что такое переопределение и про то как переопределять макеты, для этого есть прекрастная статья на cmscafe. А уделю все свое внимание одному из аспектов, а именно переопределению xml файла.
Помимо простого переопределения стандартные компоненты joomla позволяют в переопределения создавать xml файлы тем самым, давая возможность создавать свои типы пунктов меню. В этот раз мы будем разбирать создание такого файла com_content
Сам файл назовем его category.xml со всем, на мой взгляд самыми важными настройками, выглядит следующим образом:
<?xml version="1.0" encoding="utf-8"?>
<metadata>
<layout title="JCATEGORY" option="COM_CONTENT_CATEGORY_VIEW_DEFAULT_OPTION">
<help key="JHELP_MENUS_MENU_ITEM_ARTICLE_CATEGORY_LIST"/>
<message>
<![CDATA[COM_CONTENT_CATEGORY_VIEW_DEFAULT_DESC]]>
</message>
</layout>
<fields name="request">
<fieldset name="request" addfieldpath="/administrator/components/com_categories/models/fields">
<field name="id" type="modal_category"
label="JGLOBAL_CHOOSE_CATEGORY_LABEL"
description="JGLOBAL_CHOOSE_CATEGORY_DESC"
extension="com_content"
required="true"
select="true"
new="true"
edit="true"
clear="true"/>
<field name="filter_tag" type="tag"
label="JTAG"
description="JTAG_FIELD_SELECT_DESC">
<option value="">JNONE</option>
</field>
</fieldset>
</fields>
<fields name="params">
<fieldset name="basic" label="COM_MENUS_BASIC_FIELDSET_LABEL">
<field name="layout_type" type="hidden" default="category" />
<field name="article_layout" type="hidden" default="article" />
<field name="display_num" type="text"
label="JGLOBAL_NUMBER_ITEMS_LIST_LABEL"
description="JGLOBAL_NUMBER_ITEMS_LIST_DESC"
size="3"
default="5"/>
<field name="show_subcategory_content" type="list"
label="JGLOBAL_SHOW_SUBCATEGORY_CONTENT_LABEL"
description="JGLOBAL_SHOW_SUBCATEGORY_CONTENT_DESC"
useglobal="true">
<option value="0">JNONE</option>
<option value="-1">JALL</option>
<option value="1">J1</option>
<option value="2">J2</option>
<option value="3">J3</option>
<option value="4">J4</option>
<option value="5">J5</option>
</field>
<field name="orderby_pri" type="list"
label="JGLOBAL_CATEGORY_ORDER_LABEL"
description="JGLOBAL_CATEGORY_ORDER_DESC"
useglobal="true">
<option value="none">JGLOBAL_NO_ORDER</option>
<option value="alpha">JGLOBAL_TITLE_ALPHABETICAL</option>
<option value="ralpha">JGLOBAL_TITLE_REVERSE_ALPHABETICAL</option>
<option value="order">JGLOBAL_CATEGORY_MANAGER_ORDER</option>
</field>
<field name="orderby_sec" type="list"
label="JGLOBAL_ARTICLE_ORDER_LABEL"
description="JGLOBAL_ARTICLE_ORDER_DESC"
useglobal="true">
<option value="front">COM_CONTENT_FEATURED_ORDER</option>
<option value="rdate">JGLOBAL_MOST_RECENT_FIRST</option>
<option value="date">JGLOBAL_OLDEST_FIRST</option>
<option value="alpha">JGLOBAL_TITLE_ALPHABETICAL</option>
<option value="ralpha">JGLOBAL_TITLE_REVERSE_ALPHABETICAL</option>
<option value="author">JGLOBAL_AUTHOR_ALPHABETICAL</option>
<option value="rauthor">JGLOBAL_AUTHOR_REVERSE_ALPHABETICAL</option>
<option value="hits">JGLOBAL_MOST_HITS</option>
<option value="rhits">JGLOBAL_LEAST_HITS</option>
<option value="random">JGLOBAL_RANDOM_ORDER</option>
<option value="order">JGLOBAL_ORDERING</option>
<option value="vote" requires="vote">JGLOBAL_VOTES_DESC</option>
<option value="rvote" requires="vote">JGLOBAL_VOTES_ASC</option>
<option value="rank" requires="vote">JGLOBAL_RATINGS_DESC</option>
<option value="rrank" requires="vote">JGLOBAL_RATINGS_ASC</option>
</field>
<field name="order_date" type="list"
description="JGLOBAL_ORDERING_DATE_DESC"
label="JGLOBAL_ORDERING_DATE_LABEL"
useglobal="true">
<option value="created">JGLOBAL_CREATED</option>
<option value="modified">JGLOBAL_MODIFIED</option>
<option value="published">JPUBLISHED</option>
</field>
</fieldset>
</fields>
</metadata>
На мой взгляд самыми важными настройками являются:
layout_type - отвечает за тип вывода макета и как следствие за подключение скрптов, так к пример layout_type = blog подключит к вам bs2 и стандартный jquery
article_layout - этот параметр отвечает за то какой макет использоваться уже в самом материале. Благодаря этому параметру, если в настройках материала не выбран макет, то будет использоваться указанных в этом xml в данном случае это макет article
display_num - отвечает за количество выводимых материалов в списке категорий
Если у вас изначально был выбран макет default, то значение параметра display_num могло остаться у вас в сессии
show_subcategory_content - отвечать за вывод материалов из под категорий, а точнее за из скольких уровней под категорий выводить материала на странице категории.
orderby_pri - отвечает за сортировку категорий, если использовать этот параметр то материалы будут сначала сортироваться по данному параметру.
orderby_sec – отвечает за сортировку материалов по указному параметру.
order_date – используется в том случае если в orderby_sec выбрано «самые новые первыми» или «Старые первыми»
В XML для переопределения article нет смысла т.к макет можно выбрать в стандартном xml или в самом материале. Да и лишних скриптов он не подключает.