Михаил
С нами с 08 марта 2013; Место в рейтинге пользователей: #14Upgrade PHP7 на Ubuntu 14.04
Для тех кто еще не обновил свои сервера на PHP7, настроенные по заметке Василия Наумкина.
Добавляем репозиторий
У меня все заработало. php5 при этом можно оставить (хотя может чего-нибудь вылезти).
В конфигурации php7-fpm меняем только сокет
Добавляем репозиторий
apt-get install software-properties-common
add-apt-repository ppa:ondrej/php
sudo apt-get update && apt-get purge php5-fpm && apt-get --purge autoremove && apt-get install php7.0-fpm php7.0-mysql php7.0-curl php7.0-gd php7.0-json php7.0-mcrypt php7.0-opcache php7.0-xml php7.0-mbstring
У меня все заработало. php5 при этом можно оставить (хотя может чего-нибудь вылезти).
В конфигурации php7-fpm меняем только сокет
listen = /var/run/php/php7-eco.sock
и удаляем закоментируемую строку #php_admin_value[disable_functions] = exec,passthru и т.д.
В конфиге nginx также меняем только сокетupstream backend-eco {server unix:/var/run/php/php7-eco.sock;}
После изменения конфигов не забываем рестартить сервисыservice nginx restart
service php7.0-fpm restart
Разные скидки в зависимости от количества товаров
Описан алгоритм для модуля интернет-магазина minishop2. Для других модулей алгоритм похож, но объекты отличаются.
Задача: сделать автоматический пересчет стоимости товаров в зависимости от общего количества товаров, находящихся в корзине.
Решение: пройти по всему массиву корзины и изменить цену товаров.
Задача: сделать автоматический пересчет стоимости товаров в зависимости от общего количества товаров, находящихся в корзине.
$cartArray = $cart->get(); // Массив товаров в корзине
$cartProduct = $cartArray[$key]; // Один товар в корзине
Решение: пройти по всему массиву корзины и изменить цену товаров.
Добавляем "Цена от" для категории miniShop2
В некоторых моих сайтах-магазинах я отображаю в списке категорий цену в формате «от XXX руб.», вот так:
Небольшая инструкция, как я это делаю:
Небольшая инструкция, как я это делаю:
Страница пользователя как на modx.pro
1 1 000
Реализация страницы пользователя как на mоdx.pro (https://modx.pro/users/bezumkin/). Не используются дополнения virtualPage и userProfile\userProfile2 из-за их глючности и конфликтов с другими дополнениями. Все протестировано на рабочем проекте.
Как выбрать данные из нескольких кастомных таблиц?
Мне нужно выбрать данные из нескольких кастомных таблиц через pdoResources, но не получается настроить Join-ы правильно.
Есть несколько кастомных таблиц с одинаковой структурой полей и с сгенерированными моделями.
Данные из одной таблицы выводятся легко:
Есть несколько кастомных таблиц с одинаковой структурой полей и с сгенерированными моделями.
Данные из одной таблицы выводятся легко:
[[!pdoResources?
&loadModels=`orders_external`
&class=`BazOrders1External`
&tpl=`tpl.orders.row`
&limit=`0`
&where=`{ 'publishedby':2 }`
]]
А вот как приджойнить сюда другие таблицы по тому же условию?msImportExport
Вторая версия пакета обсуждается в только в этом посте
Компонент предназначен для импорта экспорта товаров для miniShop2
Импорт
Импорт происходит из CSV файла. На основании ключевого поля (которое указывается в настройках и по умолчанию имеет значение «article») будет происходить либо добавление нового товара, либо его обновление.
При добавлении нового товара если не указан для него родитель, то товар будет добавлен в базовую категорию.
Компонент предназначен для импорта экспорта товаров для miniShop2
Импорт
Импорт происходит из CSV файла. На основании ключевого поля (которое указывается в настройках и по умолчанию имеет значение «article») будет происходить либо добавление нового товара, либо его обновление.
При добавлении нового товара если не указан для него родитель, то товар будет добавлен в базовую категорию.
Генерация PDF на основе данных с формы в MODX Revo
Довольно часто возникает необходимость генерировать pdf на основе данных с формы.
Ниже небольшое решение как это сделать если стоит пакет ExportPage
Ниже небольшое решение как это сделать если стоит пакет ExportPage
Расширение любых таблиц MODX
В очередной раз понадобилось изменить таблицу сайта, менять которую не предусмотрено.
Что обычно люди делают в таких случаях? Верно, редактируют ядро или нужный компонент, и больше их не обновляют. Но ведь это неправильно, и можно решить вопрос иначе.
Пишем обычный плагин, выставляем для него событие OnMODXInit и меняем модель для нужных классов системы или дополнений. Например, я добавил id менеджера в заказ miniShop2:
Что обычно люди делают в таких случаях? Верно, редактируют ядро или нужный компонент, и больше их не обновляют. Но ведь это неправильно, и можно решить вопрос иначе.
Пишем обычный плагин, выставляем для него событие OnMODXInit и меняем модель для нужных классов системы или дополнений. Например, я добавил id менеджера в заказ miniShop2:
ExtJs для новичков. Админка загрузилась. ч.1
В прошлой статье мы попытались понять как формируется интерфейс админки на ExtJs. Теперь давайте попробуем разобраться, что можно сделать интерфейсом, который нам нарисовал ExtJs.
В ExtJs за каждым элементом интерфейса (панель, окно, таблица, кнопка, элемент формы) стоит специальный объект, называемый компонентом. Он отвечает за управление элементом интерфейса — создание, отображение, скрытие, удаление. В админке MODX все элементы «являются» компонентами ExtJs, за исключением верхнего меню. Разницу можно увидеть, если заглянуть в исходный код страницы — у меню простая и привычная HTML структура (ul > li > a), а если глянем на элемент, созданный ExtJs, то увидим, что он обернут дополнительными тегами. Например, вот код кнопки тулбара дерева ресурсов
В ExtJs за каждым элементом интерфейса (панель, окно, таблица, кнопка, элемент формы) стоит специальный объект, называемый компонентом. Он отвечает за управление элементом интерфейса — создание, отображение, скрытие, удаление. В админке MODX все элементы «являются» компонентами ExtJs, за исключением верхнего меню. Разницу можно увидеть, если заглянуть в исходный код страницы — у меню простая и привычная HTML структура (ul > li > a), а если глянем на элемент, созданный ExtJs, то увидим, что он обернут дополнительными тегами. Например, вот код кнопки тулбара дерева ресурсов
<span unselectable="on" class="x-btn x-btn-small x-btn-icon-small-left tree-new-static-resource x-btn-noicon" id="ext-comp-1062" style="">
<em class="">
<button type="button" id="ext-gen139" class=" x-btn-text" style=""> </button>
</em>
</span>
Принцип загрузки админки на ExtJs. Для новичков
В этой статье хочу немного развеять тучи над механизмом работы админки, логика которой основана на ExtJs. Для людей, далеких от php и javascript, это будет набором непонятных слов. А вот те, кого уже не пугают такие термины как ООП, наследование, конструкторы, поймут о чем я тут буду говорить. Это не курс. Я просто попытаюсь систематизировать информацию для понимания общего принципа работы админки.
В сети достаточно много различной информации об ExtJs. Есть отличный курс Василия, по которому многие из нас учились делать свои дополнения. В нем он разбирает тему создания различных ExtJs объектов. Я не буду повторять, то что у него уже разобрано, а постараюсь на простом языке сделать короткую выжимку. Начнем.
В сети достаточно много различной информации об ExtJs. Есть отличный курс Василия, по которому многие из нас учились делать свои дополнения. В нем он разбирает тему создания различных ExtJs объектов. Я не буду повторять, то что у него уже разобрано, а постараюсь на простом языке сделать короткую выжимку. Начнем.