Автор Тема: Ditto, вывод трех элементов в ряд  (Прочитано 1802 раз)

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

Оффлайн saturizer

  • Новичок
  • *
  • Сообщений: 3
    • Просмотр профиля
  • Версия modx: 1.0.9
Ditto, вывод трех элементов в ряд
« : 02 Март 2015, 04:53:38 »
Есть некое количество элементов, которые нужно вывести в виде таблицы, по три или четыре элемента в ряд. Не понимаю, как сделать это при помощи Ditto, я вывожу два элемента при помощи &tpl и &tplAlt, как вывести больше двух элементов?

[!Ditto? &parents=`5` &tpl=`spek-element-1` &tplAlt=`spek-element-2` &orderBy=`pagetitle ASC` &paginate=`0`!]

Возможно, вопрос очень простой, но я впервые столкнулся с Modx и не понимаю как работают некоторые вещи... Буду признателен за любую пмощь.

Оффлайн jean179

  • Главный модератор
  • Продвинутый
  • *****
  • Сообщений: 484
  • jean179.ru
    • Просмотр профиля
    • Отдых в Анапе в частном секторе
  • Версия modx: 1.12
Re: Ditto, вывод трех элементов в ряд
« Ответ #1 : 02 Март 2015, 08:56:36 »
Делаете вызов только одного шаблона, а в нем делаете проверку на итерацию Диттто через некешируемый сниппет if.

[!if? &is=`[+ditto_iteration+]:%:3` &then=`true` &else=`false`!]

Оффлайн saturizer

  • Новичок
  • *
  • Сообщений: 3
    • Просмотр профиля
  • Версия modx: 1.0.9
Re: Ditto, вывод трех элементов в ряд
« Ответ #2 : 02 Март 2015, 13:14:20 »
Делаете вызов только одного шаблона, а в нем делаете проверку на итерацию Диттто через некешируемый сниппет if.

[!if? &is=`[+ditto_iteration+]:%:3` &then=`true` &else=`false`!]

Спасибо за ответ! Но я все еще не понимаю как это все должно работать. У меня есть страница с началом и концом таблицы, ячейки и ряды которой формировались ditto, причем в первом шаблоне (tpl) ряд открывался, а во втором (tplAlt) закрывался. Но мне нужно чтобы в ряду было более, чем два элемента. Если я оставляю только один шаблон с ячейкой и вставляю в него код ditto_iteration, а ряд открывается и закрывается на самой странице (перед и после вызова ditto, то у меня получается один ряд со всеми элементами, а код ditto_iteration выводится в виде текста... Проблема в том, что я вообще не знаю, как это должно работать, нигде не могу найти пример так чтобы можно было понять в целом куда что помещать. Не понимаю как открывать и закрывать ряд в данном случае? Прошу прощения еще раз за то, что задаю такие простые вопросы, просто занимался только html, сейчас столкнулся с необходимостью довести до ума сайт на modx и не могу с ditto разобраться... Заранее спасибо!

Оффлайн jean179

  • Главный модератор
  • Продвинутый
  • *****
  • Сообщений: 484
  • jean179.ru
    • Просмотр профиля
    • Отдых в Анапе в частном секторе
  • Версия modx: 1.12
Re: Ditto, вывод трех элементов в ряд
« Ответ #3 : 02 Март 2015, 16:22:04 »
Смотрите, вам нужно выводить в таблица в 3 колонки. tr-td-td-td-/tr. Первый шаблон будет tr-td, второй td, третий td-/tr. Теперь нужно сделать раскладку шаблоне (чанке) вывода результатов сниппета:
[!if? &is=`[+ditto_iteration+]:%:4:or:`[+ditto_iteration+]:=:1` &then=`<tr>`!]
<td>[+ditto_placeholder+]</td>
[!if? &is=`[+ditto_iteration+]:%:3` &then=`</tr>`!]
За код не отвечаю, не проверял, но общий смысл такой: если первый и кратный 4 выводим тег tr - это новая строка, далее выводим ячейку, если делится итерация на 3 (то есть конечная  третья ячейка в  строке), выводим /tr.
А вызов будет примерно таким:
[!Ditto? &parents=`5` &tpl=`spek-element-1`&orderBy=`pagetitle ASC` &paginate=`0`!]

Оффлайн jean179

  • Главный модератор
  • Продвинутый
  • *****
  • Сообщений: 484
  • jean179.ru
    • Просмотр профиля
    • Отдых в Анапе в частном секторе
  • Версия modx: 1.12
Re: Ditto, вывод трех элементов в ряд
« Ответ #4 : 02 Март 2015, 16:23:23 »
В принципе, если выводить не ячейкой таблице, а через див, будет тоже самое, а вывод будет в условиях дополнительный класс first-last.

Оффлайн saturizer

  • Новичок
  • *
  • Сообщений: 3
    • Просмотр профиля
  • Версия modx: 1.0.9
Re: Ditto, вывод трех элементов в ряд
« Ответ #5 : 02 Март 2015, 17:05:33 »
У меня не работает этот код:

[!if? &is=`[+ditto_iteration+]:%:4:or:`[+ditto_iteration+]:=:1` &then=`<tr>`!]
<td>[+ditto_placeholder+]</td>
[!if? &is=`[+ditto_iteration+]:%:3` &then=`</tr>`!]

Он выводится в виде простого текста, видимо я что-то делаю не так... Я помещаю код в чанк spek-element-1, а содержание в чанке ditto_placeholder соответственно.

Оффлайн jean179

  • Главный модератор
  • Продвинутый
  • *****
  • Сообщений: 484
  • jean179.ru
    • Просмотр профиля
    • Отдых в Анапе в частном секторе
  • Версия modx: 1.12
Re: Ditto, вывод трех элементов в ряд
« Ответ #6 : 02 Март 2015, 17:49:45 »
Значит нет сниппета, может еще чего. В личку стучитесь, скайп vershinin179, мыло jean179@mail.ru. Помогу.