Олег Захаров

Олег Захаров

С нами с 14 октября 2017; Место в рейтинге пользователей: #65

Управления плагинам minishop2 или добавление полей в ms2_products через компонент [msAddField]

Все давно уже познакомились с методом добавления полей через плагины который написал Василий еще в каком то 17 или 2018 году, может раньше

Давно уже написал класс для управления полями через мой компонент который так и не представился миру msCml (синхронизация 1С с характеристикам msOptionsPrice2).

На этих выходных все таки дошли руки и собрал таки компонент msAddField (пока только на github, для самых маленьких))))): там же ссылка на яндекс диск)
Андрей Степаненко
13 октября 2020, 17:11
modx.pro
29
5 900
+22

[Решено] Подмена данных при формировании запросов xPDOQuery?

Пытаюсь из поля products взять массив со списком id и получить их pagetitle и добавить в Grid таблицу. Отдельно этот код работает в консоли:

$item = $this->modx->getObject('modExtraItem', 'modExtraItem.id');
        $productsList = $item->get('products');

        foreach($productsList as $product) {
            $p = $this->modx->getObject('modResource', $product);
            $id = $p->get('id');
            $c->innerJoin('modResource', 'modResource');
            $c->where(array(
                'modResource.id' => $id,
            ));
            $c->select(array($this->modx->getSelectColumns('modExtraItem', 'modExtraItem')));
            $c->select(array('modExtraItem.products as products_name'));
        }
SEQUEL.ONE
13 июня 2020, 21:13
modx.pro
2
1 430
0

Проблема с SuperBoxSelect

Всем привет. Пытаюсь в modExtra добавить поле со множественным выбором из списка товаров msProduct. Удалось прикрутить саму форму select и вывести продукты, но существует проблема с сохранением и выводом в поле сохранённых товаров.



Делаю следующим образом. В схему добавляю:

<field key="products" dbtype="text" phptype="json" null="true"/>
SEQUEL.ONE
12 июня 2020, 22:04
modx.pro
2
1 420
0

Lectoria 1st look, как я MODX изучал

Дисклеймер: Эта статья может быть полезной тем, кто только начал знакомство с MODX и ищет вводные темы. Статья носит исключительно информационный характер, упоминания всех ресурсов не преследуют рекламных целей, а не упоминание иных не является намеренным.

Я и MODX.
Забавно, что я оказался в числе бета-тестеров нового проекта Артема Зернова — lectoria.pro (курс: MODX: создание лендинга, быстрое погружение). Последним запрыгнул в группу из пяти человек. Моё знакомство с MODX началось с ютуб канала Артема- OpenModx (те самые двух часовые вебинары).
Dmitry
09 марта 2020, 17:24
modx.pro
6
2 362
+1

AjaxForm + Register

Нигде не нашел решения как сделать регистрацию из стандартного пакета Login через AjaxForm, ниже мое решение может кому пригодиться.

1 Размещаем сниппет AjaxForm где требуется (на странице, в попап окне и т.п.)

[[!AjaxForm?
    &snippet=`custRegister`
    &form=`tpl.register.form`
    &submitVar=`signup-btn`
    &activationResourceId=`9`
    &activationEmailTpl=`lgnActivateEmailTpl`
    &activationEmailSubject=`Thanks for Registering!`
    &usergroups=`Users`
    &usernameField=`email`
    &generatePassword=`1`
    &validate=`nospam:blank,
               fullname:required:minLength=^3^,
               email:required:email`
    &placeholderPrefix=`reg.`
]]
2 Создаем чанк tpl.register.form с формой

<form id="signup-form" action="[[~[[*id]]]]" method="post">
    <input type="hidden" name="nospam">
    <input type="hidden" name="password" value="11111111">
    <input type="text" name="fullname">
    <small class="alert-fullname"></small>
    <input type="email" name="email">
    <small class="alert-email"></small>
    <input type="submit" name="signup-btn" form="signup-form" value="Signup">
</form>
3 Создаем сниппет custRegister

<?php
$result = $modx->runSnippet('Register', $scriptProperties);
foreach($modx->placeholders as $key => $ph){
    if(strpos($key, $scriptProperties[placeholderPrefix].'error.') === 0) $placeholders[$key] = $ph;
}
if($modx->getPlaceholder($scriptProperties[placeholderPrefix].'validation_error')) return $AjaxForm->error('Form has errors', array('error' => $placeholders));
else return $AjaxForm->success('Form is valid');
4 На странице с формой добавляем скрипт, который заполнит алерты или сообщит об успехе или еще все что угодно

<script>
    $(document).on('af_complete', function(event, response){
        $.each(response.data.error, function(index, value){$(response.form).find('.alert-' + index.split(".").pop()).html(value);});
        response.message='';//jGrowl - off
    });
</script>
Вот и всё!
Рейтинга для размещения в разделе Решения не хватило, поэтому публикую здесь.
Greza
14 января 2020, 17:21
modx.pro
12
3 390
+2

Плюс и минус в каунте корзины MS2

Досточно простой вопрос, который мучает начинающих разработчиков. Решил поделиться решением, как сделать кнопки плюс и минус в корзине MS2. Что бы все было «по-фуншую»

Начнем c разметки. Я показываю на страндартной теме MS2. Вносим правки в чанк tpl.msCart

...
<td class="count">
<form method="post" class="ms2_form" role="form">
  <input type="hidden" name="key" value="{$product.key}"/>
  <div class="form-group">
    <div class="input-group input-group-sm qty">
      <span class="input-group-prepend">
      <span class="input-group-text minus input_count_action">-</span>
      </span>
      <input type="number" name="count" value="{$product.count}" class="form-control"/>
      <span class="input-group-append">
      <span class="input-group-text plus input_count_action">+</span>
      <span class="input-group-text">{'ms2_frontend_count_unit' | lexicon}</span>
      </span>
    </div>
      <button class="btn btn-sm" type="submit" name="ms2_action" value="cart/change">
      ↻</button>
  </div>
</form>
</td>
...
Олег Щавелев
02 декабря 2019, 02:08
modx.pro
15
3 656
+8

Выведение опций товара по категориям

Сниппет msProductOptions выводит товары общим массивом. В принципе, никто не запрещает в чанке вывода делать с этим массивом всё что угодно, в том числе и делить по категориям. Однако всё чаще поступает запрос от клиента не только вывести категории, но и соблюсти их сортировку.

Для этих целей мне пришлось msProductOptions переписать. Мой вариант сниппета воспроизводит запрос msProductData::loadOptions с сортировкой по полю rank категории, затем группирует все опции по категориям с соблюдением сортировки самих опций.
mngatoff
24 ноября 2019, 06:44
modx.pro
8
3 248
+6

LazyLoad - Ленивая загрузка изображений (PHP)

Компонент перед отдачей html на фронтенд, выборочно заменяет src на заглушку (на стороне сервера), а после того как загрузилась страница, с помощью js изображения автоматически подгружаться в зависимости от положения полосы прокрутки.



Андрей Степаненко
28 июня 2019, 11:28
modx.pro
6
7 114
+6

[Theme.Bootstrap] Новая версия с Bootstrap 4

Привет, друзья!

Наконец-то у меня дошли руки до обновления Theme.Bootstrap, который не менялся аж с 2017 года. Причина проста — если переводить его на Bootstrap 4, то нужно менять и стандартные чанки у кучи дополнений, а это долго.

В итоге, вместе с Theme.Bootstrap были обновлены и:
  • pdoTools
  • miniShop2 (помимо чанков вошли еще несколько правок, см. changelog)
  • mSearch2 (а здесь чанки даже на Fenom переписаны, ура!)
  • Office
Обновлённые дополнения теперь сразу из коробки предлагают адаптивные чанки, заточенные именно под Bootstrap 4.3.1 с flexbox. На Tickets у меня сил уже не хватило, может, кто другой сделает.
Василий Наумкин
17 марта 2019, 09:52
modx.pro
1
6 726
+25

Экскурс как можно использовать vuejs в место extjs и не запариться.

Это не статься в стиле «я написал торт/тудушку/ещечтото на rea extjs и vue и вот что у меня получилось». Это просто инструкция как можно без особых усилий писать на чем-то стороннем (в моем случае vue).
(внимание) Так как на этом ресурсе сидят довольно опытные ребята, я не буду рассказывать все в подробностях, как поставить ноду + сопутствующее окружение, что такое modExtra, почему vue а не react/angular/свойвариант и т.д…
В общем погнали.
srs
srs
31 декабря 2018, 12:09
modx.pro
11
4 537
+19