Posted 8 апреля, 20204 yr comment_161507 Как вывести внутри самой записи список записей из категории другой базы? Почти похожее можно организовать блоком, выбрав там в плагинах Страница->Лента записи, и там дается выбор из какой категории выводить или из всех. Соответственно если применить такой метод то мне нужно будет уже внутри записи применять к этому блоку категорию из которой нужно вывести записи, что не возможно сделать, так как ни у кода {block='key'} нету дополнительных параметров, ни в шаблоне блока нельзя применять категорию. Как быть? Хочу что-то типа: Новость "Ccc" из категории "C1" находится в базе "C1", в ней нужно вывести список записей из категории "C2" базы "C2" и т.д. задать значение из какой категории будут выводиться эти записи нужно как-то кодом, внутри шаблона 'record', так как записей много метод вставки блока не подходит. Думал что-то типа такого: $categories[$cat_name]->records ($cat_name задать из доп. поля записи) и через foreach клипать записи, но не знаю даже как вызвать массив с категориями базы 😅 Link to comment https://ipbmafia.ru/topic/22062-spisok-zapisej-kategorii-v-zapisi/ Share on other sites Больше вариантов
8 апреля, 20204 yr comment_161508 Подозреваю, что должна помочь конструкция вида: {{$cats = \IPS\cms\Categories1::roots();}} Но это не точно 🙂 Link to comment https://ipbmafia.ru/topic/22062-spisok-zapisej-kategorii-v-zapisi/?&do=findComment&comment=161508 Share on other sites Больше вариантов
8 апреля, 20204 yr Author comment_161526 9 часов назад, Respected сказал: Подозреваю, что должна помочь конструкция вида: {{$cats = \IPS\cms\Categories1::roots();}} Но это не точно 🙂 не очень помогла конструкция, в ней вроде как только категории\субкатегории и кол-ва записей. Нужно просто вывести из заданной в переменной $cats категории список последних 5-10 записей Link to comment https://ipbmafia.ru/topic/22062-spisok-zapisej-kategorii-v-zapisi/?&do=findComment&comment=161526 Share on other sites Больше вариантов
9 апреля, 20204 yr Author comment_161536 Где находится код блока "Страница->Лента записи", в базе где-то или где? Link to comment https://ipbmafia.ru/topic/22062-spisok-zapisej-kategorii-v-zapisi/?&do=findComment&comment=161536 Share on other sites Больше вариантов
9 апреля, 20204 yr comment_161537 То есть имеется 3 категории: - игры (id 1) -обзоры (id 2) -новости (id 3) Надо вывести в категории ИГРЫ блок с новостями из категории ОБЗОРЫ, в категории ОБЗОРЫ вывести блок с новостями из категории НОВОСТИ Так? Link to comment https://ipbmafia.ru/topic/22062-spisok-zapisej-kategorii-v-zapisi/?&do=findComment&comment=161537 Share on other sites Больше вариантов
9 апреля, 20204 yr Author comment_161539 1 час назад, andros0789 сказал: То есть имеется 3 категории: - игры (id 1) -обзоры (id 2) -новости (id 3) Надо вывести в категории ИГРЫ блок с новостями из категории ОБЗОРЫ, в категории ОБЗОРЫ вывести блок с новостями из категории НОВОСТИ Так? Исходя из твоего примера у меня так: База (Новости) имеет категорию (Новости игры мафия), База (Игры) имеет категорию (Игры) и в ней записи, например запись "Мафия" и уже в этой записи отображается список с записями из базы (Новости) из категории (Новости игры мафия) Link to comment https://ipbmafia.ru/topic/22062-spisok-zapisej-kategorii-v-zapisi/?&do=findComment&comment=161539 Share on other sites Больше вариантов
10 апреля, 20204 yr Author comment_161557 Не понял почему $record->container()->_title нельзя ни с чем сравнить? {{if $record->container()->_title == '2'}} даже если $record->container()->_title будет равен 2 то все равно покажет if скажет что значения разные? wtf? Link to comment https://ipbmafia.ru/topic/22062-spisok-zapisej-kategorii-v-zapisi/?&do=findComment&comment=161557 Share on other sites Больше вариантов
10 апреля, 20204 yr Author comment_161562 Спустя несколько дней изучения исходного кода, исходных шаблонов, документации для разработчиков и изучения дополнительных знаний php, я все же собрал рабочий вариант кода. Как и предполагалось код маленький и достаточно простой, но не знание некоторых тонкостей не дало возможности его написания. Все работает внутри созданного шаблона блока "Лента записей" с пометкой "все категории" для базы из которой будем брать записи: <!-- Проверяем есть ли записи - пустая ли переменная $records --> {{if !empty( $records ) }} <h3 class='ipsWidget_title ipsType_reset'>{$title}</h3> <div class='ipsPad_half ipsWidget_inner'> <ul class='ipsDataList ipsDataList_reducedSpacing ipsContained_container'> <!-- Записываем путь до записи используя ID открытой базы --> {{$me_lastnews = '\IPS\cms\Records'.\IPS\cms\Databases\Dispatcher::i()->databaseId;}} <!-- Загружаем запись используя ID открытой записи--> {{$me_lastnews = $me_lastnews::load(\IPS\cms\Databases\Dispatcher::i()->recordId);}} <!-- В моем случае я получаю первое значение "Заголовок записи" из массива загруженной записи, по нему и буду искать категории нужных записей --> {{$first = current($me_lastnews);}} <!-- Перебираем массив всех записей --> {{foreach $records as $record}} <!-- Так как я не смог использовать имя категории записи на прямую (возможно из-за того, что используется protected класса), получаем доступ ко всем свойствам объектов массива со всеми записями --> {{$recordz = (array) $record;}} <!-- Перебираем новый массив --> {{foreach $recordz as $recordzz}} <!-- Ищем и выводим только те записи, которые имеют соответствие с $first - Заголовком открытой записи --> {{if $recordzz->name == $first.','}} <li class='ipsDataItem'> <div class='ipsDataItem_icon ipsPos_top'> {template="userPhoto" group="global" app="core" params="$record->author(), 'tiny'"} </div> <div class='ipsDataItem_main cWidgetComments'> <div class="ipsCommentCount ipsPos_right {{if ( $record->record_comments ) === 0}}ipsFaded{{endif}}" data-ipsTooltip title='{lang="num_replies" pluralize="$record->record_comments"}'>{expression="$record->record_comments"}</div> <div class='ipsType_break ipsContained'> <a href="{$record->url()->setQueryString( 'do', 'getLastComment' )}" title='{lang="view_this_cmsrecord" sprintf="\IPS\Member::loggedIn()->language()->addToStack( 'content_db_lang_sl_' . $record::$customDatabaseId, FALSE ), $record->_title"}' class='ipsDataItem_title'>{$record->_title}</a> </div> <p class='ipsType_reset ipsType_medium ipsType_blendLinks'> <span>{lang="byline_nodate" htmlsprintf="$record->author()->link()"}</span><br> <span class="ipsType_light">{datetime="$record->mapped('date')"}</span> </p> </div> </li> {{else}} <!-- Если нет совпадений, записываем 0 в переменную --> {{$error = 0;}} {{endif}} {{endforeach}} {{endforeach}} <!-- Если в переменной 0 выводим текст --> {{if $error == 0}}<p>Новостей по записи {$first} не найдено</p>{{endif}} {{endif}} Таким образом блок выводит заданное кол-во записей из категории равной заголовку открытой записи. Можно искать и не только по заголовку, но у меня уже голова болит 😅 Приму и ваши варианты) Link to comment https://ipbmafia.ru/topic/22062-spisok-zapisej-kategorii-v-zapisi/?&do=findComment&comment=161562 Share on other sites Больше вариантов
11 апреля, 20204 yr Author comment_161571 {{$records = \IPS\cms\Records1::load( 1 );}} Загружает 1 запись из базы данных, как загрузить все записи из базы данных? И как узнать название текущей категории в которой я нахожусь? Думал про \IPS\Request::i(); но максимум что от туда можно взять это url на котором я нахожусь Link to comment https://ipbmafia.ru/topic/22062-spisok-zapisej-kategorii-v-zapisi/?&do=findComment&comment=161571 Share on other sites Больше вариантов
12 апреля, 20204 yr Author comment_161574 Немного поняв механику понял, что блок ограничивает количество заранее загруженных записей полем "Количество для отображения", т.е. он загружает столько записей в массив, сколько указано в этом поле. Так же можно выполнить загрузку записей кодом {{$records = \IPS\cms\Records1::load( $id );}} - где $id - ид записи. Получается для того, чтобы найти нужную мне запись придется осуществить цикл for который будет перебирать этот $id до тех пор, пока не будет найдена нужная запись, а сам цикл будет перебирать записи заданное количество раз, например равное количеству записей имеющихся в базе. Так вот у меня теперь вопрос, если у меня в базе 100 или 1000 записей - не страшно. А если у меня в базе 100.000 записей, не повиснет ли страница от выполнения цикла 100.000 раз? Link to comment https://ipbmafia.ru/topic/22062-spisok-zapisej-kategorii-v-zapisi/?&do=findComment&comment=161574 Share on other sites Больше вариантов
12 апреля, 20204 yr comment_161575 Как выглядит URL адрес необходимой записи? Link to comment https://ipbmafia.ru/topic/22062-spisok-zapisej-kategorii-v-zapisi/?&do=findComment&comment=161575 Share on other sites Больше вариантов
12 апреля, 20204 yr Author comment_161577 2 минуты назад, Respected сказал: Как выглядит URL адрес необходимой записи? В одном варианте я ищу только 1 запись, URL имеет вид http://site.ru/films/all_films/nazvanie-filma-r100/ - для вывода в базе новостей, что-то по типу "по этой категории новостей найден фильм такой-то" и вывожу найденную запись. Во втором варианте я на странице записи этого фильма http://site.ru/films/all_films/nazvanie-filma-r100/ вывожу блок "последние новости фильма" где нужно перебрать все записи из базы новостей и найти нужные, там новости имеют и категории и под категории например: /news/horror/alt/nazvanie-novosti-r13/ Link to comment https://ipbmafia.ru/topic/22062-spisok-zapisej-kategorii-v-zapisi/?&do=findComment&comment=161577 Share on other sites Больше вариантов
12 апреля, 20204 yr comment_161578 У тебя же во всех урлах присутствует ID записи. \IPS\Request::i()->id как раз будет применим для этих целей. Link to comment https://ipbmafia.ru/topic/22062-spisok-zapisej-kategorii-v-zapisi/?&do=findComment&comment=161578 Share on other sites Больше вариантов
12 апреля, 20204 yr Author comment_161579 8 минут назад, Respected сказал: У тебя же во всех урлах присутствует ID записи. \IPS\Request::i()->id как раз будет применим для этих целей. как мне найти нужные записи только по ID? В первом варианте я вывожу запись используя цикл который сравнивает заголовок записи с названием категории где нужно вывести эту запись. Во втором варианте я сравниваю заголовок записи в которой нужно вывести записи "последние новости фильма" с названиями категорий новостей и вывожу найденные записи. Link to comment https://ipbmafia.ru/topic/22062-spisok-zapisej-kategorii-v-zapisi/?&do=findComment&comment=161579 Share on other sites Больше вариантов
12 апреля, 20204 yr comment_161580 {{$id = \IPS\Request::i()->id;}} {{$data = \IPS\Db::i()->select( '*', 'cms_custom_database_1', "primary_id_field={$id}" )->first();}} Link to comment https://ipbmafia.ru/topic/22062-spisok-zapisej-kategorii-v-zapisi/?&do=findComment&comment=161580 Share on other sites Больше вариантов
12 апреля, 20204 yr Author comment_161581 2 минуты назад, Respected сказал: {{$id = \IPS\Request::i()->id;}} {{$data = \IPS\Db::i()->select( '*', 'cms_custom_database_1', "primary_id_field={$id}" )->first();}} да это понятно, но все равно ничего не даст, извлекая ID находясь в записи я не смогу найти по этому ID другие записи нужные мне для вывода. Я просто хочу сделать блок "последние новости" который будет выводить записи из другой базы Link to comment https://ipbmafia.ru/topic/22062-spisok-zapisej-kategorii-v-zapisi/?&do=findComment&comment=161581 Share on other sites Больше вариантов
12 апреля, 20204 yr Author comment_161589 Что более затратно по ресурсам - загрузить 10.000 записей в массив и искать в нем искомую строку, или перебирать циклом 10.000 записей и искать совпадение строки? Link to comment https://ipbmafia.ru/topic/22062-spisok-zapisej-kategorii-v-zapisi/?&do=findComment&comment=161589 Share on other sites Больше вариантов
12 апреля, 20204 yr Author comment_161594 16 часов назад, Respected сказал: {{$id = \IPS\Request::i()->id;}} {{$data = \IPS\Db::i()->select( '*', 'cms_custom_database_1', "primary_id_field={$id}" )->first();}} Как мне осуществить перебор ID которые находятся в primary_id_field? т.е. получаю ID из primary_id_field первой строки таблицы cms_custom_database_1, если он мне подходит, оставляю, если нет, получают ID уже из второй строки? Link to comment https://ipbmafia.ru/topic/22062-spisok-zapisej-kategorii-v-zapisi/?&do=findComment&comment=161594 Share on other sites Больше вариантов
13 апреля, 20204 yr comment_161596 Я не понимаю какая стоит задача. Вывести первые несколько записей из категории или что? Link to comment https://ipbmafia.ru/topic/22062-spisok-zapisej-kategorii-v-zapisi/?&do=findComment&comment=161596 Share on other sites Больше вариантов
13 апреля, 20204 yr Author comment_161598 5 минут назад, Respected сказал: Я не понимаю какая стоит задача. Вывести первые несколько записей из категории или что? Имеется 2 базы: 1 База - Название: "Фильмы" в этой базе записи с фильмами, у записи заголовок = названию фильма, например запись с заголовком "Titanik" - в этой записи нужно сделать блок внизу записи "Последние новости фильма" в котором вывести 1-5 последних записей из базы 2 нужной категории. 2 База - Название: "Новости" в этой базе находятся записи с новостями фильмов. У категорий этой базы заголовки = названию заголовка записей из базы 1. Например есть категория с заголовком "Titanik" в этой категории записи новостей относятся к фильму "Titanik". Link to comment https://ipbmafia.ru/topic/22062-spisok-zapisej-kategorii-v-zapisi/?&do=findComment&comment=161598 Share on other sites Больше вариантов
13 апреля, 20204 yr comment_161599 Я бы сделал новости без категорий, а выборку новостей делать по тегам. Фильмов существует миллионы, ты же не будешь для каждого фильма делать отдельную категорию. У записей можно брать url таким образом: $record->record_dynamic_furl Link to comment https://ipbmafia.ru/topic/22062-spisok-zapisej-kategorii-v-zapisi/?&do=findComment&comment=161599 Share on other sites Больше вариантов
13 апреля, 20204 yr Author comment_161600 1 минуту назад, Respected сказал: Я бы сделал новости без категорий, а выборку новостей делать по тегам. Фильмов существует миллионы, ты же не будешь для каждого фильма делать отдельную категорию. что-то с этими всеми кодами совсем забыл про существование тегов, надо попробовать Link to comment https://ipbmafia.ru/topic/22062-spisok-zapisej-kategorii-v-zapisi/?&do=findComment&comment=161600 Share on other sites Больше вариантов
13 апреля, 20204 yr comment_161601 1 минуту назад, ZIKURIK сказал: что-то с этими всеми кодами совсем забыл про существование тегов, надо попробовать Самый оптимальный вариант в твоём случае. Ну или создать дополнительное поле - связь с базой данных. И при добавлении новости указывать фильм в поле. Так у новости и фильма появится явная связь. Link to comment https://ipbmafia.ru/topic/22062-spisok-zapisej-kategorii-v-zapisi/?&do=findComment&comment=161601 Share on other sites Больше вариантов
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.