UMIhelp
Разработка сайта на UMI.CMS => Шаблоны XSLT => Тема начата: dvoynikov от 09 Июля 2015, 23:44:06
-
Я пытаюсь вывести подкатегории главной категории написал код:
<xsl:apply-templates select="document('udata://catalog/getObjectsList/notemplate/11163/10/0')/udata" mode="materials" />
<xsl:template match="udata[@method = 'getObjectsList']" mode="materials">
<xsl:apply-templates select="//item" mode="materials" />
</xsl:template>
<xsl:template match="udata[@method = 'getObjectsList']//item" mode="materials">
<li><a href="{@link}"><xsl:value-of select="." /></a></li>
</xsl:template>
но в ответ ничего не приходит, если же вместо id этой категории поставить id другой категории но не каждой то всё работает. не могу понять в чём ошибка. главная категория отмечена как "Разделы каталога", а дочерние как "Страница контента".
-
но в ответ ничего не приходит, если же вместо id этой категории поставить id другой категории но не каждой то всё работает. не могу понять в чём ошибка. главная категория отмечена как "Разделы каталога", а дочерние как "Страница контента".
макрос getObjectsList выводит только страницы типа данных связанных с базовым типом данных "Объект каталога", поэтому если вы пытаетесь вывести товары из категории с id = 11163, а внутри этой категории лежат страницы типа данных "Страница контента", то макрос вернет 0 товаров.
-
а как тогда можно решить данную проблему? Так как когда я нажимаю "редактировать тип данных" и выбираю там "объекты каталога" то я потом не могу создать ничего нового выдаёт ошибку. Видно я что-то не так делаю. как быть?
-
Если у вас есть страница типа "Страница контента", то её нельзя превратить в страницу типа "объекты каталога", можно только удалить её и сделать новую страницу нужного типа данных ("объекты каталога").
Тут вопрос как так получилось что у вас страницу типа "Страница контента" лежат внутри раздела каталога.
- либо это было сделано умышленно с какой-то целью. Тогда может они и нужны там где они есть и просто надо выводить их не через getObjectsList , а через usel выборку например.
- либо по ошибке была организованна такая структура, когда создавали товары, но делали это не через страницы типа данных "объекты каталога" . Тогда вам нужно пересоздать данные страницы заного с правильным типом данных, а старые удалить. После чего getObjectsList станет выводит списки этих страниц.
P.S. Очень нежелательно при редактировании типа данных "Страница контента" (да и для всех других типов) менять значение в поле "Назначение типа", так как вы можете поломать заложенную логику работы с базовыми типами.
-
То есть если я сделаю все подразделы "Страницы контента" и выведу через usel(если не сложно можете подсказать как это можно сделать) то я смогу получить все необходимые данные по подкатегориям и вывести в виде страницы каталога?
-
То есть если я сделаю все подразделы "Страницы контента" и выведу через usel(если не сложно можете подсказать как это можно сделать) то я смогу получить все необходимые данные по подкатегориям и вывести в виде страницы каталога?
Нет, не совсем так, я говорил о том, что если вы сделали товары не через тип данных "Объект каталога", а через "Страницы контента", то для вывода вам придется отказаться от макроса getObjectsList и работать с usel выборкой.
Но я бы советовал вам идти в другом направлении, пересоздать страницы с правильным типом данных (Объект каталога), так как функционал каталога должен работать именно с ними, а не со старницами контента, которые вы будете выдавать за товары.
И у вас должны быть какие-то веские причины отказаться от функционала модуля каталог, работающего по умолчанию, потому как иначе вы теряете многие вещи работающие в модуле каталог:
- наличия спец поля для цены, складов и т.п.
- возможность добавлять такие страницы в корзину
- и т.п.
P.S. вы не могли бы рассказать для чего товары создавались как страницы контента? Может в вашей редакции нет модуля "Каталог" и на сайте создавали его заменитель из обычных страниц? Или может что-то еще?
-
это не товарные страницы это страницы с отзывами, которые создаются сами админами, есть много страниц(отзывов) и все они лежат в главном раздела отзывы имеющим тип разделы каталога
-
если вы выводите какие-то страницы (не товары) то тут удобнее пользоваться usel выводом.
Про usel можно почитать тут http://dev.docs.umi-cms.ru/shablony_i_makrosy/xslt-shablonizator_umi_cms/vyborki_iz_bd_protokol_usel/
пример usel выборки для вывода меню смотрите тут http://umihelp.ru/articles/daniil_sirotkin/usel-multilevel-menu/
P.S. в вашем случае не нужно проверки на поле <property name="novoe_menyu" value="1" /> просто указать id страницы из которой вы хотите вывести страницы
-
благодарю сегодня попробую сделать, хочу верить что получится
-
Ваш совет помог, получилось сделать, только возник ещё один вопрос: как к типу страницы контента для к примеру только отзывов задать отличную от других пунктов (имеющий так же тип страницы контента) структуру. а то когда создаёшь что-то новое то это новое добавляется во все разделы имеющие этот тип
-
а то когда создаёшь что-то новое то это новое добавляется во все разделы имеющие этот тип
Поясните на примере. Сейчас это звучит так как будто вы добавляете товар (к примеру) внутри одного раздела каталога, а данный товар добавляется во всех разделах каталога, которые есть в структуре.
-
нет вы меня не совсем так поняли. вот например у нас есть два главных раздела отзывы и новости оба имеют тип "страницы контента" но содержимое по полям должно быть разное, например поля у отзывов одни у новостей другие. А сейчас получается что если я добавляю новое поле для дальнейшего заполнения, то оно довавляется для заполнения и в отзывы и в новости, хотя мне этого не нужно.
-
тогда вам надо создать новый тип данных (обычно он является дочерний к уже существующим) и в нем добавить нужные вам поля. При этом данный тип назначать только тем страницам, у которых должно быть данные поля.
По работе с модулем "Шаблоны данных" смотрите документацию (http://help.docs.umi-cms.ru/rabota_s_modulyami/modul_shablony_dannyh/)
P.S. Пишите, что получилось в итоге.
-
Подскажите пожалуйста если я прописываю
<xsl:apply-templates select="document('udata://content/menu/0/2/(otzyvy)')/udata" mode="vertical_menu"/>
то в итоге получаю "меню", а как можно написать чтобы можно было вывести так же список всех подкатегорий, но уже с картинкой, контентом и др. полями, сделать страничку каталога?
А то что-то никак не получается
-
Если у вас данные страницы реализованны через тип данных "Раздел каталога", то для вывода данных страниц стоит использовать %catalog getCategoryList()% (http://dev.docs.umi-cms.ru/spravochnik_makrosov_umicms/katalog/catalog_getcategorylist/). Если нет, то посмотрите в сторону usel.
Для вывода дополнительной информации при вызове любого макроса, который выводит список чего-то, вы можете использовать функционал получения расширенных полей для udata макросов (http://dev.docs.umi-cms.ru/shablony_i_makrosy/xslt-shablonizator_umi_cms/makrosy_protokol_udata/#extended) для usel вызовов (http://dev.docs.umi-cms.ru/shablony_i_makrosy/xslt-shablonizator_umi_cms/vyborki_iz_bd_protokol_usel/#extended)
-
подскажите пожалуйста, вставляю макрос например %content% или любой другой, но он выводится как обычный текст, что можно с этим сделать?
-
судя по ветке форума (Шаблоны xslt) вы работаете с XSLT шаблонизатором, в таком случае вызов макросов через в виде %content% , %news lastlist()% и т.п. вам не подходит, вам надо вызывать макросы через udata://news/lastlist , а в случае с %content% , создавать шаблон для вывода того или иного макроса в зависимости от типа страницы.
-
можешь ещё подсказать как поставить ограничение в 3 записи вот тут <xsl:apply-templates select="document('udata://content/menu/1/1/11221')/udata"/>
-
Данный вопрос не относиться к теме данной ветки обсуждений (Re: проблема с выводом подкатегорий) , создайте отдельный вопрос или напишите в уже существующей, но более подходящей по теме