Олег Щавелев

Олег Щавелев

С нами с 20 января 2017; Место в рейтинге пользователей: #28

Добавление своих полей в форму заказа [обновлено]

При разработке нескольких проектов, возникала необходимость в получении дополнительных данных от покупателей, а полей в miniShop2 ограниченное количество. Поиск готового решения результата не дал, поэтому предлагаю свой вариант.

Решение обновлено, убраны правки исходного кода минишопа, теперь при обновлении ничего не затрется, изменены ключи у полей

Решалось это следующим образом:
1. Добавлялись необходимые поля, для примера взяты тип плательщика, название организации и инн.
2. Добавлялся плагин срабатывающий при сохранении заказа и при подключении js минишопа в админке.
3. Редактировались настройки и записи словарей.

Более подробно далее
Дмитрий Меркурьев
11 октября 2016, 16:38
modx.pro
97
19 101
+11

Манипулирование ExtJs на лету через процессор

Оказалось проблема насущная:
Скинемся с миру по нитке решениями)
Например:
Создание textfield на лету при создание(редактирование) записи, т.е. При нажатии Добавить, всплывает окно в котором на лету созданные textfield, к примеру 3 штуки, а если это UPDATE то и их значение соответственно, помимо этого есть поля не созданные на лету.
При сохранение отправляется в процессор, в котором поля созданные на лету колбасятся в JSON и записыватся в 1 колонку БД.

Вроде ничего такого сложного, но встает проблема запроса получения массива полей на лету и передача его в вызов Всплывающего окна. Ajax запрос отрабатывает позже чем весь код, поэтому console.log(fieldsArr + ' — массив полей') не выводит массив или return не срабатывает.

Константин Ильин
04 октября 2016, 09:57
modx.pro
3
3 174
+1

Как выбрать ЛУЧШИЕ где комментов >= 10

Вывожу лучшие тикеты через mFilter2 с сортировкой по количеству комментариев примерно так (убрал всё лишнее чтобы не мешало):
{$_modx->runSnippet('!mFilter2', [
    'element' => 'getTickets',
    'sortdir' => 'DESC',
    'sortby' => 'comments',
    'leftJoin' => '{
		"Thread":{ "class":"TicketThread","on":"Thread.resource=Ticket.id" },
		"Comment":{ "class":"TicketComment","on":"Comment.thread=Thread.id AND Comment.parent = \'0\'" }
	}',
    'select' => '{
		"Comment":"COUNT(DISTINCT Comment.id) as comments"
	}',
])}

Есть 2 вопроса:
Василий Столейков
27 июня 2016, 06:00
modx.pro
4
1 995
0

MIGX getImageList и Fenom

Есть такой вызов
{$_modx->runSnippet('!getImageList', [
	'tvname' => 'tv_product_main_gallery',
	'tpl' => '@CODE: <some_chunk>'
])}


По поводу @CODE и fenom, — работает феном в чанке относительно самого ресурса. То есть, когда я делаю так
'tpl' => '@CODE: [[+image]]'
Работает.

Когда я пишу
'tpl' => '@CODE: {$image}'
То не работает.

Когда я пишу
'tpl' => '@CODE: {$_modx->resource.myMIGXtv}'

То работает, получаю содержимое переменной. Весь массив значений.

Вопрос, как использовать феном, чтобы не писать свой парсер переменной и не использовать классический вызов через квадратные скобки, а воспользоваться {$image}?
Paul B.
07 июня 2016, 13:54
modx.pro
18
12 315
0

Делаем колбеки miniShop2 для всех

Всем привет! Так как в miniShop2 есть список колбеков для того, чтобы на определённые действия, совершаемые компонентом, можно было повесить свой код и, тем самым, дополнить работу магазина, то многие разработчики дополнений используют их в своём коде. Я уж не говорю о вебмастерах, которые используют этот инструмент для решения определённых нужд в своих сайтах.

В чём проблема?

В связи с этим получается проблема. Колбеков мало, а желающих воспользоваться ими — много. Я уже не раз сталкивался с тем, что некоторые компоненты из Modstore не могут работать вместе, т.к. используют одни и те же колбеки, на одних и тех же страницах.
Проблема в том, что код одного компонента, использующего, например miniShop2.Callbacks.Order.getcost, пересекается с другим кодом, другого компонента, использующего этот же колбек. Получается конфликт, который я для себя, в своих пакетах, решаю так:
Павел Гвоздь
22 мая 2016, 00:53
modx.pro
13
6 193
+3

AjaxForm class error

Обнаружил при использовании в форме выпадающего списка select следующий баг.

Когда у select есть класс error, который добавляется при ошибке, то при отправлении формы все option (варианты выбора) удаляются. Это происходит тут:
form.find('.error').html('');
А ведь нужно очищять html только у тега, в котором текст ошибки.

У себя я сделал следующие изменения:
Олег Песчанский
14 апреля 2016, 09:49
modx.pro
1
1 304
0

Импорт/экспорт полей обычных ресурсов

Здравствуйте!
Подскажите не программисту: — на сайт-каталог требуется модуль для быстрого обновления полей.

Задачи:
— менять только поля у готовых ресурсов
— НЕ требуется создавать новых ресурсов
— работа только с простыми ресурсами (не MS2)

Из найденного:
msImportExport — работает только с MS2
modImporter — сложно, дорого, требует постоянной поддержки
catalogfill — вроде как давно не поддерживается

Возник вопрос — чем пользоваться, может кто подскажет?
catalogfill живой?
Илья
08 апреля 2016, 07:16
modx.pro
1
1 421
0

Фильтрация пользователей с помощью mFilter2

Делая очередной тематический каталог организаций, где каждый пользователь это отдельная организация, которая размещает информацию о себе и своих услугах, я обычно применял классическое решение, когда при регистрации пользователя с помощью Office, создается отдельный ресурс и тогда можно без проблем просматривать карточки (ресурсы) организаций, осуществлять поиск и фильтровать их по разным параметрам используя готовые коробочные решения mSearch2 и mFilter2.

Плюсов тут несколько, в основном это возможность применять классические решения, ничего не допиливая. Но есть и минусы — приходится писать плагины, которые отслеживают изменение профиля пользователя и дублируют эти изменения в ресурс, определенные сложности модерирования, проблемы со скоростью сохранения и вывода информации и т.д.

Я решил заморочиться и сделал решение без дублирования информации, на основе таблицы пользователей.
Николай Савин
03 апреля 2016, 08:04
modx.pro
17
4 494
+4

Вывести только тикеты с рейтингом больше нуля

1 300
Итак, если вам нужно вывести тикеты с рейтингом выше ноля, то эту задачу можно решить двумя способами. Первый для высоконагруженных проектов, второй для менее нагруженных.

Первый вариант (относительно сложный в реализации, но выигрывает по скорости при большой выборке ресурсов):

  1. Заходите в phpmyadmin.
  2. Выбираете таблицу modx_site_content
  3. — Переходите в закладку «структура»
  4. — Внизу открывшегося окна нажимаете ОК (Добавить 1 поле в конец таблицы)
    Имя: ticket_rating
    Тип: int
    Длина/значение: 10
    По умолчанию: Как определено (0)
    Null: галочка
  5. Сохраняем
Таким способом мы расширили дефолтную таблицу MODX'a со списком ресурсов.
Wassi Wassinen
26 февраля 2016, 03:31
modx.pro
10
3 648
+2

Рейтинг пользователя - общий, тикеты и комментарии

1 500
Выводим рейтинг пользователя как на modx.pro joxi.ru/eAOYVYPI476nQm

Т.е., выводим рейтинг общий, рейтинг за тикеты (Tickets) и рейтинг за комментарии.

1. Создаем сниппет getAuthorRating:

<?php
$userId = intval($userId);
if ($author = $modx->getObject('TicketAuthor',$userId)) $modx->setPlaceholders($author->toArray());
return;
2. Там где нужно вывести рейтинг:

[[!getAuthorRating? &userId=`[[+ID_пользователя]]`]]

<p>Рейтинг [[+rating]]</p>
<p>Рейтинг тикетов + [[+votes_tickets_up]] / - [[+votes_tickets_down]]</p>
<p>Рейтинг комментариев + [[+votes_comments_up]] / - [[+votes_comments_down]]</p>
Wassi Wassinen
18 февраля 2016, 14:49
modx.pro
20
3 778
+7