UMIhelp

Разработка сайта на UMI.CMS => Шаблоны XSLT => Тема начата: sam от 14 Ноября 2014, 19:55:00

Название: XSLT: вызов существующего раздела из вновь созданной пустой старницы
Отправлено: sam от 14 Ноября 2014, 19:55:00
Здравствуйте! А как можно в админ.части в редактировании раздела вызвать содержимое уже существующего раздела из вновь созданного раздела? Т.е., есть раздел "Vendorname" (имеет своё название/
псевдостатический адрес/vendorname и свой id 1671), создаю новый пустой раздел и в поле Дополнительно/Описание хочу вставить %вызов%, чтобы в этом разделе отобразить содержимое/объекты существующего раздела "Vendorname". Может иначе как-то надо вызывать?!

Если это можно сделать, подскажите еще, можно ли таким же или аналогичным вызовом в одном разделе вызывать объекты 2-х разделов?

Буду признателен за развернутый ответ, или код для вызова!
Название: Re:XSLT: вызов существующего раздела из вновь созданной пустой старницы
Отправлено: admin от 15 Ноября 2014, 14:12:12
в поле, типа html? нельзя использовать xslt макросы, так что вам остается вставлять там tpl макросы. Для вывода контента другой страницы можно использовать макрос  %content insert()% (http://dev.docs.umi-cms.ru/spravochnik_makrosov_umicms/struktura_i_kontent/content_insert/)
Название: Re:XSLT: вызов существующего раздела из вновь созданной пустой старницы
Отправлено: sam от 15 Ноября 2014, 14:51:25
Cоздал раздел "ноутбуки Vendorname" и в поле дополнительно/описание в админ.части вставил подобный вызов %content insert('/shop/vendorname/pagename/')%, так и не получил содержимое уже существующего раздела "pagename". Адрес/дерево существующего раздела /shop/vendorname/pagename/ (id 1671). Как его содержимое вызвать из вновь созданного раздела?
Название: Re:XSLT: вызов существующего раздела из вновь созданной пустой старницы
Отправлено: admin от 15 Ноября 2014, 15:05:07
одно из 2,
- либо у вас нет tpl шаблона для этого вызова (читайте вкладку про tpl шаблон в описание данного макроса)
- либо на контент на вашей старнице храниться в поле с именем отличающимся от 'content' (данный макрос именно это поле и берет)

Если у вас вторая проблема, то используйте макрос %data getProperty()% (http://dev.docs.umi-cms.ru/spravochnik_makrosov_umicms/shablony_dannyh/data_getproperty/)/ Не забывайте, что ему тоже нужен tpl шаблон.
Название: Re:XSLT: вызов существующего раздела из вновь созданной пустой старницы
Отправлено: sam от 15 Ноября 2014, 19:10:51
admin, никак не получается. Попробуем по другому - эта страница, которую хотим получить, содержит объекты раздела каталога, а там соответственно используется макрос, который отвечает за вызов объектов каталога. По этому пробую вызвать эти объекты так %catalog getObjectsList('default', '/shop/vendorname/pagename/')%, тоже ничего, т.е. объекты не выводятся. А про %data getProperty()% вообще ничего не понял - как здесь %data getProperty(%pid%, 'test_property', 'sample')% прописать свои значения?
Название: Re:XSLT: вызов существующего раздела из вновь созданной пустой старницы
Отправлено: admin от 15 Ноября 2014, 19:56:44
стоп, стоп, стоп... что именно с другой страницы хочется вывести и почему это выводится не в шаблоне, а именно в админке?
Название: Re:XSLT: вызов существующего раздела из вновь созданной пустой старницы
Отправлено: sam от 16 Ноября 2014, 00:02:45
admin, это что-то вроде виртуальной копии, только не объекта, а раздела. Почему не можем просто виртуальную копию сделать?, Вы спросите - отвечу, у нового раздела будет свой адрес, и в нём будут выведены пару разделов сразу, а также свои поля h1 и т.д., только объекты будут взяты из существующих разделов. Почему в админке? - а как иначе вызвать/вывести объекты из другого раздела? Помогите задуманное реализовать, пожалуйста.
Название: Re:XSLT: вызов существующего раздела из вновь созданной пустой старницы
Отправлено: admin от 16 Ноября 2014, 10:29:51
sam, в ваших объяснениях есть несколько мест которые вы не совсем верно видите.Но описывать это все очень долго, поэтому. Если вам надо вывести товары из одного раздела (например, раздел /shop1/ с id = 101) в другом (например, раздел /shop2/ с id = 202), в котором нет своих товаров, то правильнее делать это так:
1. вывести в шаблоне xslt макрос getObjectsList()
2. указать данному макросу id нужного раздела (в нашем примере это 101). Скорее всего, у вас не один такой случай. Поэтому, имеет смысл брать id раздела источника из админки.
2.1. создадим в типе данных "раздел каталога" поле типа "ссылка на дерево" с названием "Раздел источник" (с name = 'parent_cat')
3. вывести его для нужной страницы. Будем выводит для всех разделов у кого заполнено поле parent_cat.

В итоге в шаблоне, который выводит содержимое раздела. вы выводите дополнительный блок getObjectsList в котором указываете id раздела указанного в админке.
Название: Re:XSLT: вызов существующего раздела из вновь созданной пустой старницы
Отправлено: sam от 16 Ноября 2014, 22:43:12
Как же всё сложно?! Я думал можно попроще. Почему нельзя это как-то проще сделать, например, простым вызовом из админки? Я расписал свои попытки, и хочу понять, почему они не работают, Вы конечно же объясняете, но я всё равно не совсем понимаю Ваши объяснения. Давайте так, если всё так сложно, значит закроем эту тему, и забудем всё. Жаль.
Название: Re:XSLT: вызов существующего раздела из вновь созданной пустой старницы
Отправлено: admin от 16 Ноября 2014, 23:19:20
Как же всё сложно?! Я думал можно попроще. Почему нельзя это как-то проще сделать, например, простым вызовом из админки? Я расписал свои попытки, и хочу понять, почему они не работают, Вы конечно же объясняете, но я всё равно не совсем понимаю Ваши объяснения. Давайте так, если всё так сложно, значит закроем эту тему, и забудем всё. Жаль.

в umi нет такого макроса, который  выведет центральную часть какой-то странице.

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

И тут, у вас либо правильный, с точки зрения удобства, вариант предложенный мною, либо вы можете вставить tpl макрос для вывода списка товаров (%catalog getObjectsList()) в контент область. Но, во-первых, вам надо в нем указать необходимые параметры (например id раздела из которого вы выводите товары). Во вторых, вам надо создать tpl шаблон, который будет использоваться этим макросом. А создание вывода одних и тех же товаров в tpl и xslt шаблонах, это уже лишние телодвижения с последующими тонкостями и сложностями.