Как реализовать табы Bootstrap в MODX REVO + MIGX
Всем ДВС!
Подскажите может кто нибудь сталкивался с реализацией табов

Всего табов 6, 4 открытые, и 2 закрытые


Сначала хотел реализовать через pdoResources и каждому ресурсу присвоить поля для отображения в табах, но не получилось т.к. tabs Bootstrap(у) необходима связь между пангинацией (вкладками) и самим телом. А тело выполнено в виде контейнера с блоками (в моем случае ресурсами).
Вот код:
Может быть кто нибудь сталкивался с данной проблемой, есть готовое решение, или какая то информация по этому поводу?
Подскажите может кто нибудь сталкивался с реализацией табов
Всего табов 6, 4 открытые, и 2 закрытые
Сначала хотел реализовать через pdoResources и каждому ресурсу присвоить поля для отображения в табах, но не получилось т.к. tabs Bootstrap(у) необходима связь между пангинацией (вкладками) и самим телом. А тело выполнено в виде контейнера с блоками (в моем случае ресурсами).
Вот код:
<div class="price-tabs">
<!-- табы -->
<ul class="nav nav-tabs row" role="tablist">
<div class="col-md-1"></div>
<li role="presentation" class="active col-md-2"><a href="#level-1" aria-controls="level-1" role="tab" data-toggle="tab"><i class="icon-3"></i><span>1 класс</span></a></li>
</ul>
<!-- табы(конец) -->
<!-- Табы контент -->
<div class="tab-content">
<div role="tabpanel" class="tab-pane fade in active" id="level-1">
<div class="row row-flex">
<div class="col-md-3 col-xs-12">
<div class="table-price">
<h2 class="text-center">Экспресс</h2>
<p class="table-count text-center">100 <i class="fa fa-rub" aria-hidden="true"></i></p>
<p class="table-time text-center"><i class="fa fa-clock-o" aria-hidden="true"></i> 25 минут</p>
<ul class="list-unstyled table-list text-left">
<li>Мойка автомобиля напором воды без шампуня</li>
</ul>
<a class="btn btn-default table-btn btn-block" href="#" role="button">Записаться</a>
</div>
</div>
<div class="col-md-3 col-xs-12">
<div class="table-price">
<h2 class="text-center">Экспресс "ПЛЮС"</h2>
<p class="table-count text-center">200 <i class="fa fa-rub" aria-hidden="true"></i></p>
<p class="table-time text-center"><i class="fa fa-clock-o" aria-hidden="true"></i> 35 минут</p>
<ul class="list-unstyled table-list text-left">
<li>Мойка с использованием шампуня</li>
<li>Без сушки кузова</li>
</ul>
<a class="btn btn-default table-btn btn-block" href="#" role="button">Записаться</a>
</div>
</div>
<div class="col-md-3 col-xs-12">
<div class="table-price-sale">
<h2 class="text-center">Стандарт</h2>
<p class="table-count-sale text-center">300 <i class="fa fa-rub" aria-hidden="true"></i></p>
<p class="table-time-sale text-center"><i class="fa fa-clock-o" aria-hidden="true"></i> 45 минут</p>
<ul class="list-unstyled table-list-sale text-left">
<li>Мойка с использованием шампуня</li>
<li>Мойка порогов, арок колес, ковриков</li>
<li>Сушка автомобиля</li>
<li>Продувка воздухом</li>
</ul>
<a class="btn btn-default table-btn-sale btn-block" href="#" role="button">Записаться</a>
</div>
</div>
<div class="col-md-3 col-xs-12">
<div class="table-price">
<h2 class="text-center">Комфорт</h2>
<p class="table-count text-center">400 <i class="fa fa-rub" aria-hidden="true"></i></p>
<p class="table-time text-center"><i class="fa fa-clock-o" aria-hidden="true"></i> 45-60 минут</p>
<ul class="list-unstyled table-list text-left">
<li>Мойка с использованием шампуня</li>
<li>Мойка порогов, арок колес, ковриков</li>
<li>Пылесос салона</li>
<li>Сушка автомобиля</li>
<li>Продувка воздухом</li>
</ul>
<a class="btn btn-default table-btn btn-block" href="#" role="button">Записаться</a>
</div>
</div>
</div>
<div class="title-page text-center">
<h3>
<a role="button" data-toggle="collapse" href="#collapseExample" aria-expanded="false" aria-controls="collapseExample" href="">
<span>
<i class="fa fa-arrow-circle-o-down" aria-hidden="true"></i>
</span>
</a>
</h3>
<p class="text-center">Дополниьельно</p>
</div>
<div class="collapse" id="collapseExample">
<div class="row row-flex">
<div class="col-md-4 col-md-offset-2 col-xs-12">
<div class="table-price">
<h2 class="text-center">Комплекс</h2>
<p class="table-count text-center">550 <i class="fa fa-rub" aria-hidden="true"></i></p>
<p class="table-time text-center"><i class="fa fa-clock-o" aria-hidden="true"></i> 45-60 минут</p>
<ul class="list-unstyled table-list text-left">
<li>Мойка с использованием шампуня</li>
<li>Мойка порогов, арок колес, ковриков</li>
<li>Пылесос салона и багажника</li>
<li>Чистка пластика (обделки салона)</li>
<li>Мойка стекол изнутри</li>
<li>Сушка автомобиля</li>
<li>Продувка воздухом</li>
</ul>
<a class="btn btn-default table-btn btn-block" href="#" role="button">Записаться</a>
</div>
</div>
<div class="col-md-4 col-xs-12">
<div class="table-price">
<h2 class="text-center">Престиж</h2>
<p class="table-count text-center">750 <i class="fa fa-rub" aria-hidden="true"></i></p>
<p class="table-time text-center"><i class="fa fa-clock-o" aria-hidden="true"></i> от 60 минут</p>
<ul class="list-unstyled table-list text-left">
<li>Мойка с использованием шампуня</li>
<li>Мойка порогов, арок колес, ковриков</li>
<li>Пылесос салона и багажника</li>
<li>Чистка пластика (обделки салона)</li>
<li>Мойка стекол изнутри</li>
<li>Чернение резины</li>
<li>Покрытие воском</li>
<li>Сушка автомобиля</li>
<li>Продувка воздухом</li>
</ul>
<a class="btn btn-default table-btn btn-block" href="#" role="button">Записаться</a>
</div>
</div>
</div>
</div>
</div>
</div>Можно попробовать реализовать в виде дополнительных полей, но это 5 классов машин, в каждом по 5 видов мойки, в каждом виде около 5-7 полей, это около 150 штук, просто не вариант такую грамотень городить)Может быть кто нибудь сталкивался с данной проблемой, есть готовое решение, или какая то информация по этому поводу?
Комментарии: 8
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
У меня тройная вложенность получается, сейчас как раз колдую!
Что то мне уже кажется что 3 уровня не получится.
Но попробую потом отпишу!
А то у меня вверстка получается
.col-md-3 * 4
.col-md-4 col-md-offset-2 * 2
Как их вывести то?
Или возможно вывести pdoResources а внутри уже MIGX?
Отбой pdoResouces нужно тогда ресурсы создавать…
Ну а в вашем случае, в чанке результата доступны плейсхолдеры (Вот документация)
С их помощью творите что вам угодно
В общем нашел решение, хочу выложить возможно кому то будет полезно, т.к. я бился над этой проблемой около 17 часов…
Задача была следующая, есть прайс-лист, он выполнен в виде вкладок (tab bootstrap), нужно настроить все так, что бы конечный пользователь сайта без труда мог редактировать данные табы из админки.
Сначала я хотел реализовать это с помощью pdoResources но для этого необходимо:
1) Создать структуру ресурсов
2) Городить мега вызов сниппета, чанками типа , , т.к body вкладок имело по 6 элементов (ресурсов).
3) Создать MIGX поля для вывода информации, цены, время работ, выполняемых услуг.
Поэтому в итоге я отказался от этой затеи, посчитал что конечный пользователь не разберется, так как он очень далек от всего этого.
Написав на форуме и попутно штудируя интернет, я пришел к решению вложенности MIGX в MIXG.
Прочитав куча информации, просмотрев куча примеров и изучив несколько видео приступил к работе.
Структура MIXG полей у меня получилась следующая:
Создал три поля с типом ввода MIGX:
1) Вкладки формы class-auto:
Разметка колонок
На выходе получаем следующее:
Устанавливаю значение для шаблона на котором я хотел выводить данное поле (главная страница).
2) Вкладки формы price-meta:
Разметка колонок
Доступно для шаблонов ни чего не устанавливаю.На выходе получаю следующее:
Теперь я могу добавить второй уровень вложенности
3) Вкладки формы price-tabs:
Разметка колонок
Доступно для шаблонов ни чего не устанавливаю.На выходе получаю следующее:
Теперь я могу добавить третий уровень вложенности, значения цены, времени проводимых работ и услуги которые относятся к тому или другому методу мойки машины.
Все готово, теперь необходимо осуществить вызов сниппета getImageList и отобразить все на сайте.
Первым делом выводим сниппет в шаблоне на котором я хотел выводить все данный, у меня этот чанк называется [[$Price]]
Второй я создал чанк class-auto и в нем вывел
Третий чанк price-class имеет вывод, т.к. у меня по 6 элементов в теле вкладок, я решил осуществить вывод с классом col-md-2:
И последний чанк price-meta
Сначало я все делал без разметки вкладок что бы понять как и что будет выводится.
Получилась следующая структура
Я столкнулся с трудностью, которую так и не смог решить, если кто то подскажет буду очень признателен!!!
Трудность состоит в том, что структура кода вкладок Bootstrap выглядит следующим образом:
А я получил что то типа:
Так как родительские пункты утверждены и они не измены я подумал что заказчик вряд ли захочет изменять их название, поэтому вывод в чанке [[$Price]] я сделал следующий:
Элементы навигации я сделал статичными и вывел за пределы сниппета getImageList.
Для работоспособности прописал классы А в самом выводе тела указал следующий код:
Так как родительских пунктов у меня всего 5, и следовательно тел с элементами (табами) у меня тоже пять, я могу точно знать порядковый номер. Вывод плейсхолдера [[+idx]] соответствует прописанному классу в навигации.
Так же есть проблема с классом .active для активной вкладки, она решается так:
если первый таб имеет порядковый номер 1, то ему присвоить класс .
Вот и все, пошаманив над стилями все получилось!
Написал для себя, что бы не забыть как делать, ну и потратил на всю работу реально 17 часов, возможно кому то это приходится!!!
Возможно решение корявое, но по крайней мере рабочее, лучше я со своими знаниями придумать ничего не смог!
Вот итог:
Вроде все протестировал все работает!