Вывод категории/категорий в записи

InstantCMS 2.X
#1 12 мая 2018 в 05:36
Друзья, как вывести категорию записи в самой записи?
#2 12 мая 2018 в 05:54
Поддержите. Опять придумывать костыли как с изображением категории как-то не хочется.
#3 12 мая 2018 в 06:03
А почему костыль, свой шаблон вывода один раз сделать и все…
#4 12 мая 2018 в 06:04


А почему костыль, свой шаблон вывода один раз сделать и все...

Jestik
Я знал что ты мне поможешь =)
#5 12 мая 2018 в 06:37
Находим в mysupertemplate/content/default_item.tpl.php
  1. <?php $user = cmsUser::getInstance(); ?>
и после вставляем:
  1. <?php
  2. $is_show_allcats = 1;
  3. if ($is_show_allcats) {
  4. function getItemAllCats($ctype_name, $item_id){
  5. $model = cmsCore::getModel('content');
  6. $bind_cats = $model->getContentItemCategories($ctype_name,$item_id);
  7. foreach ($bind_cats as $cat_id){
  8. $cat = $model->getCategory($ctype_name, $cat_id);
  9. $cats[] = $cat;
  10. }
  11. return $cats;
  12. }
  13. }
  14. ?>
  15.  
В нужном месте выводим категории таким образом:
  1. <?php
  2. if($is_show_allcats){
  3. $item['cats'] = getItemAllCats($ctype['name'], $item['id']);
  4. ?>
  5. <?php if(is_array($item['cats']) && $item['cats'][0]['parent_id']==!0){ ?>
  6. <?php foreach($item['cats'] as $cat) { if($cat['parent_id']==!0){
  7. $zap = ($cat === end($item['cats'])) ? "" : ", ";
  8. ?>
  9. <a href="<?php echo href_to($ctype['name'], $cat['slug']); ?>"><?php html($cat['title']); ?><?php echo $zap; ?>
  10. </a>
  11. <?php }} ?>
  12. <?php
  13. }
  14. }
  15. ?>
Если кто знает более изящное решение, милости прошу.
Не благодарите.
#6 12 мая 2018 в 09:18
Василич, А зачем дублировать в записи "хлебные крошки"?
#7 12 мая 2018 в 09:19


Василич, А зачем дублировать в записи "хлебные крошки"?

Loadырь
Разве это важно?
Определённый тип контента, вёрстка и вот это вот всё.
Хлебные крошки далеко не все выводят, в связях они и вовсе, далеко не везде уместны, т.к. не выводят весь путь, поэтому логично выводить категории в теле страницы.
#8 12 мая 2018 в 10:45

Разве это важно?

Василич
Вам виднее. Я не сеошник, но мне кажется при таком подходе размывается статический вес страницы.
Принадлежность к категории интересна для пользователя в списке записей, где выводятся все записи раздела с его подразделами, а в самой записи мне кажется это лишнее, так как легко доступно в хлебных крошках.

З.Ы. Я без каких либо претензий. Просто самому хочется разобраться, так ли это нужно? Все борются за скорость загрузки страницы, и уменьшение нагрузки на железо, а тут ради пары-тройки ссылок делать ещё один запрос в базу и потом дважды циклом перебирать полученный массив. Причём это можно сделать сразу в одном цикле. Стоит ли оно того эффекта, который получит пользователь глядя на эти ссылки?
#9 12 мая 2018 в 10:50

Причём это можно сделать сразу в одном цикле.

Loadырь
Дык, помогите оптимизировать запрос =)
На некоторых проектах важно, хлебные крошки далеко не везде уместны, следовательно, минус один запрос от хлебных крошек, плюс один запрос вывода категории. Гармония и идиллия на лицо.
#10 12 мая 2018 в 11:37

Друзья, как вывести категорию записи в самой записи?

Василич
Только сейчас дошло, что вы выводите список основной и дополнительных категорий записи, а не основной категории и всех её родительских.

Дык, помогите оптимизировать запрос =)

Василич
Содержимое второго цикла перенесите в первый и в первом цикле сразу формируйте строку вывода в шаблоне.

плюс один запрос вывода категории

Василич
Там не плюс один, а плюс один запрос по основной категории и плюс столько запросов, сколько дополнительных категорий у записи.

Гармония и идиллия на лицо.

Василич
Для меня это скорее "рука лицо" facepalm
#11 12 мая 2018 в 11:44
Ваше субъективное мнение основанное на неком личном опыте, имейте его на здоровье, кто ж против.
Я, если что, спрашивал не мнение а решение.
Спасибо за внимание и "помощь".
#13 29 апреля 2019 в 23:42
Есть такой способ вывода названия категории
  1. <?php $category = cmsCore::getModel('content')->getCategory($ctype['name'], $item['category_id']); ?>
  2. <a href="<?php echo href_to($ctype['name'],$category['slug']);?>">
  3. <?php echo $category['title'];?>
  4. </a>
Но данный способ не выводит случай когда у записи несколько категорий.
Что подправить надо?
#14 7 февраля 2020 в 20:10
Василич, спасибо за подсказку! Удобно использовать после записи, опубликовано тогда-то, в такой-то категории.
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.