Роман Садоян

Роман Садоян

С нами с 26 июня 2015; Место в рейтинге пользователей: #79
Роман Садоян
03 мая 2019, 19:26
0
Не за что!
Обязательно попробуйте первую версию modExtra, попробуйте потом еще и Gitify, я по причине «исторически так сложилось» сижу на modExtra первой версии и вряд ли уже перейду на вторую или на Gitify.

Так же лучше брать первую версию у Василия, так как у первоисточника есть проблемы
Роман Садоян
03 мая 2019, 19:07
0
— С дампом намучаетесь — постоянно мержить изменения в БД, вместо кодинга плюс еще выгружать и импортировать нужно не забывать! Но каждому своё.
— Сначала урок по созданию Sendex от Василия, а потом тупо изучение исходного кода дополнений Василия =)
— Да у компонента есть свой класс, их может быть даже несколько. Какой-то общий функционал всех сниппетов лучше выносить в класс, а в снипетты делать своеобразными обертками над классом/классами. Посмотрите код того же pdoTools или Tickets — там всё как раз так и сделано. То есть — как раз таки нужно пользоваться классом/классами!
— Пересобирать компонент — да, нужно, можно настроить симлинки, в любое время можно пересобрать компонент, файлы не должны удалятся. Попробуйте воспроизвести на modstore.pro, но для начала попробуйте всё-таки старую версию, она попроще!
— Пересобирает свои чанки, сниппеты, плагины итд, но при желании можно залезть и в чужие (но лучше создавать свои), лезть в сниппеты чужого компонента это плохая идея, т.к. при обновлении его он перезапишет ваши изменения.
Я рекомендую не переписывать стандартные чанки того же minishop, а создавать свои дубли — с изменными значениями. Когда minishop был переписан на fenom — это очень помогло подсмотреть как там и сделать так же, а заодно и выучить fenom.
Да и сниппеты чаще всего имеют параметры, в которые передаются чанки, лучше создать свои и использовать их.
— Создать TV и прицепить её к шаблону можно по аналогии как создаются сниппеты, плагины, шаблоны — тыц
— С MIGX я не работал, врят ли буду, тут не подскажу.
— На счет openServer и Windows — подсказать не могу, все время использовал *nix для php разработки. Вполне вероятно, что ошибки связаны с путями.
Попробуйте сначала старую версию modExtra, с новой я не работал, при помощи старой собран minishop2/pdoTools.
Роман Садоян
03 мая 2019, 16:23
+2
расскажите поподробнее, как используя компонент для создания компонентов разрабатывать сайт.
Можно создать один компонент с названием сайта, можно использовать несколько компонентов, поделив логику на части.
Порядок таков:
1. устанавливаем модикс
2. Ставим стандартный набор дополнений через админку
3. клонируем modExtra, переименовываем компонент запустив соответствующий скрипт (удаляем связь с репозиторием, инициализируем свой)
4. Комитим изменения — пушим
Здесь уже в принципе может подключиться несколько разработчиков, но лучше все таки накидать базовый шаблон.
5. Пишем код шаблонов, чанков, сниппетов, плагинов итд, не забываем вписать их название в соответсвующий файл тут
6. git commit / pull / push (merge при необходимости) дальше всё в таком духе

Я воспринимаю компонент, как некий отдельный самостоятельный кусок кода, который решает конкретную задачу.
Да, можно разбивать компоненты под решение конкретной задачи — компонент поиска, компонент админки, но в любом случае это не такой компонент как во фронтенде, это скорее как composer package (просто в MODX они называются компонентами).

Как например modExtra поможет работать над функционалом того же минишопа?
Подключив minishop2 через $modx->getService() можно получить доступ к функциям/моделям minishop2.

Более детально можно посмотреть на примере Tickets — где используется функционал pdoTools.

Как modExtra может помочь к примеру с редактированием шаблона почтового сообщения, который отправляется покупателю при оформлении заказа в магазине? Ведь этот шаблон устанавливается вместе с компонентом minishop и представляет из себя только запись в базе?
Можно программно менять системные настройки, можно даже залезть в настройки minishop2 и поменять там всё. Вконце концов, можно сделать sql запрос в базу.

Или изменить чанки по умолчанию!
Тут уж как захотите, можете выбрать любой способ, что бы выстрелить себе в ногу =)

Шаблоны письма привязаны к статусам, а для статусов есть соответсвующая схема
по этому, сам объект статус можно получить через
$status = $modx->getObject('msOrderStatus'. $id)
, а после через
$object->set
поменять нужные поля, а именно
body_user
или
body_manager
Так в самом минишопе и происходит github

Если что-то не понятно, пишите, постарался раскрыть тему максимально коротко.
Роман Садоян
03 мая 2019, 11:09
+1
Процесс работы ничем не отличается от работы с yii2, у каждого разработчика своя dev версия сайта на локальной машине с modx и компонентом в корне сайта, где они вносят изменения в сниппеты, чанки, шаблоны, коммитят их, делают гит пулл (мержат если есть что мержить) и пушат.
Однако для того, что бы изменения отобразились на сайте — нужно компонент пересобирать, для этого есть `_build/build.transport.php` (но можно на dev машине через `ln -s` связать папку компонента с его же папкой в core/components, что бы не пересобирать каждый раз при изменении статичных сниппетов, чанков, шаблонов), но для системных настроек и ресурсов пересобирать всё-таки придется.
Релизить можно или загрузив zip файл из core/packages (который генерируется вызовом `_build/build.transport.php` ) в установщик пакетов.
Или же на боевом в корне сайта склонировать компонент и запустить билд.

Можно поднять свой репозиторий и обновлять на боевом через обновление компонента.

Как например modExtra поможет работать над функционалом того же минишопа?
Минишоп сам написан на базе modExtra. github, только на прошлой версии.

Как modExtra может помочь к примеру с редактированием шаблона почтового сообщения, который отправляется покупателю при оформлении заказа в магазине? Ведь этот шаблон устанавливается вместе с компонентом minishop и представляет из себя только запись в базе?
Вот этот шаблон

а вот как moExtra может помочь разрабатывать новый сайт причем одновременно двумя тремя разработчиками
modExtra позволяет создавать ресурсы, сниппеты, плагины, шаблоны, тв через код и держать код всего вышеперечисленного в файлах. А когда код в файлах, то тут гит в помощь.
Роман Садоян
03 мая 2019, 10:27
0
Я по ошибке принял ваш комментарий как ответ на мой
Роман Садоян
03 мая 2019, 09:05
+1
могу быть не прав, но в вашем случае это не поможет. Статичный ресурс все равно делает запись в базе данных, и даже если ваш напарник каким-то образом получит файл, то без синхронизации базы данных ничего не будет работать.
Да, тут вы не правы. Компонент при установке/сборке — создаст всё необходимое в БД.
Присмотритесь к modExtra, может быть это облегчит вам процесс разработки
Роман Садоян
02 мая 2019, 17:22
+1
Здравствуйте, создавать ресурсы, чанки, сниппеты, шаблоны через modExtra — делать свои собственные компоненты, которые потом на боевой сервер / stage сервер закидывать через собственный репозиторий или через загрузку пакета. (Можно даже собирать пакеты на боевом, а синхронизироваться через гит)
Держать весь код в статических шаблонах/чанках и не в коем случае в контенте ресурса. (но можно и в нем, но нужно будет подработать код modExtra)
Примеров тоже хватает — Tickets, pdoTools и так далее.
Роман Садоян
27 ноября 2017, 16:52
+1
Эту ошибку исправляет приведение к типу полей old_price, price и weight:
Вот в этот github.com/bezumkin/miniShop2/blob/master/core/components/minishop2/processors/mgr/product/create.class.php#L64 метод добавить это:
$this->object->set('old_price', (float)$this->object->get('old_price'));
        $this->object->set('price', (float)$this->object->get('price'));
        $this->object->set('weight', (float)$this->object->get('weight'));
Роман Садоян
27 ноября 2017, 16:35
+1
[2017-11-27 16:11:09] (ERROR @ /public_html/core/xpdo/om/xpdoobject.class.php : 1452) Error 22007 executing statement:
INSERT INTO `modx_ms2_products` (`id`, `article`, `price`, `old_price`, `weight`, `vendor`, `made_in`, `new`, `popular`, `favorite`, `tags`, `color`, `size`, `source`) VALUES (22, '0293', '7700', '', '', 1, '', 0, 0, 0, '[\"\"]', '[\"\"]', '[\"\"]', 3)
Array
(
    [0] => 22007
    [1] => 1366
    [2] => Incorrect decimal value: '' for column 'old_price' at row 1
)

PHP 7.1.12
mysql Ver 15.1 Distrib 10.2.10-MariaDB
MODX 2.6.0pl
minishop2 2.4.11-pl

Ошибка возникает при создании товара. При открытии уже созданного товара в полях цена, старая цена подставляются нули.

На mariadb 10.0 — всё работает.
Роман Садоян
31 марта 2017, 09:50
0
Есть трабл
Роман Садоян
31 декабря 2016, 16:42
+1
Кроме того на некоторых хостингах $users = users()->profile()->select('User.username, Profile.email')->where(['Profile.blocked'=>true])->get(); Таки конструкции будут ошибку выдавать в случае если попробуешь вывести массив.
Почему? Уже «без пяти минут» 2017 год, нужно сажать клиентов на правильные хостинги или переводить на VPS (при цене ~200 руб в месяц)
Роман Садоян
26 декабря 2016, 14:18
+4
Просто пилим доку ребята. По мере работы у нас возникают вопросы и порой ответ можно получить в каком-нибудь #global на английском, причем ответ может быть и по pdoTools/minishop2 или в #russian, как от Василия или Ивана, так и от других завсегдатаев. Если этого нет в документации, то нужно оформлять и делать PR.

P.S.: Это считается признаком хорошего тона, когда ты исправляешь даже элементарную опечатку, даже запятую, поставленную не в том месте. А от прочтения документации улучшается понимание работы компонентов.
P.P.S.: Нам, разработчикам, будет легче в последующем разрабатывать функционал читая подробную документацию.
Роман Садоян
23 декабря 2016, 09:58
0
weblr.ru/ Ваша студия?
Выглядит так, как будто вы выдаете себя за других. Какой-нибудь линк с обоих сайтов друг на друга не помешал бы.
Роман Садоян
20 декабря 2016, 23:04
0
Обсуждали как-то похожее в чате СПб Фронтэнд, возможно будет интересна эта статья habrahabr.ru/post/112953/
Роман Садоян
13 декабря 2016, 20:38
0
background-image: url("/assets/template/img/clicktocall/mobile.png");
Не забудьте подключить скрипт на странице
Роман Садоян
13 декабря 2016, 20:11
0
я сторонник абсолютных путей.
Посмотрите ошибки в консоли браузера, можете имитировать юзер агента через плагин Random Agent Spoofer
Роман Садоян
13 декабря 2016, 17:59
0
&useCustomCss=`1`
И подключайте в ручную стили.