1.10 Отображение статьи во всех родительских категориях

+21
1.85K
Решение для версии 1.9: Статья сразу в нескольких разделах

Решение для 1.10

Преамбула:

Актуальная проблема (1 из веток instantcms.ru/forum/thread11911.html): разместить статью сразу в нескольких разделах.
Допустим, есть вложенное меню
  1.  
  2. Еда
  3. -Первое
  4. --Салаты
Добавляем мы статью "салат греческий" в раздел "салаты". Логично при этом чтобы она отображалась также в разделах "Еда" и "Первое".

Как решил эту проблему я: не добавлением статьи в несколько категорий, но выводом её анонса в родительской категории, если статья есть в одной из вложенных.

Экшн:

Правим 2 файла. Первый: /components/content/model.php
Добавляем рядом с
  1. /**
  2.   * Условия выборки
  3.   */
функцию
  1. public function whereCatIn($category_ids) {
  2. $this->inDB->where("con.category_id IN (".$category_ids.")"); //условие выборки статьи из перечисленных категорий
  3. }
  4.  
Второй: /components/content/frontend.php
Находим "Условия" (около 108 строки) и комментируем строку:
  1. // Условия
  2. //$model->whereCatIs($cat['id']);
добавляем после неё
  1. //!---связи
  2. //1 уровень
  3. $sql1 = "SELECT id FROM cms_category WHERE parent_id = '".(int)$cat['id']."'";
  4.  
  5. $result1 = $inDB->query($sql1);
  6.  
  7. $innercats=(int)$cat['id']; //исходно показываем только в одной категории
  8.  
  9. if ($inDB->num_rows($result1)) {
  10. while($innercat1 = $inDB->fetch_assoc($result1)){
  11. $innercats = $innercats.", ".(int)$innercat1['id'];
  12. }
  13. }
  14.  
  15. //2 уровень
  16. $sql2 = "SELECT id FROM cms_category WHERE parent_id IN($innercats)";
  17.  
  18. $result2 = $inDB->query($sql2);
  19.  
  20. if ($inDB->num_rows($result2)) {
  21. while($innercat2 = $inDB->fetch_assoc($result2)){
  22. $innercats = $innercats.", ".(int)$innercat2['id'];
  23. }
  24. }
  25. //!---
  26.  
  27. $model->whereCatIn($innercats);
для 3 и больше уровней вложенных категорий, скопируйте блок //2 уровень
+2
Endroid Endroid 9 лет назад #
Супер! То что нужно!
-1
ermakover ermakover 9 лет назад #
Спасибо! Очень пригодилось!
0
Anonim Anonim 9 лет назад #
Применили. Не понравилось. Поскольку в вашем случае ВСЕ СТАТЬИ во ВСЕХ категориях видны
0
Cruzka Cruzka 9 лет назад #
такое возможно или если я что-то не учёл, или если у Вас все категории вложены одна в другую
0
Петр Петр 8 лет назад #
работает оно на 1.10.3? срочно нужно решение
0
IRIP IRIP 5 лет назад #
http://instantcms.ru/forum/thread12466-1.html - Вот это работает
0
Dim@sik Dim@sik 9 лет назад #
а вот интерестно для инстант видео такое можно прикрутить. Чтобы одно видео могло отображаться в несольких категориях?
0
SeoNick SeoNick 8 лет назад #
А как добавлять статьи в разные категории? Не получается при добавлении статьи разные категории выставить.

Еще от автора

Адаптируем стандартный диз 1.10.х под мобильные устройства
Для тех кто не в курсе, Гугл и Яндекс обещают понижать в выдаче сайты с неадаптивным дизайном (которые неудобно просматривать с телефона).
Добавленные статьи из админки не отображаются в ленте активности - фикс
При добавлении статей из админки, не создаются почему-то метки в ленте активности.
Чутка правим поиск по сайту
При поиске по сайту, если ничего не нашлось (а бывает что не находится то что точно есть), то Инстант предлагает поискать в яндексе.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.