Перейти к публикации
View in the app

A better way to browse. Learn more.

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

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

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

Опубликовано:

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

 

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

 

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

 

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

 

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

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

Сейчас на странице 0

  • Нет пользователей, просматривающих эту страницу.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.