Курс 2016 года “Разработка на UMI.CMS от 0 до готового сайта”

Просмотр сообщений

В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.


Темы - Alexey

Страницы: [1]
1
Где, по вашему мнению, лучше хранить кастомные настройки (подобные config.ini и настройкам модулей, допустим в каталоге, количество товаров, выводимых на странице) с возможностью их записи, хранения и считывания.

Сейчас пока обхожусь элементами справочника для ряда задач (плюсом является изменение через админку, без редактирования кода, минусом возможность задания названий параметров в пределах одного справочника, по сути название используется как значение). Можно ли использовать config.ini для этих целей, создав свою секцию и параметры, не перезапишется ли он при обновлении (скорее всего нет, но решил уточнить)? Также есть мысль использовать свой отдельный файл, например тоже ini.

2
Хотелось бы кастомизировать TinyMCE для отдельных полей с учетом специфики и потребностей заполнения с целью удобства и экономии времени.

Вопрос пока в том, как разграничить поля типа "HTML-текст", для которых будет использоваться кастомный TinyMCE и поля, для которых будет использоваться дефолтный TinyMCE.

3
При реализации разного рода задач приходится нередко использовать API, а конкретнее - класс selector.

Все бы было ничего, но в процессе решения одной из задач столкнулся со следующими проблемами:

1. Методы фильтрации less, more и т.п., применяемые к полю, имеющему тип "Дата", работают некорректно.

Логичнее всего, как я подумал сначала, подавать дату в timestamp, ведь именно в таком виде она и хранится в БД, однако в таком случае возвращается вообще 0 объектов (хотя по timestamp та же сортировка выполняется корректно).

Вставки кода приведу только с проблемными местами, чтобы не было ничего лишнего:

$element_ldate="1359333515";
$pages = new selector('pages');
$pages->types('hierarchy-type')->name('catalog', 'object');
$pages->where('1c_exchange_date')->more($element_ldate);

При указывании даты в формете "Y-m-d H:i:s" (такой, как мы видим ее в админке, по сути, согласно заданному формату default-date-format в config.ini, секция system) отбор работает, но только с точностью до минут. Для решения задачи учитывать секунды обязательно.

$element_ldate="2013-01-28 00:38:35"";
$pages = new selector('pages');
$pages->types('hierarchy-type')->name('catalog', 'object');
$pages->where('1c_exchange_date')->more($element_ldate);

С less, а также с дополнительной приставкой равенства eq ситуация такая же.

А between, насколько я помню, наоборот, корректно работает с timestamp, а вот такой формат, увы, не переваривает. Естественно, ничего из этого не документировано.

2. Попробовал применить методы less и more для системного поля id.

Тут просто выводим объекты каталога и сортируем их по id по убыванию.

$pages = new selector('pages');
$pages->types('hierarchy-type')->name('catalog', 'object');
$pages->order('id')->desc();

На выходе если выведем id, получим следующее:
3136, 3135, 3134, ..., 258, 257, 256.
Итого: 2659 объектов.

Далее, предположим, мне нужно дополнительно отсечь еще и все объекты, id у которых меньше 3136. Дописываем заветную строчку:

$pages = new selector('pages');
$pages->types('hierarchy-type')->name('catalog', 'object');
$pages->where('id')->less(3136);
$pages->order('id')->desc();

На выходе получаем:
2806, 2805, 2804, ..., 258, 257, 256.
Итого: 2462 объекта

В итоге погрешность составляет 2659-2462=197~200 объектов при попытке отсеять всего лишь 1 объект.

Для more ситуация ничуть не лучше.

$pages = new selector('pages');
$pages->types('hierarchy-type')->name('catalog', 'object');
$pages->where('id')->more(1000);
$pages->order('id')->desc();

3136, 3135, 3134, ..., 674, 673, 672.

Если вместо 1000 будет, к примеру, 500, то массив вообще остается без изменений, т.е. конечный объект по-прежнему имеет id 256.

C дополнительной приставкой равенства eq ситуация такая же.

Подскажите, что я делаю не так, или действительно такая ошибка имеет место? Может быть она появляется только для поля id?

P.S. Тестирую в standalone файле, результаты вывожу в foreach.





4
Всем доброго времени суток!

Возник следующий вопрос. Кастомизирую обмен с сайтом. Необходимо выполнить APIшный код до и после процедуры обмена 1С с сайтом. Cтандартные точки вызова в режимах before и after exchangeOnAddElement и exchangeOnUpdateElement, к сожалению, не подходят, т.к. срабатывают для каждого товара отдельно, а надо отследить обмен 1С с сайтом в целом. Вторгаться в код системного файла auto.php крайне не хотелось бы, а кастомизировать его не представляется возможным. Пока временно сделал standalone файл, периодически запускаю его для достижения нужного эффекта.

Была еще мысль использовать cron для периодичного запуска и исполнения скрипта, но такой вариант не совсем пригоден для нашей ситуации. Хотелось бы привязать код именно к событию обмена 1С с веб-сайтом. Подскажите, пожалуйста, как это лучше сделать.

Наверняка кто-то сталкивался с подобным, не обязательно прям с событием обмена с 1С, а с подобного рода задачей.

В службу заботы отписал, прошло 3 или 4 дня, ответа пока так и не дождался (хотя бы каких-то идей, мыслей или наводящих советов - вообще ничего). Вся надежда на помощь народа.  ;)

5
Необходимо реализовать динамический фильтр по объектам каталога. Например, в корневом разделе группы товаров, имеющих один тип данных и специфические характеристики, выводятся возможные варианты цвета, типа, размера в выпадающих списках. Необходимо, чтобы при переходе на уровень ниже, в списках отображались значения, которые есть только у товаров данного подраздела.

Насколько я знаю, стандартным функционалом UMI такое реализовать не получится. Может кто-то сталкивался с подобным? ;)

6
Доброго времени суток всем!

После добавления основного количества товаров в каталог возникла необходимость заполнения свойств для каждого товара. Самым рациональным способом видится цепочка: экспорт в CSV - последующее редактирование - импорт в CSV. Таким образом, удалось бы сэкономить значительное количество времени.

Я ознакомился с необходимыми стандартами и правилами, описанными в руководстве, однако при каждом импорте товары не обновляются, а создаются вновь. При этом id, type-id, parent-id при редактировании не затрагивались вообще, т.е., по идее, вся структура должна остаться неизменной, должны измениться только редактируемые поля. Предположил, что проблема возникает после редактирования и сохранения csv. Тогда я просто импортировал файл без изменений, в первоначальном виде - и все равно, разделы и объекты каталога не обновляются, а создаются еще раз. Пробовал менять раздел для импорта - тоже безрезультатно.

Подскажите, пожалуйста, как быть? В чем может быть ошибка?

7
Доброе время суток всем!

Работаю с каталогом товаров, приходится править характеристики каждого товара (объекта каталога) вручную. Проблема в том, что, если попадаются разделы, содержащие достаточно большое количество объектов и они развернуты, то при каждой перегрузке страницы модуля "Структура" выдается следующее сообщение: "Вы собираетесь развернуть раздел, содержащий большое количество подразделов. Это может занять некоторое время, в течение которого окно браузера может не реагировать на ваши действия." Предлагается 2 варианта действий - "Отменить" и "Развернуть". Приходится каждый раз жать кнопку "Развернуть". Можно ли где-нибудь в настройках выставить автоматическое разворачивание таких разделов?

Страницы: [1]