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

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

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


Сообщения - Alexey

Страницы: [1] 2 3
1
Разобрался в обеих проблемах в тот же день, чуть позже могу написать, в чем именно они заключались. Так что вопросы уже не актуальны.

2
1. Макрос catalog getObjectsList (необязательно добавлять в код, можно посмотреть через адресную строку, в узле total как раз будет общее количество). Единственное, надо правильно передать параметры и задать от какого раздела подсчитывать (т.е. корневой раздел "Каталог товаров").
2. USEL, отобрать все объекты каталога по модулю/методу или по типу данных.
3. Selector, отобрать все объекты каталога по модулю/методу.

Можно еще как-то наверное, но это самое распространенное, что используется обычно в таких случаях.

3
Да, такой вариант тоже был, а саму страницу куда помещаешь в структуре? В корень? И, наверное, выключаешь ее активность?

4
Шаблоны XSLT / Re:Модуль обратная связь.
« : 02 Февраль 2013, 17:52:24 »
Скорее всего, hc = hash code (хэш-код), ну а далее после нижнего подчеркивания представлено его значение длиной в 32 символа.

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

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

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

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

8
При реализации разного рода задач приходится нередко использовать 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.





9
Vladimir, спасибо за совет, именно так и планировал сделать в крайнем случае, если не будет найдено другого решения.

admin, спасибо, что подсказал, в какую сторону можно подумать. Я изучил вопрос более детально и, собственно, решил задачу именно таким образом.

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

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

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

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

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

11
Не отображаются смайлы)

12
В случае, если передается только 1 ID блога и остальные варианты реализовать нельзя по каким-либо причинам, можно кастомизировать нужным образом функцию postsList.

13
agata, если я Вас правильно понял, посты при любом из двух приведенных вариантов выводятся только из первого указанного блога из перечисленных. Если так, то получается, что данный макрос не предусматривает указание в параметрах более чем 1 блога, или используемая запись некорректна. Может стоить попробовать производить выборку для каждого блога по отдельности и потом их объединять и сортировать результаты как необходимо. Или поместить все блоги которые нужно выводить в 1 общий раздел, и указать его ID.

14
С XSLT не работал, но могу посоветовать попробовать по аналогии с выводом списка последних новостей (news lastlist). Там предлагается 2 варианта оформления:

1. <xsl:apply-templates select="document(concat('udata://news/lastlist/', '(id1)', '(id2)', '//10/0'))/udata"/>
2. <xsl:apply-templates select="document(concat('udata://news/lastlist/', '(id1)(id2)', '//10/0'))/udata"/>

id1, id2 и т.д. - перечисляете ID всех блогов, откуда нужно вывести посты (ID того блога, который нужно исключить, естественно не указываете).

А вот где применительно к блогам перечислять ID и как это адаптировать к другому синтаксису - к сожалению, не знаю. Да и вообще прокатит ли такое с блогами, т.е. допустимо ли там указывать более одного блога - не до конца ясно, но попробовать в любом случае стоит.

ID самих блогов можно посмотреть в ссылке на редактирование (.../admin/blogs20/edit/ID/).

15
Файлы бэкапа лежат в папке /sys-temp/manifest/backup в виде зиповских архивов (проверял на версиях 2.8.4 и 2.8.5).

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