Page Builder - предустановленные блоки с пользовательским наполнением

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

Полное и актуальное описание.

Пример файла конфигурации.

После установки нужно создать новые файлы конфигурации, либо переименовать файлы-примеры. Видимость формы редактирования настраивается в файлах конфигурации.

При редактировании документа добавляется новая вкладка «Page Builder», название вкладки можно изменить в настройках плагина.

Для вывода используйте сниппет [[PageBuilder]], параметры можно посмотреть здесь.


122 комментария

avatar
Очень интересно но не помешало бы хотя бы пару скриншотов как оно выглядит в админке
avatar
Сейчас, может еще и видео сделаю
avatar
скрины в студию)
avatar
Добавил скриншоты, видео
avatar
По проблеме — да, иногда контентщику не хватает возможности разместить текст колонками, при этом к табличкам прибегать запрещено, что такое хтмл и плавающие блоки он не слышл, а на все возможные варианты шаблоны «2 колонки», «3 колонки», «3+2+3 колонки» — не предусмотришь. Кто как это решает?
По дополнению — есть ли возможность расставлять блоки колонками непосредственно при редактировании? или все жестко в конфиге задается?
avatar
Если речь только о тексте, то можно создать несколько одинаковых шаблонов с разными классами и разруливать через css columns.
avatar
Хорошая работа, спасибо, что поделились.
avatar
В принципе, учитывая, что вложенность не ограничена, в каких-то ситуациях дополнение может заменить multiTV.
Ну и пока это альфа-версия, будет добавляться функционал, приветствуются предложения.
avatar
Первым делом напрашивается множественная вставка картинок.
avatar
Да, это в планах, в multiTV этого сильно не хватало.
avatar
Добавлена множественная вставка картинок
avatar
Огромная благодарность автору. Очень удобно. Только недавно начала делать проект, где такой функционал очень необходим. Жаль, что поздно, но в следующих проектах обязательно попробую.
avatar
Спасибо огромное за данное дополнение
avatar
Выглядит круто, надо протестировать)
avatar
Для чайников можно расписать как происходит установка,
1)закинул файлы в assets/…
2) создал снипет и плагин с содержимым из файлов install
3) на странице поставил [[ContentBlocks]]
=
avatar
нужно еще таблицу в базе создать, modx_contentblocks
github.com/sunhaim/contentblocks/blob/master/install/setup.data.sql
avatar
создал, в плагине ставил вместе/раздельно id шаблона, документа, но новый таб не создается((
avatar
может события не отметили? :)
avatar
отмечал
avatar
переустановил админку, поставил галочку установить демо, с первого маху все ставиться((
avatar
если в репозитории поставить не package, а любой другой, то галочка не выводится, сразу все ставится.
avatar
да спс, все заработало, видимо косяк был в админке установленой
avatar
У меня на 1.3 та же ошибка (нет вкладки), консоль чистая.
Что вы имеете в виду под словами «переустановил админку»?
avatar
Разобрался, вопрос решен.
avatar
Стоит отметить, что тут еще не хватает функционала, который, при дублировании документа, дублировал бы и данные ContentBlocks в новый документ.
avatar
Точно, это будет сделано. Как и очистка при удалении документа.
avatar
Офигенная штука получилась наконецто добрался поюзать :)
Небольшой обзорчик:)
monosnap.com/file/40FWLGRMhptgVHfYSiYGZIYNNjfvCH
avatar
Сделать бы у сниппета возможность, чтобы можно было порядковый номер блока указать или конфиг блока для вывода, было бы вообще збс! Руки дойдут, может сам наваю и пулл-реквест закину.
  • EGO
  • 0
avatar
Про порядковый номер понял, а про конфиг блока для вывода не понял. Вроде ведь конфиг блока для вывода задается в конфиге блока.
avatar
Хотя нет, про порядковый номер я тоже не понял
avatar
В таблице БД есть колонки с номером сортировки и названием конфигурации, вот по ним бы и делать выборку. Только что, понял что может быть несколько одинаковых конфигурации для одной страницы, с эти уже сложнее)) А вывод, кстати, можно через сниппет обёртку для DocLister сделать, если в шаблон делать просто вывод значение делать (по аналогии с sgLister).
avatar
Сортировку задает менеджер, как и блоки, которые ему нужны. Т.е. в вашей выборке может не быть того, что вы ожидаете.
Наверное, будет проще, если вы поясните, чего хотите добиться в результате.
avatar
Не все менеджеры одинаково полезны, это да)) но если менеджер умеет вставлять сниппеты, то он хочет уметь выводить нужные блоки в нужных местах. Т.е понимает, что в случае изменения сортировки вывод тоже измениться, что компенсируется, если вывод делать по названию конфига, с учётом, что повторных конфигурации для страницы нет.
avatar
Как не костыльный вариант, можно предложить такое улучшение: для каждого блока генерировать уникальный токен и во фронтенд сделать кнопку «Скопировать код для вставки». Вуаля!)
avatar
Со времени первой публикации были добавлены новые возможности:
1. Новые плейсхолдеры ([+iteration+], [+index+]);
2. Подгрузка шаблонов из чанков, файлов, и пр.;
3. Группы шаблонов, для указания в вызове сниппета;
4. Параметры сниппета для фильтрации вывода;
5. Вид добавления блоков в виде иконок или изображений;
6. Всякие мелкие улучшения для более комфортной работы.

Полную и актуальную информацию по работе с пакетом можно узнать здесь.
avatar
Как пользоваться плейсхолдерами [+iteration+], [+index+]? Мне нужно добавлять каждому блоку порядковый номер, начиная с единицы. Iteration выводит 1 везде (
Комментарий отредактирован 2019-10-24 10:18:41 пользователем Multiweb
avatar
Покажите конфиг
avatar
Обновил EVO до 1.3.4, отключил ContentBlocks, установил Page Builder, для теста переименовал sample-конфиг, как итог вот:


В консоле ошибка тут:
<? if ( $placement == 'content' ) { ?>
		jQuery('#content-blocks').insertAfter( jQuery('#content_body').closest('table') );
	<? } ?>

Т.е. php не обработал почему-то… только у меня так?
  • EGO
  • 0
avatar
Что-то коряво обновилось видимо. Новая установка таких ошибок не показывает.
avatar
Вобще странно, там перед надписью «В этом блоке нет полей...» должно выводиться название блока. В конфиге ничего не меняли?
avatar
Проделал то же самое, все обновилось и работает нормально. Есть возможность предоставить доступ?
Комментарий отредактирован 2017-08-30 05:43:27 пользователем kassio
avatar
Видимо реально что-то криво обновил, сам попозже разберусь, спасибо!
avatar
Ставил пару дней назад никаких проблем не было
avatar
Ларчик просто открывался, на сервере недосмотрел и стало short_open_tag = Off, а надо On :). Соответственно tpl-файлы в которых просто <?, а не <?php не обрабатывались.
avatar
Да, есть такое, в новой версии все короткие теги уберу
avatar
В топике ссылка Пример файла конфигурации битая, исправьте, пожалуйста.
avatar
исправил
avatar
Нет вкладки на 1.3.6
Ставил из магазина.
Сниппет, плагин с событиями, таблица в базе, файлы — все на месте.
Переустанавливать админку, ессно, не вариант.
Как посмотреть-то, как оно вообще работает?
Сниппет не выводит ничего, разумеется, ошибки нет
avatar
Конфиг создали/переименовали?
avatar
АААААА… понял. Переименовал из .sample
Надо дописать в readme для таких, как я
avatar
Извините, что еще раз тревожу, но почему-то при сохранении документа пропадают наборы блоков и в базу ничего не пишется… Просто открывается дефолтовая вкладка без блоков вообще. OnDocFormSave на плагине стоит
monosnap.com/file/Ia3P8iWEkOOsZR3LVwyVBumkO7W0lC#
avatar
Решили в личке, проблема была в том, что при установке сработали не все sql-запросы.
avatar
1)Поставил плагин из репо
2)Удалил .sample в папке config
3)В шаблон добавил вызов [[PageBuilder]]

Вкладка появилась, но при нажатии на плюсик ничего не происходит
avatar
Какая версия PHP?
avatar
5.4.30 MODx 1.4.0.RC
avatar
А нужен 5.6
avatar
Доброго времени суток
исползую PageBuilder в связке MODX Evolution 1.2.1-d9.1.0, все работает, но есть один нюанс — если ресурс не опубликован то при переходе по кнопке «Просмотр» с бекенда данные выводимые PageBuilder не отображаются пока не опубликуешь весь ресурс, кто то с этим сталкивался? и как побороли?
avatar
Попробовал, крутая штука, спасибо! Но не могу понять логику offset и limit.

Для ресурса заполнено 2 блока PB с одинаковой конфигурацией (пусть будет adv_block), но с разным наполнением.

Их нужно вывести по одному, причем между ними сторонний код, не относящийся к PB. Вывожу так:

[[PageBuilder? &blocks=`adv_block` &limit=`1` &offset=`0`]]

   ...тут посторонний HTML...

[[PageBuilder? &blocks=`adv_block` &limit=`1` &offset=`1`]]


И не выводится вообще ничего. В других вариантах выводится как-то, но не так как мне нужно. Или нельзя сочетать фильтрацию по имени конф-ции и limit?

Просьба подсказать.
avatar
У меня срабатывает первый вызов. Второй только с "&limit=`2`", т.к. limit похоже сквозной, нужно это исправить. Уже исправил — github.com/mnoskov/pagebuilder/commit/16a02bd68515b8445ce97ee54a59f54fb0a46614
Комментарий отредактирован 2018-03-23 08:02:27 пользователем kassio
avatar
Если переформулировать мой вопрос, он как раз так и звучит — насколько «сквозной» подсчет при limit: по всей странице, по имени конфига или же все-таки по отфильтрованной выборке на ресурсе.

Код — честно — лень было смотреть, надеялся что обойдусь )))

Отлично, спасибо, сейчас потестю.
avatar
Теперь limit, похоже, работает корректно.
Но не работает offset — оба вызова сниппета выводят один и тот же блок, 1-й по порядку в Админке.
avatar
Не могу подтвердить, у меня все верно работает.
avatar
PHP 5.6.19, MySQL 5.5.48 — Нормально?
Да в общем-то куда нормальнее. Что ж, буду смотреть подробнее.
Комментарий отредактирован 2018-03-23 12:51:43 пользователем Aharito
avatar
Наша с вами разница была (видимо) вот в чём: вы для теста создали 2 блока и 2 вызова сниппета.

А у меня помимо этого был еще и «отдельный» блок (с другим именем конф-ции) и отдельный вызов сниппета PB в самом начале страницы. Он и приводил к разнице в наших с вами результатах.

В общем, offset также сквозной, как здесь limit. Поэтому offset «учел» ещё один «лишний» блок на моей странице (несмотря на то, что у него иное имя конф-ции, чем у 2-х тестовых блоков). И в итоге у меня заработал такой код с увеличенным на 1 оффсетом:

[[PageBuilder? &blocks=`adv_block` &limit=`1` &offset=`1`]]

...тут сторонний HTML

[[PageBuilder? &blocks=`adv_block` &limit=`1` &offset=`2`]]
Комментарий отредактирован 2018-03-23 17:50:06 пользователем Aharito
avatar
Ну а вообще, чтобы не ковыряться, я сделал вывод в контейнеры, и все дела.
avatar
Кстати, контейнеры с placement=tv работают нестабильно, поэтому сделал контейнеры во вкладках (placement=tab).

В общем, багов еще немало, надо бы как-нибудь краудфандинг, что ли, организовать по доработке PB.
avatar
По tv-размещению также создайте issue
avatar
Пришлось заново воспроизвести ситуацию ошибки, но не пожалел, потрудился во славу сообщества :)
avatar
Проверил issue на всех возможных режимах группировки ТВ — всё работает. Благодарю за быстрый профессиональный отклик.
avatar
AdBlock может зарезает?
avatar
Здравствуйте. А как пользоваться параметром templates? Например:
[!PageBuilder? &templates=`captions` !]

Конфиг
У меня почему-то плейсхолдеры не выводятся.
avatar

'templates' => [
    'owner' => '[+slide+]',
    'captions' => '[+text+], [+size+], [+posX+], [+posY+]',

    'captions_set' => [
        'owner' => '2: [+slide+]',
        'captions' => '2: [+text+], [+size+], [+posX+], [+posY+]',
    ],
],

[!PageBuilder? &templates=`captions_set`!]
avatar
Спасибо. Нужно было ещё добавить [+captions+].Pаработал всё-таки такой вариант:
'templates' => [
    'owner' => '[+slide+]',
    'captions' => '[+text+], [+size+], [+posX+], [+posY+]',

    'captions_set' => [
        'owner' => '2: [+slide+][+captions+]',
        'captions' => '2: [+text+], [+size+], [+posX+], [+posY+]',
    ],
],
avatar
Хочу сделать блоки PageBuilder вместо ТВ, без вкладки.
Как написано в гайде, сделал 'placement' => 'tv', в конфиге контейнера. Ничего. Сделал то же в конфиге самого плагина, сработало. Но теперь начисто игнорит show_in_templates, и показывает кнопки добавления в самом низу любой страницы.
Комментарий отредактирован 2018-04-12 13:51:33 пользователем 1px
  • 1px
  • 0
avatar
Сам tv-параметр создали (имя должно совпадать с именем контейнера)? Блоки привязали к контейнеру?
А как это вы сделали placement tv в конфиге плагина? Там же нет такого варианта.
Комментарий отредактирован 2018-04-12 16:14:58 пользователем kassio
avatar
Как «передать глобальный плейсхолдер» (поле) из «оборачивающего» поля во вложенное групповое? Пример:

'templates' => [
  'owner' => '[+images+]',
   
  'images' => '<img src="[[phpthumb? &input=`[+image+]` &options=`[+crop_global+]`]]">',
],

'fields' => [
   'crop_global' => [
       'caption'  => 'Обрезка картинок',
       'type'     => 'dropdown',
       'elements' => 'w=1074||w=537||w=268',          
   ],  
         
   'images' => [
      'caption' => 'Картинки',
      'type'    => 'group',
      'fields' => [
         'image' => [
             'caption' => 'Картинка',
             'type'    => 'image',
         ],            
      ],
   ],
],


Хотелось бы один раз задать поле crop_global, чтобы потом не задавать его отдельно для каждой картинки, а чтобы его значение использовалось для обрезки любой новой картинки во вложенном групповом поле images.

Но внутри вложенного шаблона «внешний» плейсхолдер недоступен. Есть ли какие-то варианты?
avatar
Похожая задача, выкрутился выводом нужных полей в родительском шаблоне но может есть решение лучше
return [
        'title' => 'Images',

        'templates' => [
            'owner' => '<div class="row row-in">[+images+]<div style="display:none;">[+bclass+] [+aclass+]</div></div>',			
            'images' => '
<div class="[+bclass+]">	
	<a class="[+aclass+]" href="[+image+]" data-fancybox="gallery" data-caption="[+title+]">
			<span class="gallery-item--image" style="background-image: url([+image+]);"></span>
			<span class="gallery-item--caption-pos">
					<span class="gallery-item--caption">
						<span class="caption--title">[+title+]</span>
						<span class="caption--text">[+desc+]</span>
					</span>
			</span>
	</a>
</div>',
      	
        ],
		
        'fields' => [
			'bclass' => [
                'caption' => 'Block Class',
                'type'    => 'text',
				'default' =>  'col-xs-6 col-sm-4 col-md-4',
            ],
            'aclass' => [
                'caption'  => 'Link Class',
                'type'     => 'radio',
                'layout'   => 'horizontal',
                'elements' => 'No==gallery-item||Border==gallery-item gallery-item_bordered',
                'default'  => 'gallery-item',
            ],				
            'images' => [
                'caption' => 'Список',
                'type'    => 'group',
                'fields'  => [
                    'image' => [
                        'caption' => 'Изображение',
                        'type'    => 'image',
                    ],
					'title' => [
                        'caption' => 'Заголовок',
                        'type'    => 'text',
                    ],					
					'desc' => [
                		'caption' => 'Описание',
                		'type'    => 'textarea',
            		],		
                ],
            ],
        ],
    ];
avatar
Вопрос был решен с помощью prepare: github.com/mnoskov/pagebuilder/issues/72, github.com/mnoskov/pagebuilder/issues/73
Комментарий отредактирован 2018-10-23 11:20:29 пользователем kassio
avatar
Спасибо.
avatar
столкнулся с проблемой вывода галереи: нужно 2 раза получать значение поля с картинкой — 1 раз для слайдера, 2 раз для превью под слайдером. т.е. верстка вот
<code><!-- big image -->
<div class="big-image-carousel">
	<div class="owl-carousel">

		<div class="item">
			<a href="images/slider-img1.jpg" class="gallery-group">
				<span class="img" style="background-image: url(assets/templates/zr/images/slider-img1.jpg);"></span>
			</a>
		</div>

		<div class="item">
			<a href="images/slider-img1.jpg" class="gallery-group">
				<span class="img" style="background-image: url(assets/templates/zr/images/slider-img2.jpg);"></span>
			</a>
		</div>

		

	</div>
</div>

<!-- thumbs images -->
<div class="thumbs-box">
	<div class="thumbs-items">

		<div class="thumbs-item">
			<span class="img" style="background-image: url(assets/templates/zr/images/thumb1.jpg);"></span>
		</div>

		<div class="thumbs-item">
			<span class="img" style="background-image: url(assets/templates/zr/images/thumb2.jpg);"></span>
		</div>

		

	</div>
</div></code>
slider-img1.jpg и thumb1.jpg это одна и таже картинка только разного размера.
как настроить такой вывод в конфигурации пока единственное решение (хотя язык не поварачивается назвать это решением) создать два поля для вставки одинаковых иображений… может кто сталкивался?
Комментарий отредактирован 2018-11-12 21:39:46 пользователем tinik
avatar
Это есть в документации: docs.evo.im/04_extras/pagebuilder/templates-2.html в самом низу.

В конфиге:
'templates' => [
    'owner' => '
        <div class="big-image-carousel">
            <div class="owl-carousel">
                [+images+]
            </div>
        </div>
    ',

    'images' => '
        <div class="item">
            <a href="[+image+]" class="gallery-group">
                <span class="img" style="background-image: url([+image+]);"></span>
            </a>
        </div>
    ',

    'thumbs' => [
        'owner' => '
            <div class="thumbs-box">
                <div class="thumbs-items">
                    [+images+]
                </div>
            </div>
        ',

        'images' => '
            <div class="thumbs-item">
                <span class="img" style="background-image: url([+image+]);"></span>
            </div>
        ',
    ],
],

Затем в шаблоне:
[[PageBuilder? &container=`slider`]]
[[PageBuilder? &container=`slider` &templates=`thumbs`]]
avatar
не совсем то, т.к. у меня много разных конфигураций и галерея может находится как в начале так и в середине либо конце страницы. сделал пока так
'templates' => [
            'owner' => '
						<div class="m-title" id="anchor-[+iteration+]">[+title+]</div>
                        <!-- gallery inner -->
                        <div class="gallery-slider">
                
                            <!-- big image -->
                            <div class="big-image-carousel">
                                <div class="owl-carousel">
                                    [+images+]
                                </div>
                            </div>
							[[PageBuilder?templates=`preview` &blocks=`slider`]]
			            </div>			
                        ',

            'images' => '
                        <div class="item">
                            <a href="[[phpthumb? &input=`[+image+]` &options=`w=1200,h=698,bg=FFFFFF,far=C`]]" class="gallery-group">
                                <span class="img" style="background-image: url([[phpthumb? &input=`[+image+]` &options=`w=1200,h=698,zc=1,far=C`]]);"></span>
                            </a>
                        </div>
            ',

            'anchors' => [
				'owner' => '<li>[+iteration+]. <a href="[~[*id*]~]#anchor-[+iteration+]">[+title+]</a></li>',
			  ],
            'preview' => [
				'owner' => '
							<!-- thumbs images -->
                            <div class="thumbs-box">
                                <div class="thumbs-items">
                                    [+images+]
                                </div>
                            </div>
                ',
				'images' => '
                            <div class="thumbs-item">
                                <span class="img" style="background-image: url([[phpthumb? &input=`[+image+]` &options=`w=180,h=180,zc=1,far=C`]]);"></span>
                            </div>
				'
			  ],
        ],

        'fields' => [
           'title' => [
                'caption' => 'Заголовок',
                'type'    => 'text',
            ],

            'images' => [
                'caption' => 'Слайдер',
                'type'    => 'group',
                'fields'  => [
                    'image' => [
                        'caption' => 'Изображение',
                        'type'    => 'image',
                    ]
                    
                ],
            ],
        ],
но мне кажется что будет работать не совсем правильно если будет несколько слайдеров на одной странице
avatar
Да, если будет несколько, то получится каша.
avatar
Приветствую! Есть задачка — если задано название, то выводить в PageBuilder это название, а если нет, то pagetitle. Для этого использую prepare в конфиге PageBuilder.

'prepare' => function($options, &$values) {  
   // Если новое имя услуги не задано, берем оригинальное
   foreach ($values['service_items'] as &$service_item) {
      $orig_name = $modx->runSnippet("DocInfo", array("docid"=>$service_item['service_id'], "field"=>"pagetitle"));
      $service_item['name'] = empty( $service_item['service_name'] ) ? $orig_name : $service_item['service_name'];
   }
   unset($service_item);
}


И в шаблоне

'service_items' => '
    <div class="services-item">
      <a href="[~[+service_id+]~]">[+name+]</a>
    </div>
',

Но пишет ошибку «Call to a member function runSnippet() on null in...».

Можно ли как-то вызвать MODX API в prepare?
avatar
Нужно использовать
$this->modx
avatar
Благодарю, в тот момент не было времени разбираться, выкрутился «по-Modx'овски», а по-вашему будет более правильно.
avatar
Или в этом случае лучше сделать prepare в виде сниппета? Но по препаре-сниппетам для PB вообще примеров нет…

Буду благодарен за пример.
Комментарий отредактирован 2019-07-16 14:48:16 пользователем Aharito
avatar
вывел в кофн. файле подключение owner в виде чанка
'templates' => [
	'owner' => '@CHUNK header',
	],

Все красиво вывелось, кроме плагинов, они вывелись просто в виде кода. Понимаю, что нужно что-то дописать, не нашел что именно. Подскажите, пожалуйста!
avatar
Помогло [[PageBuilder]] вместо [!PageBuilder!]
avatar
Как заставить сие чудо прикреплять png-формат картинок?
avatar
Прикреплять куда?
avatar
'type' => 'image'
avatar
Краткость в данном случае не уместна. Png загружается нормально, как и другие форматы — они поддерживаются в modx по умолчанию. И pagebuilder здесь не причем.

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

Если хотите, чтобы вам помогли — разворачивайте вопрос.
avatar
Да, с краткостью я перегнул. PNG — единичный случай. Скорее всего глюк у меня возник. Буду разбираться. Спасибо за ответ.
avatar
На будущее было бы удобно, если подключается шаблон в виде чанка @CHUNK имя чанка, чтобы можно было выводить что-то типа 'parametres' => [здесь все плейсхолдеры с чанка]. А дальше через 'fields' => [] как обычно выводить
avatar
Что-то ничего не понятно. Можете объяснить зачем это и привести пример?
avatar
Например, вывод ресурсов через DocLister в чанке news. В конфиге подключаем @CHUNK news, а ниже 'parametres' => [здесь указываем параметры DocLister]
avatar
Их же можно прямо в чанке указать.
avatar
Я хочу сделать универсальный вызов DocLister. Чтобы его можно было использовать для разных страниц с разным расположением блоков. Поэтому и хотел, чтобы в конфиге можно было это все указывать. Например, один и тот же конфиг сможет выводить Статьи, Новости, но вывод будет разный, tpl — разный, количество на странице разное, tvList разный
avatar
Не уверен, что понял замысел до конца. Возможно в этом случае нужно указать параметры в конфигурации блока, в свободной форме. А затем через препаре транслировать данные в шаблон.
avatar
Интересная идея. Спасибо. Буду пробовать
avatar
Писал выше. Есть блок Вопросы и ответы в виде табов. У каждого таба свой уникальный ID. Какой плейсхолдер нужно прописать, чтобы конструкция заработала? Писал index, iteration — выставляется для всех одинаковый ID.
avatar
Покажите конфиг
avatar

<?php

    return [
        'title' => 'FAQ',

		'show_in_templates' => [ 3 ],
        
        'image' => 'assets/plugins/pagebuilder/images/image.jpg',

        'container' => 'content',

        'templates' => [
            'owner' => '
				<section class="section section-sm bg-default">
					<div class="container"> 
					  <div class="row row-15 align-items-start card-group-custom card-group-corporate" id="accordion2" role="tablist" aria-multiselectable="false">
							<div class="col-md-12"> 
							[+questions+]
							</div>
						</div>
					</div>
				</section>
			',
			
			'questions' => '
				  <article class="card card-custom card-corporate">
					<div class="card-header" id="accordion2Heading[+count+]" role="tab">
					  <div class="card-title">
					  <a class="collapsed" role="button" data-toggle="collapse" data-parent="#accordion2" href="#accordion2Collapse[+count+]" aria-controls="accordion2Collapse[+count+]">
						[+title+]
						<div class="card-arrow"></div>
						</a> 
						</div>
					</div>
					<div class="collapse" id="accordion2Collapse[+count+]" role="tabpanel" aria-labelledby="accordion2Heading[+count+]">
						<div class="card-body">
						[+text+]
						</div>
					</div>
				  </article>
			'
        ],
		
		'fields' => [
			'questions' => [
				'caption' => 'Вопросы',
				'type' => 'group',
				'fields' => [
					'title' => [
						'caption' => 'Вопрос',
						'type' => 'text',
					],
					'text' => [
						'caption' => 'Ответ',
						'type' => 'textarea',
					],
					'count' => [
						'caption' => 'ID',
						'type' => 'text',
					],
					],
				],
			],
    ];


avatar
Не вижу в шаблонах [+iteration+]. Но вообще по смыслу вам подойдет [+questions_iteration+]. Просто [+iteration+] содержит итерацию блока в контейнере, а для групп полей используются именованные плейсхолдеры. Это написано вот здесь — docs.evo.im/04_extras/pagebuilder/templates-2.html
avatar
Спасибо. Работает. Мысль была такая, но вместо нижнего подчеркивания ставил точку. Теперь буду знать.
avatar
Будет сборка под Evolution 2.0 на базе контроллеров?
avatar
Не собирался такое делать, зачем? PageBuilder в mvc ближе к модели — получаешь данные, выводишь как хочешь.

Можно разве что переписать на блейд, но это только если формировать верстку в сниппете, а это же не вписывается в mvc.
avatar
Просто интересовал вопрос, как с ним работать в 2.0, как правильно его вызывать для той или иной страницы. Где хранить конфиги, как их использовать? Много вопросов теперь возникает.
Комментарий отредактирован 2019-11-11 09:03:47 пользователем Multiweb
avatar
Работайте также, как в 1.4.х.
avatar
Спасибо.
Комментарий отредактирован 2019-11-11 11:21:24 пользователем Multiweb
avatar
В общем посоздавал конфиги, а вот как их вывести, если я использую MVC?
avatar
В контроллере вызывайте сниппет PageBuilder с параметром renderTo=array, полученный массив данных передавайте в шаблон.
avatar

 $this->data['slider'] = $this->evo->runSnippet('PageBuilder', [
            'docid'=>$this->evo->documentIdentifier,
            'container'=>'content',
            'renderTo'=>'array'
        ])['0'];

Вот такой вызов в контроллере. Получается, что мы заносим данные, которые должны у нас размещаться в контейнере content (файл конфигурации slider.php)? К сожалению через Tracy смотрел, массив пустой (
avatar
Ну вызов правильный
avatar
Хотелось бы, если в конфиге
'hide_in_docs' => [ 4 ]

то для всех дочерних ресурсов тоже срабатывало.
avatar
Возможно, в вашей ситуации это и было бы полезным, но для всех остальных стало бы неприятным сюрпризом, что эта настройка делает не то, что от не нужно.
В вашем случае разруливайте на уровне шаблонов, либо формируйте список детей программно.
avatar
Это я образно написал,
'hide_in_parent' => [ 4 ]
, чтобы было понятней. То есть добавить в будущем такую опцию.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.