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

0 Пользователей и 1 Гость просматривают эту тему.

*

niakriss

  • ***
  • 190
  • +2/-0
    • Просмотр профиля
Вывод полей группы
« : 20 Ноябрь 2012, 17:14:56 »
Здравствуйте, подскажите реально ли такое и если реально, то как это сделать или где почитать можно?
У меня есть страница с типом данных Главная страница. В ней добавлено куча групп с кучей полей. Можно ли не прописывать каждый раз отдельное поле для его вывода, а просто сказать, что хочу вывести все поля этой группы. И чтобы каждое поле было в своем <div> с уникальным id...
<div id="item-1">
<div id="item-2">
<div id="item-3">
И так далее...
Заранее благодарю)

*

Rodogor

  • ***
  • 189
  • +24/-0
    • Просмотр профиля
Re:Вывод полей группы
« Ответ #1 : 20 Ноябрь 2012, 22:30:30 »
Я попробую сказать очень смело, но как по Вашему зачем нужен XSLT... ^) Есть плотное ощущение, что для того, что бы много раз применить единожды описанный шаблон.

Посмотрите в сторону data getEditForm/getCreateForm. Более того, в стандартной поставке есть уже описанный шаблон для этого, файло modules/data/common-edit-form.xsl

Можно как угодно шаблонизировать - вывести все группы, вывести только нужные, вывести название групп, вывести названия полей, варианты и т.д. и т.п....

*

niakriss

  • ***
  • 190
  • +2/-0
    • Просмотр профиля
Re:Вывод полей группы
« Ответ #2 : 21 Ноябрь 2012, 15:50:47 »
честно говоря, не поняла о чем Вы :-[

*

Rodogor

  • ***
  • 189
  • +24/-0
    • Просмотр профиля
Re:Вывод полей группы
« Ответ #3 : 21 Ноябрь 2012, 20:18:39 »
<xsl:apply-templates select="document('udata://data/getEditForm/666/notemplate')"/>
где 666 id объекта источника данных для страницы поля которой необходимо вывести.
синтаксис http://dev.docs.umi-cms.ru/spravochnik_makrosov_umicms/shablony_dannyh/data_geteditform/
data[id_редактируемого_объекта][уникальное_имя_поля]


Странно, либо я вопроса не понял, но в других темах Вы решаете более сложные задачи в лёт.

*

niakriss

  • ***
  • 190
  • +2/-0
    • Просмотр профиля
Re:Вывод полей группы
« Ответ #4 : 21 Ноябрь 2012, 23:33:22 »
так этот макрос форму помоему выводит...  а мне содержимое всех полей группы на экран надо... там поля все идут типа простой текст...
 спасибо конечно за "сложные задачи в лет"...))) может я и вправду туплю(((

*

Rodogor

  • ***
  • 189
  • +24/-0
    • Просмотр профиля
Re:Вывод полей группы
« Ответ #5 : 22 Ноябрь 2012, 00:10:12 »
Так... Ну как бы этот макрос делает практически то, что нужно Вам.

Посмотрите xml имеющийся у Вас страницы. Найдите object-id.
После посмотрите на XML макроса getEditForm.
http://mysite/udata/data/getEditForm/666/notemplate
Увидите Ваши поля... Соответственно Вам нужно их как-то вывести...

Там будет что-то вроде такого:
<group name="site_info" title="Информация о магазине">
<field name="phone" title="Номер телефона" tip="Номер телефона, который будет отображаться на всех страницах сайта" field_id="402" input_name="data[489][phone]" type="string" id="402">+7 (333) 3000-33</field>
<field name="order_info_top" title="Доступное время заказа" tip="Будет виден на каждой странице в шапке" field_id="403" input_name="data[489][order_info_top]" type="wysiwyg" id="403"><div>
 <p>Приём звонков с 10 до 22</p>
 </div></field>
<field name="order_info_left" title="Полезная информация по приему заказов" tip="Отображается на всех страницах в левой колонке" field_id="404" input_name="data[489][order_info_left]" type="wysiwyg" id="404">
<p><img src="/images/design/bg/cards.gif" alt="" /></p>
 <p>Наш интернет-магазин работает 24&nbsp;часа в сутки.</p>
</field>
</group>


Тут самое время заглянуть в файло modules/data/common-edit-form.xsl - там уже есть почти для всех полей готовый код, но Вам не нужны input-ы, Вам нужны DIV и содержимое в них.....

Будет что-то вроде такого -

Вызов макроса:
вывести только группу site_info
<xsl:apply-templates select="document('udata://data/getEditForm/666/notemplate/(site_info)')/udata/group" mode="myEditForm"/> 
вывести только группы site_info, site_info1
<xsl:apply-templates select="document('udata://data/getEditForm/666/notemplate/(site_info)(site_info1)')/udata/group" mode="myEditForm"/> 

Вывести все группы
 
<xsl:apply-templates select="document('udata://data/getEditForm/666/notemplate')/udata/group" mode="myEditForm"/>

Делаем шаблон для group, для групп полей:

<xsl:template match="group" mode="myEditForm">
<div class="group" id="{@name}">
<p><xsl:value-of select="@name"/></p>
<xsl:apply-templates select="./field" mode="myEditForm">
</div>
</xsl:template>

Делаем шаблон для field, собственно для полей:
<xsl:template match="field" mode="myEditForm">
<p id="{@field_id}">
<xsl:value-of select="."/>
</p>
</xsl:template>

Фигачил прям так, что я тут нашкодил не проверял, писал прямо так. Вы вроде за мной уже ловили приколы :)

Идея правильная. В дальнейшем можно кастомизировать в зависимости от типа поля, от его ID и т.п...

Загляните таки в файло modules/data/common-edit-form.xsl - возможно там это уже есть, я просто уже давно оригинала не видел, всё до ужаса кастомизировано. :)

*

niakriss

  • ***
  • 190
  • +2/-0
    • Просмотр профиля
Re:Вывод полей группы
« Ответ #6 : 22 Ноябрь 2012, 09:41:36 »
ничессе....))) ну ладно.. попробую этим макросом)) пасиб)))