Мультикатегории в K2

Давно искал способ для того чтобы присвоить одному материалу в K2 несколько категорий, да и чтоб при этом работа сайта не пострадала. Кажется нашел, мир не без добрых разработчиков. Итак, что нужно, чтобы один и тот же материал компонента K2 отображался в нескольких категориях, как у компонента ZOO, или другими словами, как добиться мультикатегорий в K2? Давайте разбираться. От разработчиков мы пока такой возможности не получили (но она обещана в версии 3.0 компонента), поэтому приходится использовать расширения "умельцев" - сторонних разработчиков. Я перебирал множество расширений, пока не нашел [Additional Categories for K2](http://www.netpin.gr/) (в переводе - Дополнительные категории для K2) в каталоге расширений для компонента K2, который как раз и позволяет разместить один и тот же материла в нескольких категориях. После его установки, он скорее всего откажется работать, как заявлено, но мы исправим =) как всегда, благодаря форуму разработчика мне удалось заставить работать этот компонент мультикатегорий, как надо. Итак, первое с чем я столкнулся - не отображалось название дополнительных категорий для материала, на русском языке, с английскими названиями проблем не возникало. По словам разработчика исправить это можно: Следует несколько поправить файл самого плагина `plugins/k2/k2additonalcategories/k2additonalcategories.php` Где то в районе строки 197: Заменить ``` if(K2_JVERSION=='16') ``` На ``` if(K2_JVERSION != '15') ``` Или скачайте [уже исправленный плагин с моего сайта](files/k2addcat.zip) Далее нам нужно несколько поправить шаблоны вывода компонента K2 для правильного отображения материалов в нескольких категориях. Для этого мы скопируем шаблоны вывода компонента в наш шаблон: - Идем в папку `/components/com_k2/templates/` и копируем из нее папку `default` к себе на диск - Далее, идем в папку с вашим шаблоном: `templates/ПАПКА_ВАШЕГО_ШАБЛОНА/html/` - Если в папке HTML нет папки `com_k2` создаем ее и копируем в нее папку `default` - Все, только что мы создали свой шаблон для компонента K2. - ОЙ, чуть не забыл из папки `/components/com_k2/` также скопируйте папки CSS и IMAGES. - Их, тоже скопируйте в папку вашего шаблона - `templates/ПАПКА_ВАШЕГО_ШАБЛОНА/` Вот, теперь можно не беспокоиться за сам компонент и начать редактировать файлы для правильного отображения мультикатегорий. Далее идет инструкция для исправления возникших вопросов при использовании данного плагина мультикатегорий: ### 1) Материал K2 опубликован в нескольких категориях, но показывает только одну присвоенную категорию. Если при просмотре сайта у материалов в категории отображается только одна, а вы знаете что присвоили несколько, необходимо внести некоторые правки в ваш шаблон для компонента K2, править будем 2 файла: Первый: `category_item.php`, так как ранее мы сделали копию шаблона вывода то идем в `templates/ПАПКА_ВАШЕГО_ШАБЛОНА/html/com_k2/default` и находим указанный файл После строки: ``` item->category->name; ?> ``` Добавляем: ``` trigger('onK2AfterLinkCategoryPublish', array($this->item->id)); echo $additional_category_links[0]; ?> ``` Второй файл в этом же месте - `item.php` Ищем строку: ``` item->category->link; ?>">item->category->name; ?> ``` После нее вставляем: ``` trigger('onK2AfterLinkCategoryPublish', array($this->item->id)); echo $additional_category_links[0]; ?> ``` Теперь все наши материалы будут показывать несколько категорий к которым они принадлежат, если их отображение включено. ### 2) Счетчик в подкатегориях показывает неправильные данные Чтобы счетчики в названиях категорий отображали правильное число находящихся в нем материалов, при использовании плагина мультикатегорий, нам необходимо модифицировать `/components/com_k2/models/itemlist.php` в районе строки 771 находим: ``` return $total; ``` И прямо **перед** этой строкой вставляем: ``` $dispatcher = JDispatcher::getInstance(); JPluginHelper::importPlugin ('k2'); $dispatcher->trigger('onK2BeforeSetCountCategoryQuery', array(&$total, &$id, &$categories)); ``` Данный код заставляет K2 учитывать дополнительные категории при подсчете материалов в категории. Единственный минус - фактически это "ХАК" самого компонента K2, поэтому при обновлении самого компонента он затирается, имейте это ввиду!!! ### 3) Подсчет материалов в категории в админке Если вам хочется чтобы и в админке количество материалов в категории показывалось с учетом ВСЕХ категорий K2(как основных, так и дополнительных), то здесь тоже придется прибегнуть к правке кода файла модели K2 (то есть, опять небольшой "хак"!). Ищем файл `administrator/components/com_k2/models/category.php ` , где то в конце файла (район строки 163) находим: ``` $query = "SELECT COUNT(*) FROM #__k2_items WHERE catid={$catid} AND trash = ".(int)$trash; ``` И сразу после нее вставляем: ``` $dispatcher = JDispatcher::getInstance();
JPluginHelper::importPlugin ('k2'); $additional_category_links=$dispatcher->trigger('onK2BeforeCountCategoryItemsQuery', array(&$query)); ``` Так как это тоже "хак" компонента, то при обновлении он затрется, учитывайте это на своих сайтах! ### 4) Очистка базы данных при удалении материала K2 Чтобы не захламлять таблицу базы данных при использовании плагина и чтобы при удалении материала K2 все работало без ошибок, разработчик плагина Additional Categories for K2 рекомендует внести следующие изменения в модель работы компонента K2: В файле `administrator/components/com_k2/models/items.php` около строки 802 найдите: ``` $dispatcher->trigger('onFinderAfterDelete', array('com_k2.item', $row)); ``` и сразу после допишите: ``` JPluginHelper::importPlugin ('k2'); $dispatcher->trigger('onK2AfterDeleteItem', array($row)); ``` Это позволит незахламлять базу и обеспечит правильный учет категорий для компонента и плагина. Это тоже "хак", учитывайте при обновлении! О ваших результатах использования плагина и его работе, пишем в комментариях!
  • А что подправить в шаблонах, не подскажите?
  • пару дней подождите, на выходных допишу...
  • Спасибо большое
  • Спасибо всё работает и выводит. Вот только не понимаю как сделать что бы они с новой строки не шли каждая(((
  • ну у меня не идут, может проблема в CSS? Ссылку давайте, посмотрим.
  • На денвере делаю. Уже всё решила. Закоментировала строку 465 в стилях шаблона k2 /*display: inline-block;*/ Спасибо. А не подскажите как увеличить звёздочки рейтинга. Хочу большие звёздочки:))) Кстати пробовала только что 10 звёзд сделать и не вышло, там уже ни так всё.(
  • Просто может заменить графику для звездочек? Насчет их количества - не подскажу, не экспериментировал...
  • Там просто графику заменить мало. Надо css переделать. Всё сделала. Спасибо.
  • долго гугли, автору респект, статья отличная. скажите а как прикрутить сие к подкатегориям? допустим есть иерархия -Город (основная категория) --строительная сфера (подкатегоия) --образовательная сфера (подкатегория) -- жилищно-коммунальная сфера (подкатегория) если я материал отношу к одной из подкатегорий, и в заглавии создания материала выбираю одну из категорий а ниже как Вы показываете выбираю подкатегории, то при выводе пункта меню К2 категории наличие материала (цифра 1 или 2) показывается только у той подкатегории которая была выбрана родными средствами К2
  • Статья еще не дописана, возможно ответ на ваш вопрос будет ясен после ее завершения.
  • спасибо, будем ждать. а точнее пробовать т.к. сроки горят... и переодически посматривать сюда.... =) если сам найду выход поделюсь
  • Пункт номер 2 - ответ на ваш вопрос?
  • да спасибо огромное! еще раз +1 к респекту =) единственная поправка - $total = $db->loadResult(); этот резалт необходимо закоментить т.к. счетчик для категории, которую выбрали в материале родными средствами К2 будет не верный и будет показывать +1 к значению.
  • Да статья очень хорошая! Спасибо автору! Но есть несколько нюансов... Самое страшное - у меня вообщем все заголовки сайта куда-то пропали?! Подскажите, как вернуть? Может уже кто то сталкивался... Заранее Спасибо.
  • При всех правках, указанных в статье, заголовки не должны быть затронуты. Смотрите код, возможно, что то лишнее удалили, или настройки заголовков может быть изменили... Без ссылки на конкретный сайт, можно еще неделю заниматься приемом телепатических сигналов от вас и гаданием, как раз рождество скоро. Всех, кстати с наступающим!
  • буду космически благодарен если поможете... вот ссылка: myworket.(ru)
  • Ну дак в чем проблема? Заголовки на месте, материалы тоже на месте. Что не устраивает?
  • в опере их нет( в хромене все отлично и причем нету заголовков не относящихся ни к компоненту K2 ни к плагину
  • C новым годом всех!!! Подскажите пожалуйста. При удалении в корзину материалов и категорий К2 совсем прекращает работу сайт - Ощибка 0. Как с этим бороться и с чем это связанно?
  • И вас с праздниками, ошибки 0 не бывает... Если весь сайт основан на компоненте K2 то не удивительно, что он может не работать... Но без конкретики - все это гадание на кофейной гуще.
  • А как вывести в шаблоне вывода по тегу, аналогично изменил и там, но результат нулевой. Везде все отлично! Спасибо!
  • Насчет вывода по тегу не скажу, в чем смысл в принципе в тегах, показывать категории?
  • Добрый день, спасибо за статью, очень полезный материал! у меня вопрос по этому компоненту. Для дополнительных категорий не выполняется "Опции отображения материала для списка категории", все эти настройки для материала берутся с главной категории. Как нибудь можно это исправить? Спасибо.
  • Подскажите пожалуйста,что делать если К2 сортирует мои категории по номеру ID,а не по графе "порядок"?Заранее спасибо!
  • Как сделать в K2 2.6.3 - K2 Tools меню, счетчик материалов в категории в меню. При использовании модуля K2 Tools ө вывода меню, не правильно показывается содержание материалов в категории?
  • Как сделать в K2 2.6.3 - K2 Tools меню, счетчик материалов в категории в меню. При использовании модуля K2 Tools ө вывода меню, не правильно показывается содержание материалов в категории?
  • Назначил категории 3 группы фильтров. В каждой группе, есть фильтры с id номерами 1, 2, 3. При просмотре материала, дополнительные поля - показываются (сортируются), по id номерам - то есть, некорректно. Показываются сначала все поля с id 1 (из 3), потом поля с id 2 (из тоже 3) и т.д. Таким образом дополнительные поля путаются между собой и теряется их смысл. Надо чтобы сначала выводились все поля 1 категории дополнительных полей (основной), а потом по выбору 2 и 3 выбранной категории. Сейчас такого нет, как это сделать???
  • Назначил категории 3 группы фильтров. В каждой группе, есть фильтры с id номерами 1, 2, 3. При просмотре материала, дополнительные поля - показываются (сортируются), по id номерам - то есть, некорректно. Показываются сначала все поля с id 1 (из 3), потом поля с id 2 (из тоже 3) и т.д. Таким образом дополнительные поля путаются между собой и теряется их смысл. Надо чтобы сначала выводились все поля 1 категории дополнительных полей (основной), а потом по выбору 2 и 3 выбранной категории. Сейчас такого нет, как это сделать???
  • Не совсем понял, где идет фильтрация и чем. Покажите демо, подумаем вместе.
  • а родительская категория есть? Какой порядок там выставлен для подкатегорий?
  • Если вы про работу при включенном плагине мультикатегорий, то пока ответа у меня нет. Как появиться обновлю пост.
  • Добрый день у меня не отображаются Коментарии т.е пользователи не могут оставлять комментарии под новость а я супер юзер могу=)) 
  • Здравствуйте! Есть такая проблема... Материал находится в двух категориях. При использовании модуля k2_content с выборкой по категориям выводит этот материал, когда указана одна из этих категорий, и не выводит этот же материал, когда указана другая категория. Подскажите, как исправить...
  • Добрый день проблема следующего характера 1 Установил ваш (т.е скачанный с этой страницы) Плагин 2 В материале под содержанием появилось поле для выбора "мультикатегории" 3 На сайте отображается только категория выбранная в дефалте к2 4 Joonla 2.5 K2 v.2.5.4 Информация о хосте (localhost) Веб-сервер Apache/2.2.22 (Win32) mod_ssl/2.2.22 OpenSSL/1.0.1c PHP/5.3.13 Версия PHP 5.3.13 Версия MySQL 5.5.25 GD Библиотека изображений bundled (2.0.34 compatible) Модуль php mbstring (поддержка многобайтовых кодировок) Включен Пожалуйста помогите работа стоит, если вас не затруднит мой скайп xatabi41986 спасибо.
  • Разобрался но теперь нет одного не могу найти пункт 4 "Очистка данный БД" в файлике не находит такие строки
  • сделал как описано у вас. все хорошо теперь у материала несколько категорий. но возникает другой вопрос. при создании пунктов меню и привязывая к каждому из них к2 категорию конкретную. пример: 1)приключения 2) детектив. материалы с привязкой основной категории через стандартную возможность к2. категория: приключения и доп категорию плагином детектив. перейдя в пункт меню детектив. там этот материал не отображается. как реализовать эту возможность? или возможно я что то недонастроил
  • Скорее всего недонастроили. Читаем от пункта "Первый: category_item.php" и далее. Посмотрите сколько шаблонов K2, может категории какой то специфичный присвоен...
  • шаблон к2 стоит defaut. вот когда сделал как у вас. появился выбор еще. там написано css и image
  • Спасибо за вашу статью! исправил ошибки свои. взял по новой в шаблон своего сайта в папку к2 перезакинул коды в файлы и потом добавил ваши. и все теперь материалы отображаются и в основных категориях и в доп категориях.
  • пожалуйста, рад что у вас все получилось
  • Спасибо за статью, полезно. Но столкнулся с одной проблемой, а именно после установки компонента при попытке создания материала в К2 получаю: SQL=SELECT `catid` FROM tzhoe_k2_additional_categories WHERE `itemID` = {intval()} В созданных материалах ранее доп. категории появились, все остальное тоже проделал и все норм, а вот как быть с этим ума не приложу. Joomla 3.1.1 + K2 2.6.6
  • Здравствуйте Сергей! Читал ваш блог, но не нашел информации по К2. У меня такая проблема, я создаю материал в К2 кидаю его в категорию, но материал показывается во всех категориях сайта. Перепробовал уже все, но ничего не помогает. Подскажите пожалуйста как быть. Спасибо.
  • Попробуйте написать разработчику, он должен помочь. Версию плагина новую используете?
  • Всё прекрасно устанавливается. Но беда, в модулях при выборе "DATA SOURCE" необходимой категории не отображаются материалы в которых данная категория как дополнительная. Как можно решить эту проблему с новостными модулями?
  • Все отлично, но почему все молчат, что данный плагин создает кучу дублей страниц? Перекидывает то он на нужную ссылок, но если вписать в адресной строке сайта другую категории, то материал также будет доступен. то есть, сколько категорий столько и разных адресных путей к данному материалу.
  • Всё установил, но плагин не работает. При создании материала устанавливаю категорию, но в Additiona Categories могу установить еще только одну, не больше, в Чём проблема - подскажите
  • Счетчик в категориях, с предлагаемым хаком - не заработал в версии 2.6.7
  • Решили проблему? у меня в такой же связке Joomla 3.1.1 + K2 2.6.6 такая же ошибка!
  • Но столкнулся с одной проблемой, а именно после установки компонента при попытке создания материала в К2 получаю: SQL=SELECT `catid` FROM tzhoe_k2_additional_categories WHERE `itemID` = {intval()} В созданных материалах ранее доп. категории появились, все остальное тоже проделал и все норм, Joomla 3.1.1 + K2 2.6.6
  • вот решение если кому надо будет http://www.netpin.gr/forum/2-support/92-sql-error
  • Удерживая ctrl выбираешь категории, а вообще не рекомендую этот плагин, дублей страниц шлепает как пулемет
  • Этот плагин создает дубли страниц?
  • Лично я такого не замечал, плагин ведь не генерирует новые страницы, он лишь отображает записи K2 в блоге нескольких категорий, при этом URL самой записи, остается неизменным...
  • Все вроде работает на 2.6.7. Дублей не заметил. Материал имеет один и тот же путь в разных категориях.
  • А как сделать материал в К2 мультиязычным? Просматриваю я статью на русском, нажимаю флажок Английский, но меня возвращает в категорию news, а должно отобразить тот же материал, только на английском. Где связи между мультиязычным материалом настраиваются?
  • Здравствуйте. Столкнулся с необходимостью присвоения подкатегории более чем одной категории. Помогите с реализацией.
  • в статье подробно все описано, с плагином можете присваивать более чем одну категорию, в чем именно вам нужна помощь?
  • Сергей, проблема в том что, я пытаюсь присвоить одной подкатегории несколько главных категорий. Или наоборот. С присвоение материала - проблем нет. Спасибо.
  • Не поймите меня не правильно,но я Вас люблю!!!!)))) ООООчень давно искал решение с отображением всех присвоенных категорий на странице с материалом,оказывается все так просто)) Спасибо Вам огромное!!
  • Спасибо, а я жену люблю =) Рад, что блог был вам полезен.
  • да есть решение K2 Multiple categories patch только вот модуль тянет с одной (основной) категории ((( p.s. Автор случаем не делал, чтобы в настройках календаря К2 - можно было выбрать несколько категорий? Либо, выбрав категорию, что бы вложенные подкатегории отображались в календаре?
  • Здравствуйте. Установил плагин, работает отлично. Но дело в том, что сайт начал очень долго с ним грузиться. Время ответа сервера увеличилось с 1 секунду до 30. Что с этим можно сделать, не подскажите? Проблема видимо в том, что на сайте размещено около 15000 материалов к2
  • Кэширование на сайте включено?
  • Большое спасибо, за исправленный плагин!))))))
  • Здравствуйте. Очень нужно решение для сайта журналов. Каким можно образом к одному метериалу прикрутить несколько авторов?
  • пожалуйста, надеюсь что работает(а то давно уже выкладывал)?
  • нет такого решения если вы имеете ввиду страницы авторов K2 которые /user/ единственным вариантом на текущий момент вижу использование с этой целью доп.полей.
  • держи кнопку ctrl когда выбираешь категории)
  • А как по другому? Если у тебя только один материал и ты его показываешь на множестве страниц?
  • ищи по этой строке onFinderAfterDelete
  • Огромное спасибо! Все работает отлично. Давно искал
  • Сергей, скажите пожалуйста, плагин работает на версии joomla 3.3.6 ? Пытаюсь загрузить файл пакета через менеджер расширений - пишет: Не найден установочный XML-файл Joomla.
  • Проверяйте разрешения на папки, только что проверил - установка проходит без проблем.
  • Разрешение на всех папках 755 стоит. Не получается поставить, может есть другой способ?
  • Супер! Спасибо :)
  • Всем привет. Есть ли живое демо - данного плагина ? Что-бы увидеть в живую. Возник просто вопрос, как должна отображаться ссылка перехода в второстепенной категории ? Сейчас выводит так: Основная указанная категория для материала к примеру: Литиевые батарейки Добавленная категория для материала через плагин: Батарейки для слуховых аппаратов При переходе в категории "Батарейки для слуховых аппаратов " в сам материал переход получается в "Литиевые батарейки / Материал" Так должно быть ?
  • Демо к сожалению, пока удалил. да, так и должно быть. Плагин не меняет основную категорию материала, что ИМХО правильно с точки зрения SEO по факту плагин лишь выводит материал в дополнительной категории (в блоге категории)
  • Теперь стало более понятно... Спасибо. То есть, так как я себе понял - это более улучшенная система тегов, в которой такой же принцип. Но тут возникает вопрос с системой навигации к примеру "Хлебные крошки" не особо удобно для пользователя если потребуется вернуться в предыдущий раздел, либо через меню сайта или по старинке "Назад" в браузере. Как быть с этим ?
  • С хлебными крошками всегда все сложно =) тут придется пользоваться кнопкой "Назад" в браузере.
  • Доброго дня!!!! Есть ли возможность в этом плагине заменить поле выбора дополнительных категорий multiselect на checkbox? (очень много категорий и неудобно выбирать)
  • Доброго времени суток блогеры. Вопрос такой: Заменил в шаблоне вывода itemlist изображение превьюшки материала на изображение категории в которой находится сам материал. Теперь требуется так же в родительской категории, чтоб при выводе материалов находящихся в дочках-категориях, чтоб так же выводились превью изображений материалов именно из тех категорий к которым они принадлежат. Вроде как смог попытался объяснить задачу. Может кто подскажет где и как что подправить? Вернее где я уже понял (все в том же itemlist) и алгоритм так же примерно ясен. Просто не очень знаком с K2 и по этому не знаю как правильно запрос построить из шаблона? Не очень пока разобрался как все тут в формате MVC работает... Если есть у кого ссылка на документацию по K2 был бы очень благодарен. На их сайте ничего толкового и сруктурируемого не смог найти. Почему пишу тут - так как не нашел подходящей темы у вас. Но эта более менее все же про категории. )
  • Нужно создать индексы полей catid, itemID в таблицу _k2_additional_categories. Тормоза уйдут, http://joomlaforum.ru/index.php/topic,316703.0.html
  • Доброго времени суток....а если при добавлении материала, возникает вот такая ошибка: 1062 Duplicate entry '130-680' for key 'PRIMARY' SQL=INSERT INTO `nzvjr_finder_links_terms0` (`link_id`, `term_id`, `weight`) SELECT 130, `term_id`, ROUND(SUM(`context_weight`), 8) FROM `nzvjr_finder_tokens_aggregate` WHERE `map_suffix` = '0' GROUP BY `term` ORDER BY `term` DESC
  • Сергей, крайне важный момент! Надо б добавить в статью!
  • Здравствуйте уважаемый Сергей. вопрос о компоненте к2. Есть сайт с установленным компонентом К2. Ищу решение по выводу материала как на этом сайте: http://www.besbeautyscience.com/en/. Хотелось бы услышать какую нибудь рекомендацию от Вас. Заранее благодарен за ответ и уделенное моему вопросу время.