- •Что в этой книге
- •Настройки против Расширений
- •Как расширить 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 остается постоянным