Jump to content

Exception

Актив
  • Регистрация

Everything posted by Exception

  1. В одном варианте я ищу только 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/
  2. Немного поняв механику понял, что блок ограничивает количество заранее загруженных записей полем "Количество для отображения", т.е. он загружает столько записей в массив, сколько указано в этом поле. Так же можно выполнить загрузку записей кодом {{$records = \IPS\cms\Records1::load( $id );}} - где $id - ид записи. Получается для того, чтобы найти нужную мне запись придется осуществить цикл for который будет перебирать этот $id до тех пор, пока не будет найдена нужная запись, а сам цикл будет перебирать записи заданное количество раз, например равное количеству записей имеющихся в базе. Так вот у меня теперь вопрос, если у меня в базе 100 или 1000 записей - не страшно. А если у меня в базе 100.000 записей, не повиснет ли страница от выполнения цикла 100.000 раз?
  3. нужный объект задается при создании или я в любой шаблоне могу ссылаться на объект в нем?
  4. {{$records = \IPS\cms\Records1::load( 1 );}} Загружает 1 запись из базы данных, как загрузить все записи из базы данных? И как узнать название текущей категории в которой я нахожусь? Думал про \IPS\Request::i(); но максимум что от туда можно взять это url на котором я нахожусь
  5. Есть кто использует и шарит в приложении Automation Rules? Что-то я не понял как вывести данные из Custom Data Fields $data = $object->getRulesData( 'data_key' ); на какой объект ($object) ссылаться для вывода?
  6. Спустя несколько дней изучения исходного кода, исходных шаблонов, документации для разработчиков и изучения дополнительных знаний 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}} Таким образом блок выводит заданное кол-во записей из категории равной заголовку открытой записи. Можно искать и не только по заголовку, но у меня уже голова болит 😅 Приму и ваши варианты)
  7. Не понял почему $record->container()->_title нельзя ни с чем сравнить? {{if $record->container()->_title == '2'}} даже если $record->container()->_title будет равен 2 то все равно покажет if скажет что значения разные? wtf?
  8. Исходя из твоего примера у меня так: База (Новости) имеет категорию (Новости игры мафия), База (Игры) имеет категорию (Игры) и в ней записи, например запись "Мафия" и уже в этой записи отображается список с записями из базы (Новости) из категории (Новости игры мафия)
  9. Где находится код блока "Страница->Лента записи", в базе где-то или где?
  10. да все это прочитано, в примере Respected и конструкция более понятная. Главное что окно применил уже по назначения, лучше тут ответьте
  11. не очень помогла конструкция, в ней вроде как только категории\субкатегории и кол-ва записей. Нужно просто вывести из заданной в переменной $cats категории список последних 5-10 записей
  12. только по примеру Respected понял как более правильно использовать и применять опции к диалогу
  13. О чем я и говорил, лентяи из инвизиона не могут даже подробных гайдов запилить по своим инструментам. Спасибо, то что нужно 🤗
  14. по разметке дизайна что на скрине предполагаю что это 'breadcrumb' (Твой дизайн->core->front->global->breadcrumb)
  15. Как вывести внутри самой записи список записей из категории другой базы? Почти похожее можно организовать блоком, выбрав там в плагинах Страница->Лента записи, и там дается выбор из какой категории выводить или из всех. Соответственно если применить такой метод то мне нужно будет уже внутри записи применять к этому блоку категорию из которой нужно вывести записи, что не возможно сделать, так как ни у кода {block='key'} нету дополнительных параметров, ни в шаблоне блока нельзя применять категорию. Как быть? Хочу что-то типа: Новость "Ccc" из категории "C1" находится в базе "C1", в ней нужно вывести список записей из категории "C2" базы "C2" и т.д. задать значение из какой категории будут выводиться эти записи нужно как-то кодом, внутри шаблона 'record', так как записей много метод вставки блока не подходит. Думал что-то типа такого: $categories[$cat_name]->records ($cat_name задать из доп. поля записи) и через foreach клипать записи, но не знаю даже как вызвать массив с категориями базы 😅
  16. информации там конечно что-то маловато по диалогу, вызвать первым способом получилось, но для первого способа я так понял нужна доп. страница с контентом который уже будет показываться в окне, а вот второй способ не смог осилить в силу своих плохих знаний js. Нашел еще инфу по ips.ui.lightbox
  17. Есть способ вызвать модальное\диалоговое окно ips с своим содержимым? Или легче подключить сторонние?
  18. а где ошибка? вводим ключ, продолжаем установку 😅
  19. Кастомизация->Темы->(нужная тема)->Управление ресурсами и добавляем все нужные ресурсы - лучший вариант для таких файлов
  20. ладно сам решил, по консольной ошибке понял что js не находит нужный элемент, по логике скрипт может обращаться к шаблону комментария\ответа для поиска элемента, в итоге в шаблоне postContainter в коде отсутствовал класс ipsComment <article {{if $comment->author()->hasHighlightedReplies()}}data-memberGroup="{$comment->author()->member_group_id}" {{endif}} id='elComment_{$comment->$idField}' class='cPost ipsBox {{if $otherClasses}}{$otherClasses}{{endif}} ipsComment {{if ( settings.reputation_enabled and settings.reputation_highlight and $comment->reactionCount() >= settings.reputation_highlight ) OR $comment->isFeatured()}}ipsComment_popular{{endif}} ipsComment_parent ipsClearfix ipsClear ipsColumns ipsColumns_noSpacing ipsColumns_collapsePhone {{if $comment->author()->hasHighlightedReplies()}}ipsComment_highlighted{{endif}} {{if $comment->isIgnored()}}ipsHide{{endif}} {{if $comment->hidden() OR $item->hidden() === -2}}ipsModerated{{endif}}'>
  21. что, никто не знает почему могут сообщения не подгружаться сразу после их добавления в тему после обновления?
  22. омг, ошибка [[Template core/front/streams/streamItems is throwing an error. This theme may be out of date. Run the support tool in the AdminCP to restore the default theme.]] в "активность" исчезла сама собой волшебным чудом о_О ошибка с отправкой сообщений на форуме осталась. А вот при добавлении комментариев в cms все добавляется на лету, и комментарий показывается сразу после нажатия кнопки "отправить".
  23. ошибка в консоле браузера в недефолтной теме при нажатии кнопки в теме "Отправить" в теме пользователя Uncaught TypeError: Cannot read property 'top' of undefined at baseController.addToCommentFeed (root_front.js.ded3945f56472969fa05d78dcec7b971.js?v=4e52a1ea3c:111) at HTMLDocument.dispatch (root_library.js.90eda439b372f034076ea8a9b855c0a1.js?v=4e52a1ea3c:2) at HTMLDocument.r.handle (root_library.js.90eda439b372f034076ea8a9b855c0a1.js?v=4e52a1ea3c:2) at Object.trigger (root_library.js.90eda439b372f034076ea8a9b855c0a1.js?v=4e52a1ea3c:2) at HTMLDivElement.<anonymous> (root_library.js.90eda439b372f034076ea8a9b855c0a1.js?v=4e52a1ea3c:2) at Function.each (root_library.js.90eda439b372f034076ea8a9b855c0a1.js?v=4e52a1ea3c:2) at n.fn.init.each (root_library.js.90eda439b372f034076ea8a9b855c0a1.js?v=4e52a1ea3c:2) at n.fn.init.trigger (root_library.js.90eda439b372f034076ea8a9b855c0a1.js?v=4e52a1ea3c:2) at baseController.trigger (root_framework.js.dd78611621191f29402d074e66956cb7.js?v=4e52a1ea3c:31) at Object.<anonymous> (root_front.js.ded3945f56472969fa05d78dcec7b971.js?v=4e52a1ea3c:106) в дефолтной все нормально, не могу понять в чем проблема