Andrey
Пишу календарик постов. Ну типа текущий месяц и там даты-ссылки на /2022/02/18
Сам календарь выводится сниппетом, ибо сайт частично на чистых "контроллерах",частично на runSnippet DocLister.
А вот роуты уже на ларавелевской обработке. Итого получается монстр, редактировать который приходится в трех местах. Сорян, кому потом достанется)
Vitaliy
Serguei
А я вот тоже сейчас сайт на контроллерах делаю. Пока получается.
Но столкнулся с такой фишкой, что надо из изображений генерировать превьюшки.
И генерирую их тоже в контроллере. И получается, что в контроллер надо передавать размеры превьюшек.
Получается, что в контроллере есть данные о верстке. (Пока что только размеры, но это тоже не есть хорошо).
Как-то из блейда или какой-то конфигурации шаблона можно эти параметры контролеру прокинуть, чтоб он просто их откуда-то забирал и геренировал их "так как задали в верстке"?
Pathologic
🤦♂️
Am
Обычно этим занимается "конфиг".
Serguei
То есть у меня в контроллере сейчас получаются вот такие вещи:
foreach($this->data['products'] as &$prod)
{
$prod['thumb'] = evo()->runSnippet('phpthumb',array('input' => $prod['img'], 'options' => 'w=350,h=350,zc=1'));
}
И получается, что там есть это число 350.
И если к примеру я захочу другой размер картинки в верстке, то мне надо лезть в контроллер и это 350 менять например на 450.
Мне не хватает каго-то "конфига для шаблона" или не знаю, как это еще назвать.
Am
Все же хорошо бы хотя бы одним глазком прочитать про шаблон проектирования ADR.
Am
В рамках Эво, наверное, может быть удобным задать через те же ТВ или какой-нить clientsettings настройки для разных шаблонов превью (раз они нужны для доступ и не могут быть жестко заданы для всего сайта) и получать эти "данные конфига" в зависимости от шаблона считывая привязку ТВ.
Ох. ((%
Andrey
Чисто на дурака решение, не знаю, сработает или нет.
Делаем модельку для выводимых ресурсов. Делаем там метод типа getImage($options) где генерим что-то, исходя из опций.
Отдаём данные из контроллера как модель типа Material::where()->get();
В шаблоне просим $material->getImage([fieldImage,320,240,'jpg']);
Serguei
ТВ же разные значения для каждого ресурса будут иметь. А мне надо именно для всех ресурсов одного шаблона задать параметры.
То есть я собрал сайт, к примеру все хорошо. А потом заказчик говорит, мол, давай картинки побольше сделаем. И чтобы я эту логику менял не в контроллере, а в каком-то конфиге, который где-то поближе к верстке находится.
Andrey
Ну это же и будет в верстке
Am
ClientSettings насколько понимаю подойдет. Или как он там назывался правильно, когда выносятся настройки.
Andrey
Хотя хз, что-то мне уже самому идея не очень. Не знаю почему.
Serguei
В шаблоне просим $material->getImage([fieldImage,320,240,'jpg']);
Ну это почти то же самое, что там php ставить и phpthumb вызвать
Andrey
Ну условия были какие? Формат задать в верстке, вот, пжалста
Serguei
Serguei
положить ,что-ли, какой-нибудь ini-файл в папку с виюхой, и контроллером его проверять?
EVO bot Лёшка
Andrey
Порнография имхо. Потом другой человек будет до седых мудей искать и воо,ще офигевать от .ini файлов)
Am
В рамках это, конечно, с .ini будет печаль. Все ждут что в админке будет выводится данные для настройки.
Andrey
Да черт знает. Размеры изображений это не то, с чем надо играться пользователю.
Нет, ну если логика сайта предполагает частое изменение... Хотя вот так сходу не могу даже предположить зачем.
Andrey
А вариант с методом плох?
Serguei
Serguei
Так размер идеологически не правильно править отдельно от верстки. Это должно быть что ли параметром верстки каким-то, или как это назвать, не знаю..
Am
Вы ж про превью говорили.
Andrey
Нечто похожее пишу сейчас. Правда, Лара.
Там 1 изображение используется в шаблоне в 5 местах в разных размерах.
В og:image, в превью с srcset (3 штуки) и ещё не помню где. Сделал вот так, как писал — задаю размеры и опции прямо в вью
Am
В верстку уже готовые превью передаются и/или указывается размер в верстке через теги. В данном случае в верстку нужно передать что-то типа $img_w и/или $img_h не говоря уже о адаптации блока.
Andrey
<picture>
<source media="(min-width:760px)" srcset="{{$post->showImage(768)}}">
<source media="(max-width:480px)" srcset="{{$post->showImage(480)}}">
<img src="{{ $post->showImage() }}" alt="{{ $post->introtext }}">
</picture>
Andrey
Типа
Serguei
Вот представим идеальную картину - к примеру, сайт попал в команду, где один человек занимается только версткой, и он ничего не знает о том, как в эту верстку данные попадают, а другой человек занимается данные, и он ничего не знает, какие там размеры у элементов верстки и как данные в ней будут использоваться.
По идее тому, кто занимается версткой, тоже незачем какие-то данные в базе данных хранить. Но ему надо как-то скомандовать контроллеру подготовить превьюшки всех требуемых размеров.
Andrey
Так блин как раз решение выше подходит)
Am
Andrey
А у меня 1 вью для этих постов, он везде инклюдится на сайте. Так что в 1 месте поправил и збс
Am
(:
Serguei
Andrey
Ну так и все по сути)
Andrey
Если же Доклистер, то в него можно передавать кастомные свои параметры и в prepare их ловить.
Serguei
Ну как бы да, но чуток избыточный размер картинок получится, если их на все случаи жизни заготавливать.
Andrey
ПОчему? Какой надо, тот вызываешь.
Serguei
Ну а в папке кеша генерируются они все.
Andrey
Что-то я нить беседы видимо потерял. Надо 3 изображения — делай 3. Откуда лишние??
Serguei
А сделать их чуть крупнее захочется если?
Maxim
Axenia
Tresk (0) увеличил карму remote_adm (4972.98)
Pathologic
какой-то херней занимаетесь
Pathologic
в шаблоне просто выводить что надо, вот и все
Pathologic
типа там {{ image|phpthumb('w=100&h=100') }}
Pathologic
ну это в твиге
Anton
при авторизации в админке ломается верстка на сайте. Видимо bootstrap конфликтует. Есть вариант отключить этот функционал на страницах сайта?
Если быть точным, то верхнее меню админа
Andrey
Сергей
Pathologic
Anton
Сергей
Сергей
За ним следом и sourceFile можно отключить
Artem
ТАкой вопрос, сайт на эво 2.0 ругается на плагин
Error : The EvolutionCMS\Core::setPlaceholders() method is undefined
Artem
На вот это какая понял
$_COOKIE[$field] = $_COOKIE[preg_replace("/_i$/","",$field)];
$modx->setPlaceholders(array(
$field => $_COOKIE[$field],
),'ref.');
Artem
как исправить?
Alexey
Alexey
но на самом деле - неправильная реализация.
Artem
Andrey
Дамп $modx сделай уже. Может его там нет вообще.
Artem
Сергей
Aliaksandr
setPlaceholderSSS
Раньше это вроде ставило сразу пачку плейсхолдеров из массива с определенным префиксом, поломали может😁
Сергей
Сергей
Сергей
1.4 теперь на пыхе 8
Am
Все, можно не переходить на Эво 3.х. (:
Am
Вертаем всё в зад!
Aliaksandr
ставило и сейчас ставит, но только в доклистере
Не, мог и модх, сейчас там toPlaceholders но возможно был когда-то и set )) https://github.com/evolution-cms/evolution/blob/1.4.x/manager/includes/document.parser.class.inc.php#L5003