Bluetenstadt
С нами с 01 марта 2016; Место в рейтинге пользователей: #396Расширение любых таблиц MODX
В очередной раз понадобилось изменить таблицу сайта, менять которую не предусмотрено.
Что обычно люди делают в таких случаях? Верно, редактируют ядро или нужный компонент, и больше их не обновляют. Но ведь это неправильно, и можно решить вопрос иначе.
Пишем обычный плагин, выставляем для него событие OnMODXInit и меняем модель для нужных классов системы или дополнений. Например, я добавил id менеджера в заказ miniShop2:
Что обычно люди делают в таких случаях? Верно, редактируют ядро или нужный компонент, и больше их не обновляют. Но ведь это неправильно, и можно решить вопрос иначе.
Пишем обычный плагин, выставляем для него событие OnMODXInit и меняем модель для нужных классов системы или дополнений. Например, я добавил id менеджера в заказ miniShop2:
Вывод заказов для Minishop2
Давно использую MODX Revo, но в основном для небольших сайтов. А сейчас решил сделать на нём интернет-магазин. Захотелось сделать на сайте личный кабинет покупателя, где он сможет просматривать свои заказы. Начал искать и не нашёл ни одного решения этого вопроса (может плохо искал?!).
Странно. В итоге написал свой велосипед — сниппет и чанк в котором выводится содержимое.
Странно. В итоге написал свой велосипед — сниппет и чанк в котором выводится содержимое.
Включаем MemCache
MemCahed — это замечательная технология, которая позволяет кэшировать данные не на жесткий диск, а в оперативную память, которая быстрее во много-много раз. И если раньше MODX нужно было дружить с ней, то с версии 2.1 работа с MemCache уже включена в движок, и это нужно только активировать.
В принципе, операция не сложная, но есть один момент, из-за которого я и пишу этот топик.
Все операции, как обычно, написаны для сервера настроенного по этой инструкции.
В принципе, операция не сложная, но есть один момент, из-за которого я и пишу этот топик.
Все операции, как обычно, написаны для сервера настроенного по этой инструкции.
Получить номер заказа MS2
Всем привет!
Подскажите, откуда и на каком этапе можно получить номер заказа. Пробовал обращаться к объектам cart и order, ни тот ни другой номер заказа не содержат:
Номер пытаюсь получить плагином, который срабатывает на событие msOnCreateOrder. Что я упустил?
Заранее спасибо за ответы!
Подскажите, откуда и на каком этапе можно получить номер заказа. Пробовал обращаться к объектам cart и order, ни тот ни другой номер заказа не содержат:
$cart = $miniShop2->cart->get();
$order = $miniShop2->order->get();
Номер пытаюсь получить плагином, который срабатывает на событие msOnCreateOrder. Что я упустил?
Заранее спасибо за ответы!
Super MODx SEO-strict +ускоряем фронтенд
Михаил задал вопрос про канонизацию урлов в MODx.
Писал ему ответ, но понял, что он слишком большой. Поэтому переписал в статью.
Поехали.
Писал ему ответ, но понял, что он слишком большой. Поэтому переписал в статью.
Поехали.
Удаление старых аватарок Office
Недавно выяснилось, что в платном компоненте Office была недоработка, которая мешала удалению старых аватарок пользователей при редактировании профиля.
То есть, вы залили фотку, потом её удалили или заменили — а старая осталась на сервере. Ошибку я успешно поправил, обновление выпустил, но встал вопрос — а что делать с этими старыми аватарками? Они же место занимают, да и вообще, нехорошо как-то.
Поэтому я написал небольшой скрипт для удаления всех картинок из директории аватарок, которых нет в профилях пользователей. Заодно это может быть неплохим примером работы с файлами.
Скрипт опробован на этом сайте (modx.pro), проблем не было. Но всё равно: внимание, использовать скрипт только после полного бэкапа сайта! Как и любая операция с удалением файлов, этот скрипт потенциально опасен!
Я вас предупредил, претензии не принимаются.
То есть, вы залили фотку, потом её удалили или заменили — а старая осталась на сервере. Ошибку я успешно поправил, обновление выпустил, но встал вопрос — а что делать с этими старыми аватарками? Они же место занимают, да и вообще, нехорошо как-то.
Поэтому я написал небольшой скрипт для удаления всех картинок из директории аватарок, которых нет в профилях пользователей. Заодно это может быть неплохим примером работы с файлами.
Скрипт опробован на этом сайте (modx.pro), проблем не было. Но всё равно: внимание, использовать скрипт только после полного бэкапа сайта! Как и любая операция с удалением файлов, этот скрипт потенциально опасен!
Я вас предупредил, претензии не принимаются.
[Save2Page] Экспорт страниц в PDF
Позвольте Вашим пользователям скачивать Ваши статьи, новости, тексты в формате PDF !
Пакет Save2Page добавляет на сайт кнопки для быстрого сохранения текущей страницы в файл формата PDF и кнопку для отображения версии для печати.Пожалуйста, обратите внимание, что модуль плохо сохранять в PDF-файл сложный контент (сложная верстка, скрипты, HTML5 и др). Имейте ввиду, что модуль создан не для сохранения всего подряд, а для сохранения контента (статьи, новости, акции, услуги и товары и др).
Этот функционал часто можно встретить на сайтах с другими CMS, а теперь и на MODx Revolution! Благодаря этому решению Ваш пользователь сможет быстро скачать себе интересную статью, описание товара с картинками, новость и многое другое, что есть на Вашем сайте!
Рекомендуется к применению как на всем сайте, так и на отдельных страницах. Особенно полезным модуль окажется для сайта, на котором размещено значительное количество текстовой информации, таблиц и картинок. Пользователи не смогут не оценить этого!
На текущий момент доступно:
Модель безопасности в MODX
Модель безопасности в MODX не самая очевидная. Хотя в MODX присутствуют примитивы, присущие, например, модели безопасности SQL, их предназначение в MODX несколько отличается.
При настройке безопасности конечной целью является дать каждому пользователю соответвующий набор привилегий – разрешить ему совершать определенные действия в системе. Действия могут совершаться над различными объектами: страницами (resource), контекстами (context), чанками (chunk), переменными шаблонов (TV) и т.д. Сами действия могут быть очень разными, в простейшем случае это создание, просмотр, редактирование и удаление. Таким образом, задача настройки безопасности сводится к заданию отношений между пользователями, объектами и привилегиями.
При настройке безопасности конечной целью является дать каждому пользователю соответвующий набор привилегий – разрешить ему совершать определенные действия в системе. Действия могут совершаться над различными объектами: страницами (resource), контекстами (context), чанками (chunk), переменными шаблонов (TV) и т.д. Сами действия могут быть очень разными, в простейшем случае это создание, просмотр, редактирование и удаление. Таким образом, задача настройки безопасности сводится к заданию отношений между пользователями, объектами и привилегиями.
Не работает pdoSitemap
Помогите пожалуйста, все сделал по инструкции, но pdoSitemap почему то не работает. На странице Sitemap пишет следующее:
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"></urlset>
И больше ничего нету. Расширенные поля пользователей
Небольшая пошаговая инструкция, как научиться сохранять любые интересующие данные о юзере в специальное поле extended.
На самом деле, это никакой не секрет. Во многих объектах MODX есть специальное поле типа JSON, которое хранится в БД как текст, например, properties у modResource и extended у modUserProfile.
При работе с объектами xPDO, JSON текст из этих полей превращается в массивы. То есть, общий принцип выглядит так:
На самом деле, это никакой не секрет. Во многих объектах MODX есть специальное поле типа JSON, которое хранится в БД как текст, например, properties у modResource и extended у modUserProfile.
При работе с объектами xPDO, JSON текст из этих полей превращается в массивы. То есть, общий принцип выглядит так:
// id нужного пользователя
$user_id = 15;
// Получаем объект modUser
if ($user = $modx->getObject('modUser', $user_id)) {
// Получаем связанный с ним профиль пользователя
if ($profile = $user->getOne('Profile')) {
// Получаем специальное поле extended
$extended = $profile->get('extended');
// Добавляем новое значение
$extended['mykey'] = 'mydata';
// И сохраняем обратно в профиль
$profile->set('extended', $extended);
$profile->save();
}
}
Самое приятное, что эти данные вы можете не только просмотреть на странице пользователя, но и изменить.