Всем привет. Недавно мне понадобилось сделать так, чтобы один и тот же материал можно было прикрепить к разным категориям. Далее я наткнулся на замечательное решение от
Legion Leonhart, которое расположено здесь:
http://joomlaforum.ru/index.php/topic,75137.0.htmlПоскольку вносить модификации в 12 файлов довольно утомительно, я решил просто выложить уже готовые файлы. Архив находится в прикреплении. В нем все модифицированные файлы в джумловской структуре, т.е. можно тупо копировать с заменой в корневую папку.
Внимание! Версия моей Joomla 1.5.22! В любом случае, советую сделать бэкап.
Все что остается, это модифицировать три файла вашего шаблона и выполнить в базу запрос. Начнем с запроса, где # - префикс таблиц в вашей БД (Шаг первый из решения
Legion Leonhart):
ALTER TABLE `#_content` ADD `catid2` INT ( 11 ) NOT NULL DEFAULT '-1' AFTER `catid` ;
ALTER TABLE `#_content` ADD `catid3` INT ( 11 ) NOT NULL DEFAULT '-1' AFTER `catid2` ;
ALTER TABLE `#_content` ADD INDEX ( `catid2` );
ALTER TABLE `#_content` ADD INDEX ( `catid3` );
Теперь модифицируем шаблон. Если у вас нет в шаблоне этих файлов, то ничего делать не надо. Также, в некоторых шаблонах они могут располагатсья по другим путям. Итак, в вашем шаблоне по адресу
имя_шаблона/html/com_content/article/default.php выполняем следующее (шаг 5)
Ищем
<?php if ($this->params->get ('link_category')) : ?>
<?php echo '<a href="'.JRoute::_(ContentHelperRoute::getCategoryRoute ($this->article->catslug, $this->article->sectionid)).'">'; ?>
<?php endif; ?>
<?php echo $this->escape ($this->article->category); ?>
<?php if ($this->params->get ('link_category')) : ?>
<?php echo '</a>'; ?>
<?php endif; ?>
Добавляем после
<?php if ($this->params->get ('link_category') && $this->article->category2) : ?>
<?php echo ',
<a href="'.JRoute::_(ContentHelperRoute::getCategoryRoute ($this->article->catid2, $this->article->sectionid)).'">'; ?>
<?php endif; ?>
<?php echo $this->escape ($this->article->category2); ?>
<?php if ($this->params->get ('link_category') && $this->article->category2) : ?>
<?php echo '</a>'; ?>
<?php endif; ?>
<?php if ($this->params->get ('link_category') && $this->article->category3) : ?>
<?php echo ',
<a href="'.JRoute::_(ContentHelperRoute::getCategoryRoute ($this->article->catid3, $this->article->sectionid)).'">'; ?>
<?php endif; ?>
<?php echo $this->escape ($this->article->category3); ?>
<?php if ($this->params->get ('link_category') && $this->article->category3) : ?>
<?php echo '</a>'; ?>
<?php endif; ?>
Далее в файле
Имя_шаблона\html\com_content\section\blog_item.php ищем
<?php if ($this->item->params->get('link_category')) : ?>
<?php echo '</a>'; ?>
<?php endif; ?>
Добавляем после
<?php if ($this->item->params->get ('link_category') && $this->item->category2) : ?>
<?php echo ',
<a href="'.JRoute::_(ContentHelperRoute::getCategoryRoute ($this->item->catid2, $this->item->sectionid)).'">'; ?>
<?php endif; ?>
<?php echo $this->escape ($this->item->category2); ?>
<?php if ($this->item->params->get ('link_category') && $this->item->category2) : ?>
<?php echo '</a>'; ?>
<?php endif; ?>
<?php if ($this->item->params->get ('link_category') && $this->item->category3) : ?>
<?php echo ',
<a href="'.JRoute::_(ContentHelperRoute::getCategoryRoute ($this->item->catid3, $this->item->sectionid)).'">'; ?>
<?php endif; ?>
<?php echo $this->escape ($this->item->category3); ?>
<?php if ($this->item->params->get ('link_category') && $this->item->category3) : ?>
<?php echo '</a>'; ?>
<?php endif; ?>
И наконец в файле
Имя_шаблона \html\com_content\category\blog_item.php ищем
<?php echo $this->escape($this->item->category); ?>
<?php if ($this->item->params->get('link_category')) : ?>
<?php echo '</a>'; ?>
<?php endif; ?>
И заменяем на
<?php echo $this->escape($this->item->category1); ?>
<?php if ($this->item->params->get('link_category')) : ?>
<?php echo '</a>'; ?>
<?php endif; ?>
<?php if ($this->item->params->get ('link_category') && $this->item->category2) : ?>
<?php echo ',
<a href="'.JRoute::_(ContentHelperRoute::getCategoryRoute ($this->item->catid2, $this->item->sectionid)).'">'; ?>
<?php endif; ?>
<?php echo $this->escape ($this->item->category2); ?>
<?php if ($this->item->params->get ('link_category') && $this->item->category2) : ?>
<?php echo '</a>'; ?>
<?php endif; ?>
<?php if ($this->item->params->get ('link_category') && $this->item->category3) : ?>
<?php echo ',
<a href="'.JRoute::_(ContentHelperRoute::getCategoryRoute ($this->item->catid3, $this->item->sectionid)).'">'; ?>
<?php endif; ?>
<?php echo $this->escape ($this->item->category3); ?>
<?php if ($this->item->params->get ('link_category') && $this->item->category3) : ?>
<?php echo '</a>'; ?>
<?php endif; ?>
Теперь при создании и редактировании материала можно будет прикреплять его одновременно к 3-м категориям. Хлопаем в ладоши, продолжаем разрабатывать сайты на Joomla!

Надеюсь я упростил многим задачу. Если вы недоверяете данному способу, или у вас другая версия Joomla, то советую вносить все изменения согласно инструкции
Legion Leonhart по адресу
http://joomlaforum.ru/index.php/topic,75137.0.html[вложение удалено Администратором]