<IfModule pagespeed_module>
ModPagespeed on
# lazyload_images , inline_preview_images и inline_images используют маяк для сбора информации
# о переписанной странице, чтобы оптимизировать процесс перезаписи. Маяк - это POST запрос,
# отправленный обратно с помощью JavaScript, вставленного на страницу фильтром.
# Использование этого маяка включено по умолчанию, но его можно отключить с помощью:
ModPagespeedCriticalImagesBeaconEnabled false
##Ленивая загрузка плюшек
ModPagespeedEnableFilters lazyload_images
#Запись даннных в local_storage
ModPagespeedEnableFilters local_storage_cache
#Закинем все стили в head
ModPagespeedEnableFilters move_css_to_head
#Склеим стили по группам и сожмем
ModPagespeedEnableFilters combine_css
ModPagespeedEnableFilters rewrite_css
ModPagespeedEnableFilters rewrite_style_attributes
#Спрайты в БГ
ModPagespeedEnableFilters sprite_images
#Сожмем JS
ModPagespeedEnableFilters rewrite_javascript
ModPagespeedUseExperimentalJsMinifier on
ModPagespeedEnableFilters canonicalize_javascript_libraries
#Оптимизируем JPEG
ModPagespeedEnableFilters convert_jpeg_to_progressive
#Почистим лишние пробелы и комменты
ModPagespeedEnableFilters collapse_whitespace
ModPagespeedEnableFilters remove_comments
</IfModule>
Плюсы: не нужны всякие MiniFX, не нужно лазить постоянно по чанкам прописывать атрибуты к картинкам, нет левых JS
Вообще есть типо официальная документация, но как всегда мне лень её читать, по этому ищу по случаю, когда что то надо.
Так как всяческих приемов очень много как можно сделать, все пишут как хотят. На то он и JS там сложно чтото стандартизировать.
Но можно выделить такие направления для изучения в js как: события, переопределения любых функций, классов, методов в общем того что в php работает иначе. Когда понимаешь как они устроены то намного легче работать с ExtJs. Ну а за все это отвечает javascript, так что надо в первую очередь его изучать.
Как бы я уже прекрасно понимаю как работает даже тот же VueJs (так как реализовал на нем интернет-магазин в связке с minishop2 через RESTfull), да простые приложения легко пишутся, но капни в насправлении Хранилища, и тут засада начинается не меньше чем с ExtJs. И кстати по документации тоже не очень просто найти что то сложное. VueJs хорош но я наверное не стал бы его использовать для той же админки modx.
$(document).on('change', '.filter-class', function(e) {
//В примере все состояния фильтров хранятся в одной переменной куков 'filters_condition' в json-формате
var filters_condition = $.cookie('filters_condition');
//Смотрим, существует ли она уже, чтобы не затирать другие значения
if (typeof filters_condition !== 'undefined' && filters_condition !== null) {
var params = filters_condition != "" ? $.parseJSON(filters_condition) : {};
}
else {
var params = {};
}
var filter_condition;
if ($(this).is(':checked')) {
filter_condition = 'checked';
}
else {
filter_condition = 'not_checked';
}
//Уникальный атрибут, по которому будет находиться фильтр, в моем случае - name
//Если есть риск существования одинаковых значений инпутов/селекторов в разных формах, то можно переназначить на id
params[$(this).attr('name')] = current_condition;
$.cookie('filters_condition', JSON.stringify(params));
});
3. В чанках, отображающие фильтры в mFilter2 перехватываем нужные данные в куках, после чего выставляем результат:
Пример демонстрационный, для наибольшей наглядности. То же состояние $filters_condition в шаблоне лучше единожды распарсить из JSON-a, после чего записывать в плейсхолдер, чтобы в последствии данные дергать уже из него.
2) Вешаем на событие pdoToolsOnFenomInit
3) Вызываем файлики так:
У кого-то подсмотрел не помню точно. Но легко гуглится, сможете найти.
Пользуюсь много лет, ни разу не подвел.
Также если остался плагин дополнения то его удали вручную
Заменить на это
И в pdoPage параметру ajaxMode установить значение button.
Пример кода такой
Здесь по коду проверяем в каких группах состоит клиент. Если среди них есть скидочная группа — то подменяем price на нужное вам число
gist.github.com/ig0r74/359ad8a5f231a8dc6e0dd7a1b17ec430
Устанавливаем сей модуль www.modpagespeed.com/
В .htaccess прописываем
Вот мой готовый вариант .htaccess
Плюсы: не нужны всякие MiniFX, не нужно лазить постоянно по чанкам прописывать атрибуты к картинкам, нет левых JS
Пару ссылок
https://metanit.com/web/extjs/12.3.php
https://ilyaut.ru/extjs/
https://modx.ws/extjs-urok-ext-js-script-modx-revolution
http://bustep.ru/modx/extjs/
Вообще есть типо официальная документация, но как всегда мне лень её читать, по этому ищу по случаю, когда что то надо.
Так как всяческих приемов очень много как можно сделать, все пишут как хотят. На то он и JS там сложно чтото стандартизировать.
Но можно выделить такие направления для изучения в js как: события, переопределения любых функций, классов, методов в общем того что в php работает иначе. Когда понимаешь как они устроены то намного легче работать с ExtJs. Ну а за все это отвечает javascript, так что надо в первую очередь его изучать.
Как бы я уже прекрасно понимаю как работает даже тот же VueJs (так как реализовал на нем интернет-магазин в связке с minishop2 через RESTfull), да простые приложения легко пишутся, но капни в насправлении Хранилища, и тут засада начинается не меньше чем с ExtJs. И кстати по документации тоже не очень просто найти что то сложное. VueJs хорош но я наверное не стал бы его использовать для той же админки modx.
2. В js создается событие на изменение всех или только нужных вам фильтров, в котором будет запоминаться их состояние, примерно таким образом:
3. В чанках, отображающие фильтры в mFilter2 перехватываем нужные данные в куках, после чего выставляем результат:
Пример демонстрационный, для наибольшей наглядности. То же состояние $filters_condition в шаблоне лучше единожды распарсить из JSON-a, после чего записывать в плейсхолдер, чтобы в последствии данные дергать уже из него.
:) Нет же, я проверил — с процессором работает, поэтому решил реализовать через процессор.