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

Последние сообщения

Страницы: [1] 2 3 ... 10
1
Доброго времени суток. Изучение, честно только начинаю, так что сильно пожалуйста не пинайте.
Добавляю новый формат экспорта данных yml, согласно этой статье на вики. Но статья актуальна до появление в системе подготовки к экспорту. http://wiki.umisoft.ru/%D0%94%D0%BE%D0%B1%D0%B0%D0%B2%D0%BB%D0%B5%D0%BD%D0%B8%D0%B5_%D0%BD%D0%BE%D0%B2%D0%BE%D0%B3%D0%BE_%D1%84%D0%BE%D1%80%D0%BC%D0%B0%D1%82%D0%B0_%D1%8D%D0%BA%D1%81%D0%BF%D0%BE%D1%80%D1%82%D0%B0_%D0%B4%D0%B0%D0%BD%D0%BD%D1%8B%D1%85
Соответственно далее кастомизирую admin и export в /classes/modules/emarket, а именно добавляю идентификатор YML2 в функции public function prepareElementsToExport
public function prepareElementsToExport() {

         $objectId = getRequest('param0');

         $complete = false;
         $objects = umiObjectsCollection::getInstance();
         $object = $objects->getObject($objectId);
         $formatId = $object->format;
         $format = $objects->getObject($formatId);
         $suffix = $format->sid;
         if($suffix != ('YML' or 'YML2')) {
            $data = array(
               "attribute:complete" => (int) $complete,
               "attribute:preparation" => (int) !$complete,
            );

            baseModuleAdmin::setData($data);
            return baseModuleAdmin::doData();
         }

и в public function getElementsToExport($objectId)

...
$suffix = $exportFormat->sid;
  if($suffix == ('YML' or 'YML2')) {
...

В итоге при попытке подготовки получаю ошибку https://errors.umi-cms.ru/15001/ (Не удалось загрузить необходимые для экспорта данные.)

Так вот... Я все делаю не так или надежда есть? :) За полезные ссылки или направление куда копать далее, заранее благодарю...



2
Здравствуйте!

Изменилось название товара в карточке товара. Теперь страница открывается по двум адресам: по новому и по старому адресу.

Подскажите что лучше или правильно:

1. Поменять Псевдостатический адрес на карточке товара.

Если менять то как лучше. В руководстве пользователя написано что можно полностью стереть данный адрес и сохранить страницу. Тогда адрес сам измениться на новый. Или лучше вручную его менять.

2. Сделать 301 редирект через модуль «Редиректы»

Спасибо.
3
Шаблоны XSLT / Настроить правильный вывод фотоальбома
« Последний ответ от Raikerock 04 Июль 2018, 02:30:35 »
Добрый день.
Появилась проблема у заказчика после обновления сайта с образцами товаров(фотоальбом).

Структура фотоальбома такая.

=Категория
==под категория
===под категория (дублируется)
====собственно сама фотография

Проблема в том что последняя группа дублируется
вот ссылка на скрин:
http://prntscr.com/k28fd7

Помогите пожалуйста решить проблему, 3 дня уже парюсь с этой мелочью.
Первый umi опыт.


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xsl:stylesheet SYSTEM "ulang://i18n/constants.dtd:file">

<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:date="http://exslt.org/dates-and-times"
xmlns:udt="http://umi-cms.ru/2007/UData/templates"
xmlns:umi="http://www.umi-cms.ru/TR/umi"
exclude-result-prefixes="xsl date udt umi">

<xsl:template match="result[@module = 'photoalbum'][@method = 'album']">
<xsl:apply-templates select="document(concat('udata://photoalbum/albums//100/1/',$document-page-id, '?extProps=h1,descr,header_pic'))/udata" />
<xsl:apply-templates select="document(concat('udata://photoalbum/album/',$document-page-id, '?extProps=h1,descr,photo'))/udata" />
</xsl:template>

<xsl:template match="udata[@module = 'photoalbum'][@method = 'albums']" />

<xsl:template match="udata[@module = 'photoalbum'][@method = 'albums'][total]">
<ul class="photoalbum">
<xsl:apply-templates select="items/item" />
</ul>
<xsl:apply-templates select="total" />
<div class="descr" umi:element-id="{id}" umi:field-name="">
<xsl:value-of select="document(concat('upage://',id,'.descr'))/udata/property/value" disable-output-escaping="yes" />
</div>
</xsl:template>

<xsl:template match="udata[@module = 'photoalbum' and @method = 'albums']/items/item">
<xsl:variable name="img_src" select="extended/properties/property[@name = 'header_pic']/value" />
<xsl:variable name="img_thumb" select="document(concat('udata://system/makeThumbnailFull/(.', $img_src, ')/154/110/notemplate/0/1'))/udata/src" />
<li>
<div>
<a href="{@link}" class="photoalbum_link">
<img src="{$img_thumb}" />
<span>
<xsl:value-of select=".//property[@name = 'h1']/value" />
</span>
</a>
</div>
</li>
</xsl:template>

<xsl:template match="udata[@module = 'photoalbum'][@method = 'album']" />

<xsl:template match="udata[@module = 'photoalbum'][@method = 'album'][total]">
<ul class="photoalbum">
<xsl:apply-templates select="items/item" />
</ul>
<xsl:apply-templates select="total" />

<div class="descr" umi:element-id="{id}" umi:field-name="descr">
<xsl:value-of select="document(concat('upage://',id,'.descr'))/udata/property/value" disable-output-escaping="yes" />
</div>
</xsl:template>

<xsl:template match="udata[@module = 'photoalbum' and @method = 'album']/items/item">
<xsl:variable name="img_src" select="extended/properties/property[@name = 'photo']/value" />
<xsl:variable name="img_thumb" select="document(concat('udata://system/makeThumbnailFull/(.', $img_src, ')/154/110/notemplate/0/1'))/udata/src" />
<xsl:variable name="img_title" select=".//property[@name = 'h1']/value" />
<li>
<div>
<a href="{$img_src}" class="photoalbum_link fancy" title="{$img_title}" rel="photoalbum">
<img src="{$img_thumb}" />
<span>
<xsl:value-of select=".//property[@name = 'h1']/value" />
</span>
</a>
</div>
</li>
</xsl:template>


</xsl:stylesheet>

4
Настройка системы и модулей / Re: Интеграция с RBK
« Последний ответ от john 24 Июнь 2018, 22:33:30 »
Добрый вечер.

Использовал данную статью - http://api.docs.umi-cms.ru/razrabotka_nestandartnogo_funkcionala/integraciya_platzhnyh_sistem/
"Чтобы добавить свой способ оплаты, создайте в корне сайта файл.php с любым именем. Поместите в него следующий код и запустите из строки браузера."
Этот код создал в системе новый объект типа данных "Способ оплаты". При редактирование способа оплаты в Типе оплаты все появилось.
После того как второй раз запустил тот же файл.php, список в типе оплаты полностью пропал. Видимо он посчитал что объект с таким именим существует и испортил файл вывода.
Подскажите как восстановить список?
Спасибо.
5
Макросы UMI.CMS / Re: Выгрузка позиций по складам из 1С
« Последний ответ от admin2@pomdv.com 21 Июнь 2018, 07:30:36 »
штатно - никак, писать кастомный кусок шаблона, для импорта значений и кастомный метод для их отображения.
6
 Собственно копая макрос, с целью внедрения прозрачной авторизации емейл/телефон/логин, с удивлением увидел в макросе отвечающем за логин пользователя,  строчки, поставившие меня в тупик, с вопросом "это что за индусский подход?"
	if ($user instanceof iUmiObject) {
if (\UmiCms\Service::Session()->get('fake-user') == 1) {
return ($this->restoreUser(true)) ? $this->auth() : $res;
}

[b]$hashedPassword = $user->getValue('password');[/b]
$hashAlgorithm =  UmiCms\Service::PasswordHashAlgorithm();

if ($hashAlgorithm->isHashedWithMd5($hashedPassword, $rawPassword)) {
$hashedPassword = $hashAlgorithm->hash($rawPassword, $hashAlgorithm::SHA256);
[b]$user->setValue('password', $hashedPassword);
$user->commit();[/b]
}
.....

 Это что, мы проверяем хэш пароля, и если он корректен, то мы коммитим его обратно в базу ? О_о
Или тут происходит что-то другое, и я просто туплю ?
 Блин, расписав вопрос, понял и ответ. Происходит смена хэша для пароля, с мд5 на sha256. Рукалицо )
Это получается эдакая заплатка для старых юзеров, регавшихся ещё под старой версией системы.


Если кому будет нужно, задача решилась примерно таким образом:

/classes/system/subsystems/models/auth/AuthenticationRules/LoginAndPassword.php

содержит в себе public function validate()

добавляем в неё:

$phone_number = preg_replace("/[^0-9]/", '', $login);

try {
$queryBuilder = $this->getQueryBuilder();
//*тут изменения
if (strlen($phone_number) == 11){
$queryBuilder->option('or-mode')->fields('login', 'e-mail','phone');
$queryBuilder->where('phone')->equals($phone_number);
}
else{$queryBuilder->option('or-mode')->fields('login', 'e-mail');}
......
Ну или модифицируем по желанию. Я добавил проверку на дублирующийся номер телефона, и в случае совпадения перебор корректных пар логин/пароль. С уведомлением себя любимого на почту, о таком странном казусе.

Если у вас лицензия все ещё активна, или вы планируете дальнейший апгрейд юми, то функцию стоит переопределить, или вообще переписать макрос login_do в кастом.
7
Макросы UMI.CMS / Выгрузка позиций по складам из 1С
« Последний ответ от WenLeks 05 Июнь 2018, 13:28:26 »
Доброго всем дня!
в файле offers товар разбит по складам, подскажите, пожалуйста, как такой формат выгрузить правильно в поле Состояние на складе?
<Предложение>
<Ид>0bd65ee9-0553-11e7-8189-34238794c746</Ид>
<Наименование>Товар</Наименование>
<БазоваяЕдиница Код="796" НаименованиеПолное="Штука" МеждународноеСокращение="PCE"/>
<Цены>
<Цена>
<Представление>3 578 RUB за шт</Представление>
<ИдТипаЦены>4a5a1538-7968-11e5-b582-34238794c746</ИдТипаЦены>
<ЦенаЗаЕдиницу>3578</ЦенаЗаЕдиницу>
<Валюта>RUB</Валюта>
<Единица>шт</Единица>
<Коэффициент>1</Коэффициент>
</Цена>
</Цены>
<Количество>6</Количество>
<Склад ИдСклада="6bdd21d7-f403-11e5-902a-34238794c746" КоличествоНаСкладе="1"/>
<Склад ИдСклада="6bdd21d8-f403-11e5-902a-34238794c746" КоличествоНаСкладе="1"/>
<Склад ИдСклада="5a5ebb96-f419-11e5-902a-34238794c746" КоличествоНаСкладе="0"/>
<Склад ИдСклада="246f9bbf-6e4f-11e5-9fd6-0024beb4f058" КоличествоНаСкладе="1"/>
<Склад ИдСклада="246f9bc0-6e4f-11e5-9fd6-0024beb4f058" КоличествоНаСкладе="1"/>
<Склад ИдСклада="246f9bc1-6e4f-11e5-9fd6-0024beb4f058" КоличествоНаСкладе="1"/>
<Склад ИдСклада="8f0e4f17-e70c-11e5-a33c-34238794c746" КоличествоНаСкладе="1"/>
</Предложение>

общее количество и все прочее выгружается без проблем, только эти склады ни как не хотят(
8
Шаблоны TPL / Re: Вывод работы макроса вместе с версткой
« Последний ответ от umidev 30 Май 2018, 11:10:52 »
А, понятно. Он пытается использовать более правильную XSLT, так как явно думает, что на tpl уже никто не кодит )))

Это шутка конечно, но с изрядной долей правды. Завязывайте с TPL и не будете знать проблем.

Мне как бы не принципиален tpl ,  пойдет и xslt.

Я пробовал передавать данные из макроса quickTest в  xslt.
Вызывал по ссылке http://site.ru/udata/emarket/quickTest?transform=modules/product-info.xsl

Данные из макроса подставляются в xslt шаблон и выводятся вместе с шаблоном. Что я и пытался добиться.

Но задача, то у меня сложнение мне нужно вывести 2 массива через цикл.

Как передать из макроса 2 массива и в xslt вывести их в цикле вместе с версткой, я не понимаю.
9
Шаблоны TPL / Re: Вывод работы макроса вместе с версткой
« Последний ответ от aghigay 30 Май 2018, 09:47:09 »
А, понятно. Он пытается использовать более правильную XSLT, так как явно думает, что на tpl уже никто не кодит )))

Это шутка конечно, но с изрядной долей правды. Завязывайте с TPL и не будете знать проблем.
10
Шаблоны TPL / Re: Вывод работы макроса вместе с версткой
« Последний ответ от umidev 30 Май 2018, 02:03:06 »
Попробуйте явно указать шаблон default
Попробовал.
На экране написано: This XML file does not appear to have any style information associated with it. The document tree is shown below.

Больше ничего нет вообще. В исходном коде страницы теперь пусто
Страницы: [1] 2 3 ... 10