- •Что в этой книге
- •Настройки против Расширений
- •Как расширить Joomla!
- •Компоненты (Components)
- •Модули (Modules)
- •Плагины (Plug-Ins)
- •Обзор тем
- •Создание пи (Toolbars) и Списков
- •Поддержание стиля и исключение повторений кода используя html функции
- •Доступ к бд и управление записями
- •Безопасность и предпочтительный способ получения переменных запроса
- •Меню управления
- •Управления логикой работы внутри Компонента
- •Конфигурация посредством xml-параметров
- •Упаковка и распространение
- •Наш Проект для примера
- •Приступая к разработке Компонента
- •Структура Компонента Joomla!
- •Запуск Компонента
- •Разделение на иа и ип в Joomla
- •Регистрация Компонента в бд
- •Создание пи
- •Доступные кнопки пи
- •Создание таблицы бд
- •Создание класса Table
- •Создание формы Обзора
- •Обработка данных
- •Создание Списка
- •Редактирование записей
- •Удаление записей
- •Разработка ип
- •Листинг Обзоров
- •Отображение Обзора
- •Генерация дружественных для поисковиков ссылок
- •Создание url сегментов
- •Парсинг url сегментов
- •Добавление комментариев
- •Отображение комментариев
- •Разработка Модуля
- •Регистрация Модуля в бд
- •Создание и настройка базового Модуля
- •Воспользуемся некоторыми помощниками (class Helper)
- •Пробуем различные стили
- •Попробуем смешать
- •Расширяем проект
- •Модель, Вид, Контроллер: Почему?
- •Построение Модели данных
- •Модель Все Обзоры
- •Модель одиночного Обзора
- •Миграция на Виды
- •Переключения посредством Контроллеров (Controllers)
- •Обновление связей и маршрутов
- •Реорганизация кода иа
- •Управление публикацией Обзоров
- •Добавление постраничной навигации
- •Управление Коментариями
- •Дополнительные пи
- •За кулисами: Плагины (Plug-Ins)
- •Запросы к бд
- •Плагин ссылка
- •Плагин справочной информации
- •Поиск Обзоров
- •Параметры
- •Добавление параметров к расширениям
- •Параметры для Модулей
- •Параметры для Плагинов
- •Параметры для Компонентов
- •Упаковываем все вместе
- •Список всех файлов
- •Упаковка Модуля
- •Упаковка Плагина
- •Упаковка Компонента
- •Включение sql-запросов
- •Создание пунктов меню иа
- •Дополнительные сценарии установки
- •Распространение
- •Содержание
Попробуем смешать
Наш Модуль настроен на освещение последних мнений наших посетителей, однако частые гости могут захотеть посмотреть прошлые Обзоры. Давайте исправим это несколько изменив Модуль. Замените строки в mod_reviews.php где в выделенном коде показана функция $list:
<?php
defined('_JEXEC') or die('Restricted access');
require(dirname(__FILE__).DS.'helper.php');
$random = $params->get('random', 0);
if($random)
{
$list = modReviewsHelper::getRandomReview();
}
else
{
$list = modReviewsHelper::getReviews($params);
}
require(JModuleHelper::getLayoutPath
('mod_reviews', 'default'));
?>
Вместо того чтобы просто показать все Обзоры, сейчас мы заполним $list основываясь на параметрах Модуля. Объект $params автоматически помещается в глобальные, с предустановленной настройкой для нашего Модуля. Мы используем функцию get(), чтобы поместить случайные параметры в $random, по умолчанию 0. Далее, мы проверяем значение $random. Если оно отлично от нуля, вызываем функцию getRandomReview() его (значение) мы будем вставлять в modReviewsHelper. В противном случае, мы получаем Обзоры так, как делали раньше. Откройте helper.php и добавьте следующую функцию в класс modReviewsHelper:
function getRandomReview()
{
$db =& JFactory::getDBO();
$query = "SELECT id, name, quicktake FROM #__reviews";
$db->setQuery( $query );
$rows = $db->loadObjectList();
$i = rand(0, count($rows) - 1 );
$row = array( $rows[$i] );
return $row;
}
Функция сначала получает ссылку на текущее соединение с БД. Запрос получает столбцы id, name и quicktake из всех строк в таблице jos_reviews.
После того как все строки были погружены в $rows, используем PHP-функцию rand(), которая выдаст случайное значение между 0 и числом строк минус одна включительно. Переменная $row содержит массив с одним элементом, найденным случайно по индексу в массиве $rows. Важно обернуть $rows[$i] в массив, потому что такой результат [формат. прим.переводчика] ожидает получатель.
Сохраните файл и обновите страницу в браузере. Затем обновите ее повторно. Если повезет, Обзоры должны меняться случайно
Резюме
Наш Модуль установлен и работает и мы в состоянии привлечь посетителей определенным содержанием. Вновь введенные Обзоры будут автоматически отражены в Модуле. Мы создали вспомогательный класс (helper) для централизации доступа к данным и функций отображения. Было добавлено несколько различных стилей, так что у нас есть несколько вариантов отображения. Модуль может показать нашим гостям разнообразие ресторанов, которые мы рассмотрели, и может быть использован в любом месте на сайте
Расширяем проект
Наши Компоненты и Модули делают хорошую работу по управлению Обзорами и принимая комментарии. Однако мы могли бы сделать множество модификаций, чтобы дать нашим Обзорам больше разных отображений (видов). Кроме того, теперь у нас есть комментарии и мы должны найти способ их модерировать. В этой главе мы сделаем следующие изменения и дополнения:
-
Создание модели данных
-
Переход на просмотры (виды, отображения)
-
Переключение через Контроллеры
-
Управление публикацией Обзоров
-
Разбивка длинных списков на страницы
-
Управление комментариями
-
Дополнительные ПИ