Вывод названий дочерних элементов в списке контента

Как вывести связанные элементы?

#1 16 декабря 2017 в 21:29
Допустим у меня тип контента А привязвн к типу контента Б.
В списке контента А у каждой записи можно выводить связанные (родительские) элементы Б через поле parent_id.
Вопрос, как сделать обратное. В списке контента Б выводить у каждой записи список дочерних элементов А?
#2 16 декабря 2017 в 22:02
В настройках связей Б выбрать отображение не вкладкой, а списком.

Или речь о чем-то другом? smoke
#3 16 декабря 2017 в 22:07


В настройках связей Б выбрать отображение не вкладкой, а списком.
Или речь о чем-то другом? smoke

Sonat
Это вы про вывод в записи. А я про вывод в списке записей, или в виджете "Список контента"
#4 17 декабря 2017 в 00:07
Теперь понял о чем вы. А то с этими безликими А Б...

Здесь нужен новый тип поля — "дочки",
Но пока его никто не написал cry
#5 11 февраля 2024 в 14:03

Всем доброго дня.Кто подскажет, появилось решение данного вопроса за прошедшее время? Спасибо.

Добавлено спустя 1 час

Пожалуй спрошу более развернуто. Возможно ли в теории в списке типа контента (родительском) отображать дочерний контент так же, как он отображается при просмотре записи? Т.е. когда мы заходим в запись и к ней привязан какой-то контент, то мы видим в ней список этого контента (ну либо вкладку, в зависимости от настроек связи). Так вот, можно ли такой же список выводить не только в записи, но и при просмотре списка родительского ТК? 

#6 11 февраля 2024 в 14:17

 Ostrova, в icms можно все. 

Но «в коробке» такого точно не будет, так как это будет большой (в плане тяжелый для сервера) запрос с присоединением к записям одного (родительского) типа контента другого (дочернего). 

Несложными в разработке могут быть какие-то промежуточные (ограниченные) решения, типа цеплять только заголовки, или без проверок доступа и т.п.

#7 11 февраля 2024 в 14:30

 Ostrova, в icms можно все. 

Но «в коробке» такого точно не будет, так как это будет большой (в плане тяжелый для сервера) запрос с присоединением к записям одного (родительского) типа контента другого (дочернего). 

Несложными в разработке могут быть какие-то промежуточные (ограниченные) решения, типа цеплять только заголовки, или без проверок доступа и т.п.

Zau4man

Логика ясна, спасибо за ответ. Промежуточное решение в виде заголовка по-сути реализовано в обратном направлении: в списке ТК дочерних выводятся заголовки родителя. В обратном направлении тяжелее реализовать? Без проверок доступа и всего прочего (контент добавляется только администратором). В идеале категория + заголовок+ фото. Не подскажите вектор?

#8 11 февраля 2024 в 15:02

Не подскажите вектор?

Ostrova

не подскажу. Связями не пользуюсь, для своих нужд использую поле instantcms.ru/addons/listcontent.html

#9 17 февраля 2024 в 13:39

Друзья, все же нужна помощь зала.  Критически важно вывести поля из дочерних записей в списке записей родительских. Как это можно реализовать? Спасибо. 

#10 17 февраля 2024 в 20:49

Готового решения нет, надо писать. Ищите кто согласится.

Скорее всего для нужного вам типа контента создать хук content_типконтента_before_list и в нём доставать инфу от родительских записей.

#11 23 февраля 2024 в 12:13

Друзья, всем доброго дня. Как заставить работать данный код в контексте решения данного вопроса? 

  1. php
  2. function hookChildContent($ctype, $item, $fields){
  3.  
  4. // Проверяем, есть ли у контента дочерние элементы
  5. if(empty($ctype['childs'])){
  6. return false;
  7. }
  8.  
  9. // Получаем объект модели
  10. $model = cmsCore::getModel('content');
  11.  
  12. // Проходимся по каждому дочернему элементу
  13. foreach($ctype['childs'] as $child){
  14.  
  15. // Получаем информацию о дочернем типе контента
  16. $child_ctype = $model->getContentTypeByName($child['child_ctype_name']);
  17.  
  18. // Устанавливаем фильтр на получение дочерних элементов для текущего элемента
  19. $model->filterEqual('parent_' . $child['child_ctype_name'] . '_id', $item['id']);
  20.  
  21. // Получаем список дочерних элементов
  22. $child_items = $model->getContentItems($child['child_ctype_name']);
  23.  
  24. // Если дочерние элементы есть, выводим их
  25. if($child_items){
  26.  
  27. echo '<h3>' . $child_ctype['title'] . '</h3>';
  28.  
  29. echo '<ul>';
  30. foreach($child_items as $child_item){
  31. echo '<li><a href="' . href_to($child['child_ctype_name'], $child_item['slug']) . '">' . $child_item['title'] . '</a></li>';
  32. }
  33. echo '</ul>';
  34.  
  35. }
  36.  
  37. }
  38.  
  39. }
Вы не можете отвечать в этой теме.
Войдите или зарегистрируйтесь, чтобы писать на форуме.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.