Роман
С нами с 01 декабря 2018; Место в рейтинге пользователей: #2281[YandexMaps2] Кейс. Точки из MIGX с кастомными иконками на фронт-энде
1 плагин - 3 лайвхака
Всем привет, порой работа менеджеров в админке modx — сущий ад. Сегодня поступил заказ с просьбой решить несколько проблем.
Проблема №1:
В tinyMCE все изображения которые вставляются имеют атрибуты width и height, и не имеют нужных классов
Проблема №2:
При загрузки файлов в каталог, где уже есть такое имя, файлы переписывают друг друга, необходимо было сделать добавление префикса для файлов с одинаковым именем
Проблема №3:
Иногда менеджеры грузят неприлично большие изображения, что непосредственно влияет и на скорость загрузки страницы и на общий размер файлов
Что делает плагин:
Проблема №1:
В tinyMCE все изображения которые вставляются имеют атрибуты width и height, и не имеют нужных классов
Проблема №2:
При загрузки файлов в каталог, где уже есть такое имя, файлы переписывают друг друга, необходимо было сделать добавление префикса для файлов с одинаковым именем
Проблема №3:
Иногда менеджеры грузят неприлично большие изображения, что непосредственно влияет и на скорость загрузки страницы и на общий размер файлов
Что делает плагин:
- Транслитерация файлов при загрузке, добавление префикса если файл дублируется
- Уменьшает загружаемое изображение до 1200px по ширине
- Из поля content достает все img, вырезает у них атрибуты width и height, вместо них подставляет класс img-thumbnail
fenom pdoResources default tpl
Вывожу сниппет
{'!pdoResources' | snippet: [
'parents' => $_modx->config['ds-id-events'],
'context' => $_modx->context.key,
'tpl' => '@FILE chunks/header_new_item.tpl',
'limit' => 3,
'depth' => 0,
'includeContent' => 1,
'sortby' => 'publishedon',
'sortdir' => 'ASC'
]}
Как сюда добавить — если результат пустой (default) выводить чанк header_new_item-default.tpl?
{'!pdoResources' | snippet: [
'parents' => $_modx->config['ds-id-events'],
'context' => $_modx->context.key,
'tpl' => '@FILE chunks/header_new_item.tpl',
'limit' => 3,
'depth' => 0,
'includeContent' => 1,
'sortby' => 'publishedon',
'sortdir' => 'ASC'
]}
Как сюда добавить — если результат пустой (default) выводить чанк header_new_item-default.tpl?
[YandexMaps2] 1.1.2 Полноценная работа с mFilter2 и кастомизация плагинами
- Добавлен новый метод работы с mFilter2, поддерживающий вывод результатов в текстовом виде
- Добавлено событие плагина ymOnLoadObjects с параметрами: array $data, array $objects, array $snippetProperties
- Добавлен параметр objectsInScope в сниппет YandexMaps2
- Добавлена системная настройка ym2_objects_in_scope для бек-энда
- Добавлены параметры defaultIconContent, defaultIconCaption и defaultBalloonContent в сниппет YandexMaps2
- Добавлен параметр scrollZoom в сниппет YandexMaps2
- Добавлен перехват ошибки из-за некорректного JSON в default.js
- Поправлено большинство конфликтов, возникающих из-за повторной загрузки jQuery
YandexMaps2 с напильником
На один сайт нужно яндекс карту совместимую с mFilter2. Приобрели YandexMaps2. Как оказалось, компонент не совсем подходит по наши нужды. Во первых, нужно в поиске чтоб высвечивались не только точки на карте, но и были ниже карты сами результаты поиска. Во вторых, нужно на карте выводить подпись и балун общие для всех точек. Так как это сделано на предыдущей версии сайта.
К счастью, нужный функционал оказалось не сложно допилить напильником. Под катом описание.
К счастью, нужный функционал оказалось не сложно допилить напильником. Под катом описание.
Синтаксис Fenom и экранирование ковычек
Всем привет! Уже 2 дня не могу понять, почему феном выдает двойную кавычку, вместо одинарной и закрывает мне весь вызов.
Вот кусок кода:
Помогите пожалуйста разобраться, могу скинуть весь код.
Вот кусок кода:
<div class="popup_scrollbar">
{var $frame_tpl} {ignore}
<div class="popup_product_item" data-product-id="{$id}" data-product-prices="{$_modx->runSnippet('!msop2GetOptionsWithPrices', ['id ' => $id,'key ' => 'size ','price '=> ($id | resource : 'price ')]) | toJSON} ">
<div class="_img"><img src="{$_pls['280x280 ']}" alt="{$pagetitle}" title="{$pagetitle}"></div>
<div class="_title">{$pagetitle}</div>
<div class="_title" style="font-size: 70%;font-style: italic;">Ширина: {$longtitle} см.</div>
<div class="_details">
<div class="_price"><span class="_price_num">{($id | resource : 'price ')}</span> {'ms2_frontend_currency ' | lexicon}</div>
<div class="_select text-right">+</div>
<div class="clear"></div>
</div>
</div>
{/ignore}
{/var}
{var $frames = $_modx->runSnippet('msProducts ', [
'parents ' => 38,
'sortby ' => 'price ',
'sortdir ' => 'ASC ',
'includeThumbs ' => '280x280 ',
'tpl ' => '@INLINE '~$frame_tpl,
'tpl_n3 ' => '@INLINE '~$frame_tpl~'<div class="clear"></div>', ])} {$frames}
</div>
В итоге на фронте, как HTML он выводится вот так:<div class="popup_scrollbar">
<div class="popup_product_item" data-product-id="{$id}" data-product-prices="{$_modx->runSnippet(" !msop2getoptionswithprices="" ',="" [="" 'id="" '=""> $id,
'key ' => 'size ',
'price ' => ($id | resource : 'price '),
]) | toJSON}'>
<div class="_img"><img src="{$_pls['280x280']}" alt="{$pagetitle}" title="{$pagetitle}"></div>
<div class="_title">{$pagetitle}</div>
<div class="_details">
<div class="_price"><span class="_price_num">{($id | resource : 'price')}</span> {'ms2_frontend_currency' | lexicon}</div>
<div class="_select text-right">+</div>
<div class="clear"></div>
</div>
</div>
<div class="popup_product_item" data-product-id="{$id}" data-product-prices="{$_modx->runSnippet(" !msop2getoptionswithprices="" ',="" [="" 'id="" '=""> $id,
'key ' => 'size ',
'price ' => ($id | resource : 'price '),
]) | toJSON}'>
<div class="_img"><img src="{$_pls['280x280']}" alt="{$pagetitle}" title="{$pagetitle}"></div>
<div class="_title">{$pagetitle}</div>
<div class="_details">
<div class="_price"><span class="_price_num">{($id | resource : 'price')}</span> {'ms2_frontend_currency' | lexicon}</div>
<div class="_select text-right">+</div>
<div class="clear"></div>
</div>
</div>
<div class="popup_product_item" data-product-id="{$id}" data-product-prices="{$_modx->runSnippet(" !msop2getoptionswithprices="" ',="" [="" 'id="" '=""> $id,
'key ' => 'size ',
'price ' => ($id | resource : 'price '),
]) | toJSON}'>
<div class="_img"><img src="{$_pls['280x280']}" alt="{$pagetitle}" title="{$pagetitle}"></div>
<div class="_title">{$pagetitle}</div>
<div class="_details">
<div class="_price"><span class="_price_num">{($id | resource : 'price')}</span> {'ms2_frontend_currency' | lexicon}</div>
<div class="_select text-right">+</div>
<div class="clear"></div>
</div>
</div>
<div class="clear"></div>
<div class="popup_product_item" data-product-id="{$id}" data-product-prices="{$_modx->runSnippet(" !msop2getoptionswithprices="" ',="" [="" 'id="" '=""> $id,
'key ' => 'size ',
'price ' => ($id | resource : 'price '),
]) | toJSON}'>
<div class="_img"><img src="{$_pls['280x280']}" alt="{$pagetitle}" title="{$pagetitle}"></div>
<div class="_title">{$pagetitle}</div>
<div class="_details">
<div class="_price"><span class="_price_num">{($id | resource : 'price')}</span> {'ms2_frontend_currency' | lexicon}</div>
<div class="_select text-right">+</div>
<div class="clear"></div>
</div>
</div>
</div>
То есть, тег закрывается намного раньше, но в ресурсе у меня нет там двойной кавычки, она одинарная)Помогите пожалуйста разобраться, могу скинуть весь код.
Как вывести checkbox в TicketForm?
Приветствую!
Есть tv — us_specialization. Тип ввода — checkbox.
В форме создания и редактирования тикета нужно вывести чекбоксы. Каждый чекбокс — отдельный ресурс.
Плюс нужно чтоб чекбоксы могли перезаписываться после сохранения на фронте.
Ума не приложу, как это можно сделать.
Кто с таким сталкивался? Подскажите!
Есть tv — us_specialization. Тип ввода — checkbox.
@EVAL
$output = $modx->runSnippet('pdoResources',array(
'context'=>$modx->resource->getOne('Context')->key,
'parents'=>'10',
'where'=>'{"published:=": 1}',
'tpl'=>'@INLINE [[+pagetitle]]==[[+id]]',
'outputSeparator'=>'||',
'sortby'=>'menuindex',
'sortdir'=>'ASC',
'limit'=>'0',
'showHidden'=>true));
return '||' . $output;
В parents 10 содержится список ресурсов.В форме создания и редактирования тикета нужно вывести чекбоксы. Каждый чекбокс — отдельный ресурс.
Плюс нужно чтоб чекбоксы могли перезаписываться после сохранения на фронте.
Ума не приложу, как это можно сделать.
Кто с таким сталкивался? Подскажите!
Ускоряем массовое обновление ресурсов в 3 раза
Массовая выгрузка ресурсов, не такая уж простая задача, как может показаться на первый взгляд. Много подводных камней, касающихся улучшения производительности скрипта. Особенно неприятно, когда тормозит скорость работы из-за функционала ядра MODX.
Так, например, я столкнулся с куском кода в ядре, который увеличивает время выгрузки большого кол-ва товаров в ~3 раза, выполняя одно и то же ресурсоёмкое действие каждый раз, когда скрипт запускает обновление ресурса через процессор modResourceUpdateProcessor.
Сразу оговорю тот момент, что я не считаю этот кусок кода в ядре лишним или вредным, нет! Я полагаю, что этот код при обновлении большого кол-ва ресурсов можно выполнить самостоятельно по окончании работы скрипта выгрузки.
Я говорю вот об этой строчке кода. Давайте попробуем разобраться, что же с ней не так!
Так, например, я столкнулся с куском кода в ядре, который увеличивает время выгрузки большого кол-ва товаров в ~3 раза, выполняя одно и то же ресурсоёмкое действие каждый раз, когда скрипт запускает обновление ресурса через процессор modResourceUpdateProcessor.
Сразу оговорю тот момент, что я не считаю этот кусок кода в ядре лишним или вредным, нет! Я полагаю, что этот код при обновлении большого кол-ва ресурсов можно выполнить самостоятельно по окончании работы скрипта выгрузки.
Я говорю вот об этой строчке кода. Давайте попробуем разобраться, что же с ней не так!
Оптимизация сайта на MODX
Мне дали задание оптимизировать сайт https://mebmart.by для https://developers.google.com/speed/pagespeed/insights/. Я с задачей оптимизации сталкиваюсь первый раз. К сожалению, инструкций по оптимизации сайта на MODX не нашел. Поэтому хочу сделать такую инструкцию. Надеюсь, в комментариях, более опытные разработчика подскажут что и как еще можно сделать.
Как заполнить элемент Description для 1 тыс ресурсов?
Доброго всем времени суток. Ребята подскажите как быть. Есть сайт около 1 тыс ресурсов у каждого ресурса отсутствует элемент description. Есть файл excel в котором есть url страницы и description для данной страницы. Задача как залить вс это дело в базу данных чтобы description присвоился правильно для каждой страницы.