Posted 12 марта, 20222 yr comment_178697 Итак, в продолжение ЭТОЙ темы. Задача для Страниц: 1. Если в статье есть загруженная в редакторе картинка вывести ее в качестве миниатюры на странице категории 2. Если статья без изображений,то вывести картинку-заглушку Решение для Страниц: код {{try{}} {{$attachId = \IPS\Db::i()->select( 'attachment_id', 'core_attachments_map', array( 'location_key=? AND id1=?', 'cms_Records2', $row->primary_id_field ) )->first();}} {{$location = \IPS\Db::i()->select( 'attach_location', 'core_attachments', array( 'attach_id=?', $attachId ) )->first();}} <img src="{file="$location" extension="core_Attachment"}" class="ipsImage" /> {{} catch( \Exception $ex ){}} <img class="ipsImage" src="путь к картинке-заглушке"> {{ } }} вставляем в нужное для вас место в файлах entry.php и recordRow.php. Внимание !!! для entry.php меняем $row->primary_id_field на $record->primary_id_field параметр 'cms_Records2' нужно смотреть в БД форума в таблице _core_attachments_map Таже самая задача для Форума 1. Вывод загруженной картинки из топика в качестве миниатюры 2. Так же и вывод картинки-заглушки. Решение для форума код {{try{}} {{$attachId = \IPS\Db::i()->select( 'attachment_id', 'core_attachments_map', array( 'location_key=? AND id2=?', 'forums_Forums', $row->topic_firstpost ) )->first();}} {{$location = \IPS\Db::i()->select( 'attach_location', 'core_attachments', array( 'attach_id=?', $attachId ) )->first();}} <img src="{file="$location" extension="core_Attachment"}" class="ipsImage" /> {{} catch( \Exception $ex ){}} <img class="ipsImage" src="путь к картинке-заглушке"> {{ } }} вставляем в нужное для вас место в файлах шаблонов forums/front/forums/ topicRow и topicRowSnnipet. Оформление и т.п уже на ваше усмотрение и т.д. Решение ,т.е сам код, признаюсь не мое, но работает безотказно.
13 марта, 20222 yr comment_178727 С кодом выше вроде как количество запросов к БД на странице может вырасти до ~100. Зачем обращаться к БД, когда можно получить данные о местоположении картинок из уже полученного массива, мне не понятно. Как вариант тогда дополню своим кодом с ленивой загрузкой изображений, код работает в любом из шаблонов (пусть код сам определит где он находится 😄 ) Страницы: entry и recordRow / Форумы: topicRow и topicRowSnnipet {{$location = $record != NULL ? $record : ($row->post != NULL ? $row->post : $row);}} {{$field_content = $row->post == NULL ? 'field_'.$location->database()->field_content : $row->post; $field_content = $row->post == NULL ? $location->$field_content : $field_content;}} {{if \preg_match( '#<fileStore.core_Attachment>\S+(?:jpg|jpeg|png|webp)#', $field_content, $image_url )}} {{$image_url = \str_replace('<fileStore.core_Attachment>', \IPS\File::getClass('core_Attachment')->baseUrl(), $image_url[0]);}} {{if settings.lazy_load_enabled}} <img class='ipsImage' src='{expression="\IPS\Text\Parser::blankImage()"}' data-src='{file="$image_url" extension="core_Attachment"}'> {{else}} <img class='ipsImage' src='{file="$image_url" extension="core_Attachment"}'> {{endif}} {{else}} <img class='ipsImage' src='ССЫЛКА_НА_ЗАГЛУШКУ'> {{endif}}
14 марта, 20222 yr Author comment_178749 ZIKURIK 22 часа назад, ZIKURIK сказал: С кодом выше вроде как количество запросов к БД на странице может вырасти до ~100. Зачем обращаться к БД, когда можно получить данные о местоположении картинок из уже полученного массива.. Я же сказал что код не мой,к тому же у меня с рнр очень тяжко,от слова совсем...😬
4 февраля, 20231 yr Author comment_189992 В 13.03.2022 в 20:58, Exception сказал: С кодом выше вроде как количество запросов к БД на странице может вырасти до ~100. Зачем обращаться к БД, когда можно получить данные о местоположении картинок из уже полученного массива, мне не понятно. Как вариант тогда дополню своим кодом с ленивой загрузкой изображений, код работает в любом из шаблонов (пусть код сам определит где он находится 😄 ) Страницы: entry и recordRow / Форумы: topicRow и topicRowSnnipet {{$location = $record != NULL ? $record : ($row->post != NULL ? $row->post : $row);}} {{$field_content = $row->post == NULL ? 'field_'.$location->database()->field_content : $row->post; $field_content = $row->post == NULL ? $location->$field_content : $field_content;}} {{if \preg_match( '#<fileStore.core_Attachment>\S+(?:jpg|jpeg|png|webp)#', $field_content, $image_url )}} {{$image_url = \str_replace('<fileStore.core_Attachment>', \IPS\File::getClass('core_Attachment')->baseUrl(), $image_url[0]);}} {{if settings.lazy_load_enabled}} <img class='ipsImage' src='{expression="\IPS\Text\Parser::blankImage()"}' data-src='{file="$image_url" extension="core_Attachment"}'> {{else}} <img class='ipsImage' src='{file="$image_url" extension="core_Attachment"}'> {{endif}} {{else}} <img class='ipsImage' src='ССЫЛКА_НА_ЗАГЛУШКУ'> {{endif}} Подскажите,как этот код подогнать для файла forums/front/global/row.html. Ошибку вызывают имено строки (после замены $row на $topic) {{$location = $record != NULL ? $record : ($row->post != NULL ? $row->post : $row);}} {{$field_content = $row->post == NULL ? 'field_'.$location->database()->field_content : $row->post; $field_content = $row->post == NULL ? $location->$field_content : $field_content;}}
3 декабря, 20231 yr comment_197908 Приложение FX Pages успешно справляется с этой задачей (вевысти картинку).
3 декабря, 20231 yr Author comment_197913 35 минут назад, Zero108 сказал: Приложение FX Pages успешно справляется с этой задачей (вевысти картинку). Немного не то. Этот код выводит картинку загруженную в сам текст поста/новости,а не ввиде загруженной миниатюры для поста/картинки.
3 декабря, 20231 yr comment_197915 Насколько я понял, выводится первая по списку картинка из загруженных в редактор. Edited 3 декабря, 20231 yr by Zero108
3 декабря, 20231 yr comment_197920 2 часа назад, Zero108 сказал: Насколько я понял, выводится первая по списку картинка из загруженных в редактор. Нету там подобного вывода
3 декабря, 20231 yr comment_197925 5 часов назад, Exception сказал: Нету там подобного вывода Каждый день пользуюсь.
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.