- •Что в этой книге
- •Настройки против Расширений
- •Как расширить Joomla!
- •Компоненты (Components)
- •Модули (Modules)
- •Плагины (Plug-Ins)
- •Обзор тем
- •Создание пи (Toolbars) и Списков
- •Поддержание стиля и исключение повторений кода используя html функции
- •Доступ к бд и управление записями
- •Безопасность и предпочтительный способ получения переменных запроса
- •Меню управления
- •Управления логикой работы внутри Компонента
- •Конфигурация посредством xml-параметров
- •Упаковка и распространение
- •Наш Проект для примера
- •Приступая к разработке Компонента
- •Структура Компонента Joomla!
- •Запуск Компонента
- •Разделение на иа и ип в Joomla
- •Регистрация Компонента в бд
- •Создание пи
- •Доступные кнопки пи
- •Создание таблицы бд
- •Создание класса Table
- •Создание формы Обзора
- •Обработка данных
- •Создание Списка
- •Редактирование записей
- •Удаление записей
- •Разработка ип
- •Листинг Обзоров
- •Отображение Обзора
- •Генерация дружественных для поисковиков ссылок
- •Создание url сегментов
- •Парсинг url сегментов
- •Добавление комментариев
- •Отображение комментариев
- •Разработка Модуля
- •Регистрация Модуля в бд
- •Создание и настройка базового Модуля
- •Воспользуемся некоторыми помощниками (class Helper)
- •Пробуем различные стили
- •Попробуем смешать
- •Расширяем проект
- •Модель, Вид, Контроллер: Почему?
- •Построение Модели данных
- •Модель Все Обзоры
- •Модель одиночного Обзора
- •Миграция на Виды
- •Переключения посредством Контроллеров (Controllers)
- •Обновление связей и маршрутов
- •Реорганизация кода иа
- •Управление публикацией Обзоров
- •Добавление постраничной навигации
- •Управление Коментариями
- •Дополнительные пи
- •За кулисами: Плагины (Plug-Ins)
- •Запросы к бд
- •Плагин ссылка
- •Плагин справочной информации
- •Поиск Обзоров
- •Параметры
- •Добавление параметров к расширениям
- •Параметры для Модулей
- •Параметры для Плагинов
- •Параметры для Компонентов
- •Упаковываем все вместе
- •Список всех файлов
- •Упаковка Модуля
- •Упаковка Плагина
- •Упаковка Компонента
- •Включение sql-запросов
- •Создание пунктов меню иа
- •Дополнительные сценарии установки
- •Распространение
- •Содержание
Параметры
Наши Обзоры удовлетворяют всем особенностям, но есть некоторые проблемы.
Хотелось бы иметь конкретный контроль над определенными функциями. К счастью, для этого мы не должны добавлять какие-либо специальные записи. Лучше мы сосредоточимся на логике. Появилась необходимость немного переписать наши расширения, однако, никаких серьезных изменений.
Добавим параметры для расширений:
-
Параметры для Модулей
-
Параметры Плагины
-
Параметры для Компонентов
Добавление параметров к расширениям
Ранее мы выполняли запросы, чтобы зарегистрировать расширения в Joomla!. В таблицах, где мы вставляли эти данные, есть столбец с именем Params. Эта колонка позволяет хранить конфигурацию значений параметров в базе данных. Однако колонка сама по себе не обеспечивает любой формат для значений параметров. Для этого мы введем значения параметров, как часть XML-документа для настройки. Этот файл будет рядом с нашим основным файлом Модуля и будет содержать основную информацию идентификации, а также список всех возможных настроек
Параметры для Модулей
Модуль, что мы писали в Обзорах уже содержит логику для различных типов отображения и различных сценариев извлечения данных. Поэтому не составит большого труда создать параметры вывода и использовать их по необходимости. В /modules/mod_reviews создайте XML-файл конфигурации mod_reviews.xml и введите такой код:
<?xml version="1.0" encoding="utf-8"?>
<install type="module" version="1.5">
<name>Restaurant Reviews</name>
<author>Sumptuous Software</author>
<creationDate>January 2007</creationDate>
<copyright>(C) 2007</copyright>
<license>Commercial</license>
<authorEmail>support@packtpub.com</authorEmail>
<authorUrl>www.packtpub.com</authorUrl>
<version>1.0</version>
<description>A module for promoting restaurant
reviews.</description>
<params>
<param name="random" type="radio" default="0" label="Randomize"
description="Show random reviews">
<option value="0">No</option>
<option value="1">Yes</option>
</param>
<param name="@spacer" type="spacer"
default="" label="" description="" />
<param name="items" type="text" default="1" label="Display #"
description="Number of reviews to display" />
<param name="style" type="list" default="default" label="Display
style" description="The style to use for displaying the reviews.">
<option value="default">Flat</option>
<option value="bulleted">Bulleted</option>
</param>
</params>
</install>
Документ XML начинается с определения стандарта XML, все остальные элементы заключены в <install>. Этот элемент определяет, что описываемое расширение является Модулем и предназначено для Joomla!. Внутри <install>, у нас есть несколько элементов, которые предназначены для идентификации: name, author, creation date, copyright, license, author email, author URL, version и description. За исключением description они будут появляться в Модулях в Extension Manager в ИА.
После элементов идентификации, добавляется элемент <params>, который включает несколько элементов <param>. Для нашего Модуля мы хотели бы предоставить возможность управления выводом Обзоров в случайном порядке, количеством выводимых Обзоров за раз и стиля отображения.
Документ XML позволяет не только создавать эти параметры, но и определить как они будут отображаться в ИА. Управление выводом Обзоров в случайном порядке имеет опции да и нет, поэтому целесообразно использовать переключатель. Назначим этому параметру имя random (в соответствии с ранее созданным кодом), тип radio, значение по умолчанию 0 (для No), текст для label = Randomize, и описание Show random reviews. Внутри определяем два элемента <option>, один со значением 0 и соответствующим текстом, а другой с 1 - очень похоже на синтаксис HTML тега options, что в select. Два других параметра для работы с дисплеем, поэтому отделимся от предыдущего. Параметр с именем @spacer имеет тип spacer и предназначен как раз для этого. Для выбора количества (items) отображений мы хотим, чтобы администратор просто вводил цифру. Используем параметр типа text и устанавливаем значение по умолчанию 1.
Стили необходимо выбирать из доступных. Мы используем тип параметров list и определяем варианты плоский (flat) и маркированный (bulleted) аналогично тому, как мы делали для радио-кнопки.
Какие параметры доступны для использования?
Модули, Плагины Компоненты позволяют определить параметры конфигурации через файлы XML. Многие распространенные типы параметров определены заранее и могут быть использованы в любом расширении. Каждый параметр, что вы определяете должен иметь пять основных атрибутов. Во-первых, вы должны дать параметру имя (name), чтобы вы могли ссылаться на него в коде. Далее, необходимо значение по умолчанию (default). Оно будет отображаться и использоваться, если значение не выбрано. Чтобы определить параметр, вы должны дать ему как отображаемое название (label), так и описание (description), которое появляется при наведении курсора мыши над ним. Наконец, необходимо указать тип параметра. Вот список типов по категориям:
Содержание:
section |
Список всех опубликованных разделов |
category |
Список всех опубликованных категорий |
Ввод текста:
text |
стандартный ввод текста |
textarea |
текстовое поле |
password |
стандартный ввод текста, но символы заменены звездочками |
editors |
для ИА, чтобы отобразить WYSIWYG редактор для ввода |
Выбор:
menu |
Список всех опубликованных меню |
menuitem |
Все опубликованные пункты меню в виде списка |
filelist |
список файлов для выбора, с учетом базового пути папки |
folderlist |
список папок для выбора, с учетом базового пути папки |
ImageList |
список изображений для выбора, с учетом базового пути папки |
list |
список элементов для выбора. Прямо указаны в определении параметра |
radio |
список радио-кнопок для выбора. Прямо указаны в определении параметра |
sql |
Создает выпадающий список из условии запроса SQL |
Предопределенные:
helpsites |
список веб-сайтов с переводами файла справки для выбора |
languages |
список установленных языков для выбора |
spacer |
создает визуальное разделение между параметрами; не имеет входных значений |
timezones |
список всех мировых часовых поясов |
Другие:
hidden |
Создает скрытый элемент формы с указанными value и name |
После сохранения XML-документа, перейдите в Extensions / Module Manager в ИА. Здесь выберите из списка Restaurant Reviews, и вы должны увидеть такой экран:
Попробуйте установить параметры, сохранить Модуль, открыть его вновь – Вы должны увидеть изменения.
Теперь нам необходимо сделать некоторые изменения в коде, чтобы параметры начали работать. Откройте /modules/mod_reviews/mod_reviews.php и измените код (изменения выделены):
<?php
defined('_JEXEC') or die('Restricted access');
require(dirname(__FILE__).DS.'helper.php');
$random = $params->get('random', 0);
$style = $params->get('style', 'default');
if($random)
{
$list = modReviewsHelper::getRandomReview();
}
else
{
$list = modReviewsHelper::getReviews($params);
}
require(JModuleHelper::getLayoutPath('mod_reviews', $style));
?>
Для Модулей $params доступно глобально. Этот объект имеет функцию get(), которая возвращает значение параметра по имени (и, опционально, значение по умолчанию). Наш предыдущий код обрабатывает опцию random, теперь мы делаем небольшое изменение и вызывае6м getLayoutPath для обеспечения различных стилей. После сохранения файла, вернитесь в панель конфигурации и установить для параметра Display # значение 2 и сохраните Модуль. В ИП Модуль должен отобразить примерно такое: