Ostrova

Ostrova

+1
Репутация
24
Рейтинг
#1 Сложный форум 9 марта 2024 в 09:37

Я тоже присоединяюсь, локальный поиск на форуме был бы очень полезен. 

#2 Вывод названий дочерних элементов в списке контента 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. }
#3 Вывод названий дочерних элементов в списке контента 17 февраля 2024 в 13:39

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

#4 [ЕСТЬ РЕШЕНИЕ] Вывод событий сегодня, завтра, неделя, месяц 11 февраля 2024 в 23:48

 Ostrova, для управления датами используется поле Место и время, которое в себе хранит ТОЛЬКО дату ближайшего события. Остальные даты хранятся в отдельной таблице.

В фильтре поле вывести не получится.

Но реализовать можно все. Например, так:

— поправить вывод поля в фильтре, чтобы выводились поля начала и конца мероприятий
— через промежуточный запрос найти записи типа контента, которые удовлетворяют выбранным датам
— фильтровать через IN по этому списку

Когда афишу делал, многого не учел. Но работает и поддерживается компонент до сих пор.

Zau4man

Выше Вы привели пример фильтра в составе набора. Он ведь как-то понимает, что событие с датами 11, 12, 13 февраля нужно вывести в наборе «сегодня», если на календаре 12е. Вот это мне оказалось не понятным. Он как-то взаимодействует с таблицей дополнительных дат?

#5 [ЕСТЬ РЕШЕНИЕ] Вывод событий сегодня, завтра, неделя, месяц 11 февраля 2024 в 20:56

 mavleds, вот так в моем компоненте афиши настроен набор «Сегодня»

Изображение

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

Изображение

Пробуйте. С датой точно должно сработать.

Документация по наборам docs.instantcms.ru/manual/ctypes/datasets/add

Zau4man

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

#6 Вывод названий дочерних элементов в списке контента 11 февраля 2024 в 14:30

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

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

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

Zau4man

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

#7 Вывод названий дочерних элементов в списке контента 11 февраля 2024 в 14:03

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

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

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

#8 Вывод в публикации названия сообщества, в котором пост опубликован. 2 февраля 2024 в 01:24

Всем здравствуйте. Подскажите, а как вывести в публикации название сообщества, в котором мы опубликовали запись? То-ли что-то просмотрел, то-ли такой возможности нет 🧐

Ostrova

Вообще то если шаблон ТК не подавленный название группы по умолчанию там появляется )

Happy

Хм… Ну я шаблоны переделывал, но не то, чтобы критично. Ладно, покопаюсь тогда в стандартных шаблонах, поищу как вывести.  Спасибо. 

Добавлено спустя 9 минут

Всем здравствуйте. Подскажите, а как вывести в публикации название сообщества, в котором мы опубликовали запись? То-ли что-то просмотрел, то-ли такой возможности нет 🧐

Ostrova

Вообще то если шаблон ТК не подавленный название группы по умолчанию там появляется )

Happy

Все, понял в чем дело. Если отключить заголовок записи, то и группа не показывается. Придется как-то мудрить.

#9 Где искать H1 в системе? 2 февраля 2024 в 01:12

Необходимо стилизовать этот тег, но не помню где в модерне его искать. Подскажите плиз)

Def

Так в общем файле темы  theme.css вроде все лежит. 

#1 Вывод в публикации названия сообщества, в котором пост опубликован. 2 февраля 2024 в 01:09

Всем здравствуйте. Подскажите, а как вывести в публикации название сообщества, в котором мы опубликовали запись? То-ли что-то просмотрел, то-ли такой возможности нет 🧐

#10 [ЕСТЬ РЕШЕНИЕ] Перенести набор "моих друзей" из ленты активности в другие ТК 2 февраля 2024 в 01:04

Почему фильтруется в ленте активности и не фильтруется в других ТК по этому методу?

Ostrova

Всё фильтруется, просто наборы в ленте и в ТК по разному вставляются.

Вставьте сюда github.com/instantsoft/icms2/blob/master/system/controllers/content/frontend.php#L1527 этот код

  1. if (cmsUser::isLogged()){
  2. $datasets['subscribers'] = [
  3. 'id' => 100500,
  4. 'ctype_id' => $ctype['id'],
  5. 'name' => 'subscribers',
  6. 'title' => 'Подписчики',
  7. 'description' => '',
  8. 'ordering' => 1000,
  9. 'is_visible' => true,
  10. 'filters' => [
  11. [
  12. 'field' => 'id',
  13. 'condition' => 'lk',
  14. 'value' => false,
  15. 'callback' => function($model, $dataset){
  16. return $model->filterSubscribe(cmsUser::get('id'));
  17. }
  18. ]
  19. ],
  20. 'sorting' => [
  21. [
  22. 'by' => 'date_pub',
  23. 'to' => 'desc',
  24. ]
  25. ],
  26. 'index' => false,
  27. 'groups_view' => [],
  28. 'groups_hide' => [],
  29. 'seo_keys' => '',
  30. 'seo_desc' => '',
  31. 'seo_title' => '',
  32. 'seo_h1' => '',
  33. 'cats_view' => [],
  34. 'cats_hide' => [],
  35. 'max_count' => 0,
  36. 'target_controller' => '',
  37. 'list' => [
  38. 'show' => false,
  39. 'hide' => false,
  40. ],
  41. 'first_ds' => false,
  42. ];
  43. }
  44.  

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

Loadырь

Супер, спасибо, все работает ✌️

Только в моем случае поменял filterSubscribe на filterFriendsAndSubscribe

Буду разбираться с хуками.

#11 [ЕСТЬ РЕШЕНИЕ] Перенести набор "моих друзей" из ленты активности в другие ТК 31 января 2024 в 12:21

Ну же, коллективный разум, помогите разобраться 🙏 Почему фильтруется в ленте активности и не фильтруется в других ТК по этому методу? Не получает значение user_id ? 

#12 Вывод списка людей, на которых подписан пользователь 30 января 2024 в 10:31

Всем здравствуйте. Если мы в настройках социальности отключаем возможность добавлять пользователей в друзья, то остается только возможность подписаться\отписаться от пользователя. Собственно, пропадает страничка «друзья», а страница «подписки» отображает только подписки на обновления из компонента «подписки», но не людей на которых мы подписаны. Возможно ли как-то вывести на отдельной странице список пользователей, на которых подписан юзер? 

Спасибо.

Ostrova

На данный момент действую  так:  в файле system/controllers/users/actions/profile_friends.php убираю строки:

  1. if (!isset($this->tabs['friends'])){
  2. cmsCore::error404();
  3. }

Страница снова начинает отображаться. 

Далее меняю 

  1. $this->model->filterFriends($profile['id'])->disableDeleteFilter();

на 

  1. $this->model->filterFriendsAndSubscribe($profile['id'])->disableDeleteFilter();

и страница начинает выводит список аккаунтов на которых подписан пользователь. Поменять справа ссылки «Удалить из друзей Оставить в подписчиках» — уже мелочи. 

Вроде работает. Остается 3 вопроса. Чем такой метод чреват? Как изменить url страницы c friends на follows? И как снова включить отображение вкладки в профиле пользователя?

#13 [ЕСТЬ РЕШЕНИЕ] Перенести набор "моих друзей" из ленты активности в другие ТК 30 января 2024 в 10:21

 Ostrova, самому никак не сделать. Но подтянуть фильтры для друзей в какой-то из наборов сторонним компонентом мне видится как несложная задача. Обязательно попробую, как будет время.

Zau4man

Насколько я пытался разобраться, в фронте ленты активности фильтры выводит этот код

  1. public function getDatasets(){
  2.  
  3. $user = $this->cms_user;
  4.  
  5. $datasets = array();
  6.  
  7. // Все (новые)
  8. $datasets['all'] = array(
  9. 'name' => 'all',
  10. 'title' => LANG_ACTIVITY_DS_ALL,
  11. );
  12.  
  13. if ($user->is_logged){
  14. // Мои друзья
  15. $datasets['friends'] = array(
  16. 'name' => 'friends',
  17. 'title' => LANG_ACTIVITY_DS_FRIENDS,
  18. 'filter' => function($model) use($user){
  19. return $model->filterFriendsAndSubscribe($user->id);
  20. }
  21. );
  22. // Только мои
  23. $datasets['my'] = array(
  24. 'name' => 'my',
  25. 'title' => LANG_ACTIVITY_DS_MY,
  26. 'filter' => function($model) use($user){
  27. return $model->filterEqual('user_id', $user->id);
  28. }
  29. );
  30. }

Что хорошо — он фильтрует записи не только от друзей, но и от людей, на которых подписан пользователь, если функция добавления в друзья отключена в настройках социальности сайта. 

Что плохо — прямая подстановка этого кода в фронт вывода контента не дает нам тот же результат)) Значок дата-сета появляется, страница выводится, но фильтрация не происходит. 

#1 [ЕСТЬ РЕШЕНИЕ] Перенести набор "моих друзей" из ленты активности в другие ТК 30 января 2024 в 00:59

Здравствуйте. Кто подскажет, возможно ли перенести набор «Моих друзей» из ленты активности во все остальные типы контента? Чтобы фильтровать записи только от друзей. Спасибо.

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

Ребят, ну хоть кто-то дайте наводку, плиз. Хоть убей, не понимаю почему узкоспециализированные темы на форуме находят отклик, а действительно важные (а ведь фильтровать контент от друзей важно, ведь правда?) остаются без ответа. 

Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.