- •Что в этой книге
 - •Настройки против Расширений
 - •Как расширить Joomla!
 - •Компоненты (Components)
 - •Модули (Modules)
 - •Плагины (Plug-Ins)
 - •Обзор тем
 - •Создание пи (Toolbars) и Списков
 - •Поддержание стиля и исключение повторений кода используя html функции
 - •Доступ к бд и управление записями
 - •Безопасность и предпочтительный способ получения переменных запроса
 - •Меню управления
 - •Управления логикой работы внутри Компонента
 - •Конфигурация посредством xml-параметров
 - •Упаковка и распространение
 - •Наш Проект для примера
 - •Приступая к разработке Компонента
 - •Структура Компонента Joomla!
 - •Запуск Компонента
 - •Разделение на иа и ип в Joomla
 - •Регистрация Компонента в бд
 - •Создание пи
 - •Доступные кнопки пи
 - •Создание таблицы бд
 - •Создание класса Table
 - •Создание формы Обзора
 - •Обработка данных
 - •Создание Списка
 - •Редактирование записей
 - •Удаление записей
 - •Разработка ип
 - •Листинг Обзоров
 - •Отображение Обзора
 - •Генерация дружественных для поисковиков ссылок
 - •Создание url сегментов
 - •Парсинг url сегментов
 - •Добавление комментариев
 - •Отображение комментариев
 - •Разработка Модуля
 - •Регистрация Модуля в бд
 - •Создание и настройка базового Модуля
 - •Воспользуемся некоторыми помощниками (class Helper)
 - •Пробуем различные стили
 - •Попробуем смешать
 - •Расширяем проект
 - •Модель, Вид, Контроллер: Почему?
 - •Построение Модели данных
 - •Модель Все Обзоры
 - •Модель одиночного Обзора
 - •Миграция на Виды
 - •Переключения посредством Контроллеров (Controllers)
 - •Обновление связей и маршрутов
 - •Реорганизация кода иа
 - •Управление публикацией Обзоров
 - •Добавление постраничной навигации
 - •Управление Коментариями
 - •Дополнительные пи
 - •За кулисами: Плагины (Plug-Ins)
 - •Запросы к бд
 - •Плагин ссылка
 - •Плагин справочной информации
 - •Поиск Обзоров
 - •Параметры
 - •Добавление параметров к расширениям
 - •Параметры для Модулей
 - •Параметры для Плагинов
 - •Параметры для Компонентов
 - •Упаковываем все вместе
 - •Список всех файлов
 - •Упаковка Модуля
 - •Упаковка Плагина
 - •Упаковка Компонента
 - •Включение sql-запросов
 - •Создание пунктов меню иа
 - •Дополнительные сценарии установки
 - •Распространение
 - •Содержание
 
Пробуем различные стили
Вспомогательный класс [или класс helper. прим.переводчика], ничего не выводит. Вместо этого, renderReview() форматирует ссылки, а затем вызывает JModuleHelper функцию getLayoutPath() чтобы подключить стиль-файл с именем _review.
Создайте папку tmpl в /modules/mod_reviews, и файл _review.php внутри tmpl с такими строками:
<?php defined('_JEXEC') or die('Restricted access'); ?>
<a href="<?php echo $link ?>"><?php echo $review->name; ?></a><br />
Соглашение о нижнем подчеркивании в начале _review служит для напоминания нам, что стиль предназначен для внутреннего использования. Он не будет предлагается в качестве выбора администратору. В дополнение к этому внутреннему стилю, мы можем создать другие стили с различными вариантами отображения. Для начала мы создадим один с именем default. Добавьте файл default.php в /modules/mod_reviews/tmpl с таким кодом:
<?php
defined('_JEXEC') or die('Restricted access');
foreach ($list as $review){
modReviewsHelper::renderReview($review, $params);
}
?>
Обратите внимание, что этот стиль проходит циклом по списку Обзоров, вызывая функцию класса helper, которая готовит одиночное отображение, которое в свою очередь загружается в стиль _review. Используя такой же метод, мы создадим стиль маркированного (bulleted) списка. Создайте файл bulleted.php в /modules/mod_reviews/tmpl и добавьте следующий код для создания ссылок в виде маркированного списка:
<?php defined('_JEXEC') or die('Restricted access'); ?>
<ul>
<?php
foreach ($list as $review)
{
echo "<li>";
modReviewsHelper::renderReview($review, $params);
echo "</li>";
}
?>
</ul>
Стиль маркированного списка использует ту же основную логику, что и стиль default с той лишь разницей, что она выводится маркированной. Оба варианта в конечном итоге загружают стиль _review через вспомогательную функцию, обеспечивая форматирование ссылок в соответствии со стилями отображения.
Теперь у нас есть два различных варианта отображения и вспомогательный класс, но ничего из этого еще доступно в Модуле. Откройте mod_reviews.php и замените содержимое следующим кодом:
<?php
defined('_JEXEC') or die('Restricted access');
require(dirname(__FILE__).DS.'helper.php');
$list = modReviewsHelper::getReviews($params);
require(JModuleHelper::getLayoutPath('mod_reviews'));
?>
Первый require() подключает вспомогательный класс, что мы только что написали. Далее, мы получаем сортированный набор последних Обзоров. Наконец, мы используем getLayoutPath(), чтобы получить отображение в стиле. При отсутствии второго параметра в getLayoutPath() будет подгружен стиль default.
Сохраните все открытые файлы и обновите главную страницу в браузере. Модуль должен выглядеть так же, как и в последнем скриншоте. Теперь вернемся к mod_reviews.php и отредактируем вызов getLayoutPath() так, чтобы вызывался стиль маркированного списка, а не default:
require(JModuleHelper::getLayoutPath('mod_reviews', 'bulleted'));
Сохраните все файлы и обновите страницу в браузере. Модуль должен выглядеть примерно так:

Было бы неплохо, если бы мы могли показать небольшую часть Обзора вместе с каждой ссылкой. Вернитесь в /modules/mod_reviews/tmpl/_review.php и добавьте следующий выделенный код
<a href="<?php echo $link ?>"><?php echo $review->name;
?></a><br />
<p>"<?php echo $review->quicktake ?>"</p><br />
Обновите страницу в браузере. Если вы заполнили поле quicktake в ИА, Вы должны увидеть что-то подобное:

Вернитесь к mod_reviews.php и установите второй параметр getLayoutPath() как default. После сохранения файла и обновления браузера, вы должны увидеть те же Обзоры и кавычки, как и раньше, только без маркирования. Хотя стиль и меняется, выход из _review остается постоянным

