Minicck, Joomline и Joomla 3

В этой статье я попытаюсь рассказать о приемуществах использования miniCCK на сайта использующих Joomla 3.

Подопытным будет сайт Joomline, который мы перевели на Joomla 3.

На Joomla 2.5 мы использовали свой плагин для получения, вот такого эффекта.

Свой плагин — это конечно хорошо, но когда вам хочется добавить еще одно поле, то вам требуется уже программирование, как на уровне фронта, так на уровне админки. В общем расширяемость такого решения нам не очень нравилась. Кстати об этом я уже писал.

Так бы и оставалось до сих пор если бы не желание перейти на Joomla 3. И вот мы выделили немного времени, начали переход c Joomla 2.5 на Joomla 3. На удивление все расширения, которые были на сайте Joomline отлично продолжили работать на сайте на Joomla 3. Исключение был один модуль, который был несколько топорно написан, скорей с учетом совместимости c Joomla 1.5.

После обновления мы:

  1. Установили miniCCK.
  2. Создали поля, всего около 12 штук.
  3. Задали необходимые значения полям.
  4. Определили поля к типу вывода.
  5. Написали свой фронт вывода (мы работали с полями как объектами и не использовали встроенный шаблон).

Хотелось бы отметить, что для нормальной работы с плагином у вас должно быть хоть какое-то понятие о PHP, HTML и CSS. Теперь я расскажу о пятом пункте, так как он самый интересный.

Первым делом мы создали собственный шаблон для com_content

site.ru/templates/шаблон_сайта/html/com_content/article/minicck.php

Создали мы из стандартного шаблона com_content — default.php. Кто не понимает о чем, я почитайте в интернете «переопределение шаблонов Joomla».

Переопределили некоторые поля minicck. В примере будет поле чекбокс.

Копируем

site.ru/plugins/system/minicck/fields/mccheckbox/tmpl/default.php

в папку

site.ru/templates/шаблон_сайта/html/plg_system_minicck/fields/mccheckbox/

<?php echo implode(' ', $data); ?>

Мы переопределяли еще и поле mcimage. Делается все аналогично.

Далее мы начали изменять шаблон com_content minicck.php.

Добавляем в него над областью вывода контента следующую конструкцию:

<div class="content_extensions"><table width="100%" class="table_ce"><br />              <tr><br />                <td  rowspan="4" style="height: 150px;" width="200" valign="middle" align="center"><div ><?php echo $this->item->minicck->getFieldValue($this->item->id, 'field1');?></div></td><br />                <td>Версия</td><br />                <td><?php echo $this->item->minicck->getFieldValue($this->item->id, 'field2');?></td><br />                <td>&nbsp;&nbsp;</td><br />                <td><a rel="nofollow" target="_blank" href="<?php echo $this->item->minicck->getFieldValue($this->item->id, 'field6');?>" class="btn   btn-info btn-small btn-w100">Демонстрация</a></td><br />              </tr><br />              <tr><br />                <td>Совместимость</td><br />                <td><?php echo $this->item->minicck->getFieldValue($this->item->id, 'sovmestimostrasshirenija');?></td><br />                <td>&nbsp;&nbsp;</td><br />                <td><a rel="nofollow" target="_blank" href="<?php echo $this->item->minicck->getFieldValue($this->item->id, 'field7');?>" class="btn btn-success btn-small btn-w100">Скачать</a></td><br />                <br />              </tr><br />              <tr><br />                <td>Состав пакета</td><br />                <td><?php echo $this->item->minicck->getFieldValue($this->item->id, 'field3');?></td><br />                <td>&nbsp;&nbsp;</td><br />                <td><a href="<?php echo $this->item->minicck->getFieldValue($this->item->id, 'field10');?>" class="btn   btn-info btn-small btn-w100">Документация</a></td><br />              </tr><br />              <tr><br />                <td>Условия распространения</td><br />                <td><?php echo $this->item->minicck->getFieldValue($this->item->id, 'field5');?></td><br />                <td>&nbsp;&nbsp;</td><br />                <td><a href="<?php echo $this->item->minicck->getFieldValue($this->item->id, 'field11');?>" class="btn   btn-info btn-small btn-w100">Пожертвовать</a></td><br />              </tr><br />            </table></div>

Где код:

<?php echo $this->item->minicck->getFieldValue($this->item->id, 'field11');?>

Отвечает за вывод значение поля. field11 — это id поля.

Собственно на выходе мы получем вот такую картинку:

 

3 комментария
Очень достойная реализация, рад что ты использовал режим вывода объектом, как самый гибкий и профессиональный. Видя такие сайты я понимаю что мой труд не пропал даром. Скоро сам пойду по твоим стопам.
Отличный кейс, Вадим! Тоже как раз перевожу в данный момент свой блог на J3… За пример использования переопределений и MiniCCK отдельный респект.
Ну дык страемся… на самом деле у нас более сложная структура используется… мы уже нагородили кучу условий...
Но для примера я думаю пойдет.
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.