Перейти к содержимому
Открыть в приложении

Удобный способ просмотра. Узнать больше.

Дизайн и модификация Invision Community

Полноэкранное приложение на главном экране с push-уведомлениями, медалями и многим другим.

Чтобы установить это приложение на iOS и iPadOS
  1. Нажмите иконку «Поделиться» в Safari
  2. Прокрутите меню и нажмите На экран «Домой».
  3. Нажмите Добавить в правом верхнем углу.
Чтобы установить это приложение на Android
  1. Нажмите меню из трёх точек (⋮) в правом верхнем углу браузера.
  2. Нажмите Добавить на главный экран или Установить приложение.
  3. Подтвердите, нажав Установить.
Русский язык для Invision Community 5

Простой способ вывода записей с фильтром по кастомному полю

Здравствуйте.

 

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

 

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

 

Ситуация такая же:

 

1. База данных Актеры (1) и поле типа "Database Relationship" с названием Films.

2. База данных Фильмы (2) и поле типа "Database Relationship" с названием Actor.

3. Знаю как вывести ID записи {$record->_id} в шаблоне record

 

Теперь нужно вывести на странице Актера фильмы в которых он участвовал. Логика такая:

 

1. Получить список записей (фильмов) из базы данных 2

2. Отсортировать те, у которых value в поле Actor содержит _id записи актера

3. Вывести результаты через шаблон record_row

 

Пытался адаптировать шаблон RecordFeed, но он сложнее те знаний, что у меня есть. Напрямую его перенести в шаблон record не получится.

Пытался адаптировать конструкцию, которая вывод количество записей в конкретной базе данных:

 

{expression="\IPS\Db::i()->select( 'COUNT(*)', 'cms_custom_database_2', array( 'record_future_date=? and record_approved=?', 0, 1 ) )->first()"}

 

Но методом тыка не получилось, а найти описание зачем нужный каждый элемент не получилось.

 

Шаманил с шаблоном:

 

{template="$table->rowsTemplate[1]" params="$table, $headers, $rows" object="$table->rowsTemplate[0]"}

 

Но понял, что в шаблоне record просто нет самой главной переменной $table, а как ее объявить не разобрался.

 

Кто может подсказать универсальную конструкцию, которая позволит вывести записи из базы данных CMS с фильтром с понятной мне логикой работы if/else в любом месте сайта, без привязке к объявляемым переменным.

 

IPB 4.3.6

 

Спасибо за любые подсказки, которые сэкономят время)

Рекомендованные сообщения

  • Автор

В шаблоне код, который вы прислали находится внутри {{if \IPS\Member::loggedIn()->member_id}}. Вот ссылка на страницу. Открыл временно контент для НЕ зарегистрированных. Спасибо за поддержку.

Изменено пользователем vinegredz

  • Автор

Действительно. Видимо разница в самих записях, которые должны отображаться. Думаю это финал. Большое спасибо!

  • Автор

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

Поправил код.

  • Автор

Спасибо, теперь окончательно корректно работает.

Изменено пользователем vinegredz

Создайте аккаунт или войдите в него для комментирования

Аккаунт

Навигация

Поиск

Поиск

Настроить push-уведомления браузера

Chrome (Android)
  1. Нажмите на иконку замка рядом с адресной строкой.
  2. Нажмите Права доступа -> Уведомления.
  3. Измените свои настройки.
Chrome (компьютер)
  1. Нажмите на иконку замка в адресной строке.
  2. Выберите Настройки сайта.
  3. Найдите Уведомления и измените свои настройки.