Посадка сложных блоков на MIGX, или как выводить MIGX в MIGX

MIGX в MIGX MODX Revo
Продолжаем натяжку нашего шаблона на MODX при помощи MIGX. Сегодня покажу как сажать сложные блоки верстки, к примеру текстовые блоки со слайдером.

В прошлом уроке мы разобрали документацию MIGX и научились сажать на него простые блоки. В этом уроке я покажу вам как сажать сложные блоки.

В нашем шаблоне на главной странице есть блок с отзывами, состоящий из обычных полей: заголовок, подзаголовок (или текст) и слайдов, которые состоят из текста отзывов, имен и т.д..

Блок с отзывами

Html разметка данного блока:

<!-- ======= Testimonials Section ======= -->
<section id="testimonials" class="testimonials">
    <div class="container" data-aos="fade-up">

        <header class="section-header">
          <h2>Testimonials</h2>
          <p>What they are saying about us</p>
        </header>

        <div class="testimonials-slider swiper" data-aos="fade-up" data-aos-delay="200">
          <div class="swiper-wrapper">

            <div class="swiper-slide">
              <div class="testimonial-item">
                <div class="stars">
                  <i class="bi bi-star-fill"></i><i class="bi bi-star-fill"></i><i class="bi bi-star-fill"></i><i class="bi bi-star-fill"></i><i class="bi bi-star-fill"></i>
                </div>
                <p>
                  Proin iaculis purus consequat sem cure digni ssim donec porttitora entum suscipit rhoncus. Accusantium quam, ultricies eget id, aliquam eget nibh et. Maecen aliquam, risus at semper.
                </p>
                <div class="profile mt-auto">
                  <img src="assets/img/testimonials/testimonials-1.jpg" class="testimonial-img" alt="Посадка сложных блоков на MIGX, или как выводить MIGX в MIGX">
                  <h3>Saul Goodman</h3>
                  <h4>Ceo & Founder</h4>
                </div>
              </div>
            </div><!-- End testimonial item -->

            <div class="swiper-slide">
              <div class="testimonial-item">
                <div class="stars">
                  <i class="bi bi-star-fill"></i><i class="bi bi-star-fill"></i><i class="bi bi-star-fill"></i><i class="bi bi-star-fill"></i><i class="bi bi-star-fill"></i>
                </div>
                <p>
                  Export tempor illum tamen malis malis eram quae irure esse labore quem cillum quid cillum eram malis quorum velit fore eram velit sunt aliqua noster fugiat irure amet legam anim culpa.
                </p>
                <div class="profile mt-auto">
                  <img src="assets/img/testimonials/testimonials-2.jpg" class="testimonial-img" alt="Посадка сложных блоков на MIGX, или как выводить MIGX в MIGX">
                  <h3>Sara Wilsson</h3>
                  <h4>Designer</h4>
                </div>
              </div>
            </div><!-- End testimonial item -->

            <div class="swiper-slide">
              <div class="testimonial-item">
                <div class="stars">
                  <i class="bi bi-star-fill"></i><i class="bi bi-star-fill"></i><i class="bi bi-star-fill"></i><i class="bi bi-star-fill"></i><i class="bi bi-star-fill"></i>
                </div>
                <p>
                  Enim nisi quem export duis labore cillum quae magna enim sint quorum nulla quem veniam duis minim tempor labore quem eram duis noster aute amet eram fore quis sint minim.
                </p>
                <div class="profile mt-auto">
                  <img src="assets/img/testimonials/testimonials-3.jpg" class="testimonial-img" alt="Посадка сложных блоков на MIGX, или как выводить MIGX в MIGX">
                  <h3>Jena Karlis</h3>
                  <h4>Store Owner</h4>
                </div>
              </div>
            </div><!-- End testimonial item -->

            <div class="swiper-slide">
              <div class="testimonial-item">
                <div class="stars">
                  <i class="bi bi-star-fill"></i><i class="bi bi-star-fill"></i><i class="bi bi-star-fill"></i><i class="bi bi-star-fill"></i><i class="bi bi-star-fill"></i>
                </div>
                <p>
                  Fugiat enim eram quae cillum dolore dolor amet nulla culpa multos export minim fugiat minim velit minim dolor enim duis veniam ipsum anim magna sunt elit fore quem dolore labore illum veniam.
                </p>
                <div class="profile mt-auto">
                  <img src="assets/img/testimonials/testimonials-4.jpg" class="testimonial-img" alt="Посадка сложных блоков на MIGX, или как выводить MIGX в MIGX">
                  <h3>Matt Brandon</h3>
                  <h4>Freelancer</h4>
                </div>
              </div>
            </div><!-- End testimonial item -->

            <div class="swiper-slide">
              <div class="testimonial-item">
                <div class="stars">
                  <i class="bi bi-star-fill"></i><i class="bi bi-star-fill"></i><i class="bi bi-star-fill"></i><i class="bi bi-star-fill"></i><i class="bi bi-star-fill"></i>
                </div>
                <p>
                  Quis quorum aliqua sint quem legam fore sunt eram irure aliqua veniam tempor noster veniam enim culpa labore duis sunt culpa nulla illum cillum fugiat legam esse veniam culpa fore nisi cillum quid.
                </p>
                <div class="profile mt-auto">
                  <img src="assets/img/testimonials/testimonials-5.jpg" class="testimonial-img" alt="Посадка сложных блоков на MIGX, или как выводить MIGX в MIGX">
                  <h3>John Larson</h3>
                  <h4>Entrepreneur</h4>
                </div>
              </div>
            </div><!-- End testimonial item -->

          </div>
          <div class="swiper-pagination"></div>
        </div>

    </div>
</section><!-- End Testimonials Section -->

Натяжка блока с текстом и слайдером на MIGX

Приступим к посадке блока с отзывами.

Создание конфигураций

Данный блок у нас получается поделится на 2:

  1. обвертка (сама секция), заголовок и текст.
  2. слайды состоящие из своего набора полей: автар, отзыв, имя и т.д..

Приступим к посадке: Идем в управление MIGX и добавляем новый элемент с именем testimonials,  в поле замены пишем «Добавить отзывы» и переходим на вкладку «Formtabs».

Создаем конфигурацию

На вкладке «Formtabs» жмем по кнопке «Добавить элемент», и в сплывающем окне снова «Добавить элемент». И создаем по очереди элементы.

Создаем элементы конфигураций

  • Fieldname – h2, Caption – Заголовок.
  • Fieldname – text, Caption – Текст (или Подзаголовок), Input TV Type — textareamini.
  • Fieldname – slides, Caption – Добавить слайды, Input TV Type — migx, Configs — testimonials_config (здесь мы указываем имя 2й конфигурации, которую мы позже создадим), см. скрин ниже.

Создание поля с конфигурацией
Сохранить и закрыть. Должно получиться 3 поля:

3 созданных поля

Жмем Сохранить и закрыть, после чего переходим во вкладку Columns и создаем колонки.

  • Header – Заголовок, Field – h2.
  • Header – Текст, Field – text.

Сохраняем и закрываем. Теперь создаем еще одну конфигурацию:

  • Name: testimonials_config (ее мы указали в поле slides).
  • Замена «Добавить элемент»: Добавить отзывы.

Создаем конфигурацию для создания слайдов

И переходим к созданию полей во вкладке Formtabs.

Создаем поля:

  • Fieldname – text_reviews, Caption – Текст отзыва, Input TV type — textarea (или richtext если хотите подключить текстовый редактор).
  • Fieldname – name, Caption – Имя.
  • Fieldname – professiya, Caption – Профессия (или должность).
  • Fieldname – foto, Caption – Фото (или Аватар), Input TV type — image.

Переходим во вкладку Columns и создаем колонки:

  • Header – Текст отзыва, Field – text_reviews.
  • Header – Имя, Field – name.
  • Header – Профессия, Field – professiya.
  • Header – Фото, Field – foto, На вкладке «Renderer», в поле «Renderer» выберете this.renderImage.

Создание TV с конфигурацией MIGX

В дереве MODX на вкладке «Элементы», нажмите « напротив пункта «Дополнительные поля» и вводим следующее:

Создаем TV поле

  • «Имя» — testimonials; «Подпись» — Блок с отзывами, «Категория» — MIGX.
  • Во вкладке «Параметры ввода» в «Тип ввода» выбираем migx, а в поле «Конфигурации» вводим testimonials.
  • Во вкладке «Доступно для шаблонов» выбираем те шаблоны, для которых будет доступен ввод в это поле.
  • Можете указать источник файлов.
  • Сохраняем.

задаем конфигурацию для TV поля

Ввод данных

Откроем документ, для которого присвоено поле testimonials с MIGX с конфигурацией и введём в него какие-нибудь данные.

Заполняем блок данными

Не забудьте сохранить изменения.

Если при добавлении данных, у вас виснет MIGX, в окошке видите loading.., то вам сюда.

Вывод блока на страницу

Html разметку я написал в начале урока, разобьем ее на 2 куска (сразу можно сделать из них чанки — кто делает на modparser).

1. Обвертка и текст (чанк customer_reviews)

<!-- ======= Testimonials Section ======= -->
<section id="testimonials" class="testimonials">
    <div class="container" data-aos="fade-up">

        <header class="section-header">
          <h2>Testimonials</h2>
          <p>What they are saying about us</p>
        </header>

        <div class="testimonials-slider swiper" data-aos="fade-up" data-aos-delay="200">
          <div class="swiper-wrapper">

			Здесь идут слайды

          </div>
          <div class="swiper-pagination"></div>
        </div>

    </div>
</section><!-- End Testimonials Section -->

Ну и давайте сразу заполним данный чанк полями из первой конфигурации, для этого заменим строки:

<h2>Testimonials</h2>
<p>What they are saying about us</p>
меняем на
<h2>[[+h2]]</h2>
<p>[[+text]]</p>

2. Слайды, ну вернее нам нужен, только 1 слайд (чанк customer_reviews_slide):

<div class="swiper-slide">
              <div class="testimonial-item">
                <div class="stars">
                  <i class="bi bi-star-fill"></i><i class="bi bi-star-fill"></i><i class="bi bi-star-fill"></i><i class="bi bi-star-fill"></i><i class="bi bi-star-fill"></i>
                </div>
                <p>
                  Proin iaculis purus consequat sem cure digni ssim donec porttitora entum suscipit rhoncus. Accusantium quam, ultricies eget id, aliquam eget nibh et. Maecen aliquam, risus at semper.
                </p>
                <div class="profile mt-auto">
                  <img src="assets/img/testimonials/testimonials-1.jpg" class="testimonial-img" alt="Посадка сложных блоков на MIGX, или как выводить MIGX в MIGX">
                  <h3>Saul Goodman</h3>
                  <h4>Ceo & Founder</h4>
                </div>
              </div>
            </div><!-- End testimonial item -->

И тоже сразу заполним его полями из второй конфигурации:

<div class="swiper-slide">
              <div class="testimonial-item">
                <div class="stars">
                  <i class="bi bi-star-fill"></i><i class="bi bi-star-fill"></i><i class="bi bi-star-fill"></i><i class="bi bi-star-fill"></i><i class="bi bi-star-fill"></i>
                </div>
                <p>[[+text_reviews]]</p>
                <div class="profile mt-auto">
                  <img src="[[+foto]]" class="testimonial-img" alt="[[+name]]">
                  <h3>[[+name]]</h3>
                  <h4>[[+professiya]]</h4>
                </div>
              </div>
            </div><!-- End testimonial item -->

Теперь нам нужно связать 2 этих чанка (получится migx в migx), для этого вместо текста Здесь слайды, делаем вызов getImageList, в конечном итоге код чанка будет следующим:

<!-- ======= Testimonials Section ======= -->
<section id="testimonials" class="testimonials">
    <div class="container" data-aos="fade-up">

        <header class="section-header">
          <h2>[[+h2]]</h2>
          <p>[[+text]]</p> 
        </header>

        <div class="testimonials-slider swiper" data-aos="fade-up" data-aos-delay="200">
          <div class="swiper-wrapper">

			[[!getImageList? 
				&tpl=`customer_reviews_slide` 
				&value=`[[+slides]]` 
			]]

          </div>
          <div class="swiper-pagination"></div>
        </div>

    </div>
</section><!-- End Testimonials Section -->

Ну и остается сделать общий вывод migx в месте этого блока:

[[getImageList?
&tvname=`testimonials`
&tpl=`customer_reviews`
]]

На Fenom вообще можно ничего не бить на чанки, так весь код блока будет таким:

{set $rows = json_decode($_modx->resource.testimonials, true)}
<!-- ======= Testimonials Section ======= -->
<section id="testimonials" class="testimonials">
    <div class="container" data-aos="fade-up">
		{foreach $rows as $row}
        <header class="section-header">
          <h2>{$row.h2}</h2>
          <p>{$row.text}</p> 
        </header>
		{/foreach}
        <div class="testimonials-slider swiper" data-aos="fade-up" data-aos-delay="200">
          <div class="swiper-wrapper">
			{set $items = $row.slides | fromJSON} 
			{foreach $items as $idx => $item}
            <div class="swiper-slide">
              <div class="testimonial-item">
                <div class="stars">
                  <i class="bi bi-star-fill"></i><i class="bi bi-star-fill"></i><i class="bi bi-star-fill"></i><i class="bi bi-star-fill"></i><i class="bi bi-star-fill"></i>
                </div>
                <p>{$item.text_reviews}</p>
                <div class="profile mt-auto">
                  <img src="{$item.foto}" class="testimonial-img" alt="{$item.name}">
                  <h3>{$item.name}</h3>
                  <h4>{$item.professiya}</h4>
                </div>
              </div>
            </div><!-- End testimonial item -->
			{/foreach}
          </div>
          <div class="swiper-pagination"></div>
        </div>

    </div>
</section><!-- End Testimonials Section -->

Получаем рабочий блок

Сложный блок посаженный на Migx

Таким же образом можете посадить на MIGX к примеру вот такой блок:

Новый блок для посадки на MIGX

Если еще дальше пойти в изучение MIGX, то можно сделать целый редактор блоков (с возможностью перетаскивания и т.п.). Как раз об этом речь пойдет в следующем уроке: Делаем редактор блоков на Migx.

Поделиться с друзьями
Алексей

Веб-дизайнер и SEO оптимизатор. Занимаюсь созданием сайтов с 2010 года и их продвижение с 2012 года!

Оцените автора
( 1 оценка, среднее 5 из 5 )
Web-Revenue.ru
Добавить комментарий