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

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

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


Сообщения - KTI

Страницы: 1 [2] 3 4 5
16
может надо как-то так
<xsl:template match="property[@name='^photo']" mode="foto_list">
<li>
       <img src="{./value}" alt="./title"/>
</li>
</xsl:template>

17
по умолчанию эти новые поля добавляются в группу:
<group id="1587" name="product">
 <title>1C: Общие свойства</title>
ну допустим я вызову шаблон
<xsl:apply-templates select=".//group[@name='product']" mode="foto_list"/>
какой шаблон написать для обработки property в этой группе?
сами property выглядят так:
<property id="448" name="photo2" type="img_file">
<property id="449" name="photo3" type="img_file">
<property id="450" name="photo4" type="img_file">

и их количество может быть различно


18
суть в чем, есть вызов шаблона:
<a href="{.//property[@name ='photo']/value}">
<xsl:call-template name="catalog-thumbnail">
<xsl:with-param name="element-id" select="page/@id" />
<xsl:with-param name="field-name">photo</xsl:with-param>
<xsl:with-param name="width">200</xsl:with-param>
</xsl:call-template>
</a>
который возвращает тег <img>, вопрос в том как в него (в этот тег) вставить атрибут alt?
менять штатный шаблон thumbnails.xsl не хотелось-бы

19
Может уже было, не нашел..
В вики есть статейка по импорту нескольких изображений для одного товара, там только описано как загрузить данные в umi, а примера шаблона нет.
Данные я загрузил, вопрос в так, как их теперь обработать? т.е. у меня в товаре получилось следующее:

<property id="448" name="photo2" type="img_file">
<title>Картинка2</title>
<value path="./images/cms/data/import_files/15/15545916-b8a9-4054-b943-d76dc2c6e14b_2.jpg" folder="/images/cms/data/import_files/15" name="15545916-b8a9-4054-b943-d76dc2c6e14b_2" ext="jpg" width="800" height="382">
/images/cms/data/import_files/15/15545916-b8a9-4054-b943-d76dc2c6e14b_2.jpg
</value>
</property>
<property id="449" name="photo3" type="img_file">
<title>Картинка3</title>
<value path="./images/cms/data/import_files/15/15545916-b8a9-4054-b943-d76dc2c6e14b_3.jpg" folder="/images/cms/data/import_files/15" name="15545916-b8a9-4054-b943-d76dc2c6e14b_3" ext="jpg" width="602" height="600">
/images/cms/data/import_files/15/15545916-b8a9-4054-b943-d76dc2c6e14b_3.jpg
</value>
</property>
как правильно написать шаблон вывода этих изображений, дело в том что их бывает 3, бывает 7

20
на основе getNext, getPrev набросал свой (правда не учитывает сортировку, но мне и не надо):

	    public function getPrevNextId($elem_id = NULL) {
if(!$elem_id) return;
$element = umiHierarchy::getInstance()->getElement($elem_id);
if(!$element) return;
$parent_id = $element->getParentId();
$childs = umiHierarchy::getInstance()->getChilds($parent_id, false);
$result = array_keys($childs);
// print_r($result);
if (($sz = sizeof($result)) > 1) {
$block_arr = Array();
$empty_arr = array();
$empty_arr['attribute:link'] = "#";
$empty_arr['attribute:id'] = 0;

$prev_id = false;
$next_id = false;
foreach($result as $element_id) {
if($element_id == $elem_id) {
$next_id = current($result);
break;
} else {
$prev_id = $element_id;
}
}

if($prev_id !== false) {
$list = Array();
$list['attribute:id'] = $prev_id;
$list['attribute:link'] = umiHierarchy::getInstance()->getPathById($prev_id);
$block_arr['nodes:prev'][] = $list;
} else {
$block_arr['nodes:prev'][] = $empty_arr;
}
if($next_id !== false) {
$list = Array();
$list['attribute:id'] = $next_id;
$list['attribute:link'] = umiHierarchy::getInstance()->getPathById($next_id);
$block_arr['nodes:next'][] = $list;
} else {
$block_arr['nodes:next'][] = $empty_arr;
}
return $block_arr;
}
}


возвращает типа

<udata xmlns:xlink="http://www.w3.org/TR/xlink" module="catalog" method="getPrevNextId" generation-time="0.011779">
<prev id="25" link="/shop/dvd_tehnika/dvd_pleery/akai_apa206c/"/>
<next id="28" link="/shop/dvd_tehnika/dvd_pleery/toshiba_srq660/"/>
</udata>
<!-- This page generated in 0.079422 secs -->

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

Почему-то используется цикл (для поиска id в массиве), я хочу переделать, на что-то типа:
				$key = array_search($elem_id, $result);  
if ($key === false) {
return $empty_arr;}
switch ($key) {
case 0:
$next_id = $result[1];
$prev_id = 0;
break;
case $sz-1:
$prev_id = $result[$key-1];
$next_id = 0;
break;
default:
$next_id = $result[$key+1];
$prev_id = $result[$key-1];
break;
}         
 


21
не совсем понял, где вызывать getCategoryList, и зачем мне список категорий  :(

как мне кажется: (мой вариант)
в шаблоне обработки товара
<xsl:template match="udata" mode="object-view">
мы знаем parentId, т.е. Id родителя, потом вызываем что-то типа
document(concat('udata://catalog/getObjectsList/void/', page/@parentId, '////2/'))/udata
получаем список товаров в этой категории, потом нужен какой-то алгоритм, который на выходе давал два id (пред и след)
и потом создавать кнопки..

если есть у кого другие варианты, велком  :)
на сколько замедлит метод getObjectsList работу, хотя у меня пишет generation-time="0.074229", т.е. терпимо
еще нужно учитывать пейджинг, сортировку..

Было-бы лучше написать кастом на php, и вызывать типа getPrevNextId/@id
за основу взять
Кастомизация макроса catalog getObjectsList для ускорения формирования страницы
только переделать не umiSelection, а на selector, может кто возьмется

22
Нужно сделать 2 кнопки в форме товара: переход к следующему, переход к предыдущему товару.
Мне хотя-бы идею, алгоритм для начала, там уже буду пробовать

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

<xsl:template match="/result[@module = 'catalog' and @method = 'object']">
<xsl:apply-templates select="document(concat('upage://', page/@id,'?show-empty'))/udata" mode="object-view" />
</xsl:template>

23
как ни удивительно, но заработало в следующем виде
<xsl:apply-templates select="document('udata://catalog/getCategoryList/@pageId///1')" mode="razdely"/>
У вас так заработало, потому-что: 1 параметр - это шаблон (в xslt игнорируется)
2 - id страницы (если не указан, берется id текущей страницы), поэтому работает, но правильно:
<xsl:apply-templates select="document(concat('udata://catalog/getCategoryList/void/', @pageId, '//1'))" mode="razdely"/>
т.е. 1 параметр любой, 2 - id и т.д.

24
Ура! помогло, спасибо большое!  :D
Тоже была проблема, не выводился каталог при пейджинге,  т.е. на первой странице все нормально, при переходе на любую другую, каталог пропадал. Так и не дошло (до меня) почему это происходит.
Сейчас все как должно быть.
Пришлось поправить в 2 местах: default.xsl
<xsl:apply-templates select="document('udata://catalog/getCategoryList/void/catalog//1')" mode="left-column" />
и  left-column-category-list.xsl
<xsl:apply-templates select="document(concat('udata://catalog/getCategoryList/void/', @id, '//1'))" />

25
Ну если не трудно напишите конечно, многим может пригодится

26
почему тогда пришлось делать эту проверку что бы не выводились незаполненные поля у товаров?!...

Вы меня спрашивайте? это у вас (в коде) стоит проверка, если вы ее уберете, будет срабатывать другие шаблоны, а так срабатывает только там где не пустое value, т.е. артикул

27
вы сами поставили проверку
<xsl:apply-templates select="property[not(value='')]" mode="table_k" />
поэтому выводит только артикул, уберите эту проверку, туда и так попадут не пустые поля

28
У вас кнопка Заказать и Отправить имеет одинаковый класс "submit_btn"
скрипт срабатывает и там и там
попробуйте у "отправить" поставить другой

29
я так не понял, зачем нужны эти дополнительные поля для фильтрации cena0, cena1. Если в запросе и в поле "price" и в поле "cena2" используются одни и те-же параметры. Почему нельзя было тогда просто price передать

30
Это они "отмазались". Extended-pack никак вам не поможет. Т.к. помимо поддержки функционала со стороны клиента (1С) должна быть поддержка на сервере (umi)
Если хотите попробовать, напишите версию 1С, попробую помочь.
Вообще для версий 10.3 его можно скачать https://1c.1c-bitrix.ru/ecommerce/download.php
А для 11-тых версий , пишут типа там уже есть в типовой конфигурации (я не проверял)

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