- •Что в этой книге
- •Настройки против Расширений
- •Как расширить Joomla!
- •Компоненты (Components)
- •Модули (Modules)
- •Плагины (Plug-Ins)
- •Обзор тем
- •Создание пи (Toolbars) и Списков
- •Поддержание стиля и исключение повторений кода используя html функции
- •Доступ к бд и управление записями
- •Безопасность и предпочтительный способ получения переменных запроса
- •Меню управления
- •Управления логикой работы внутри Компонента
- •Конфигурация посредством xml-параметров
- •Упаковка и распространение
- •Наш Проект для примера
- •Приступая к разработке Компонента
- •Структура Компонента Joomla!
- •Запуск Компонента
- •Разделение на иа и ип в Joomla
- •Регистрация Компонента в бд
- •Создание пи
- •Доступные кнопки пи
- •Создание таблицы бд
- •Создание класса Table
- •Создание формы Обзора
- •Обработка данных
- •Создание Списка
- •Редактирование записей
- •Удаление записей
- •Разработка ип
- •Листинг Обзоров
- •Отображение Обзора
- •Генерация дружественных для поисковиков ссылок
- •Создание url сегментов
- •Парсинг url сегментов
- •Добавление комментариев
- •Отображение комментариев
- •Разработка Модуля
- •Регистрация Модуля в бд
- •Создание и настройка базового Модуля
- •Воспользуемся некоторыми помощниками (class Helper)
- •Пробуем различные стили
- •Попробуем смешать
- •Расширяем проект
- •Модель, Вид, Контроллер: Почему?
- •Построение Модели данных
- •Модель Все Обзоры
- •Модель одиночного Обзора
- •Миграция на Виды
- •Переключения посредством Контроллеров (Controllers)
- •Обновление связей и маршрутов
- •Реорганизация кода иа
- •Управление публикацией Обзоров
- •Добавление постраничной навигации
- •Управление Коментариями
- •Дополнительные пи
- •За кулисами: Плагины (Plug-Ins)
- •Запросы к бд
- •Плагин ссылка
- •Плагин справочной информации
- •Поиск Обзоров
- •Параметры
- •Добавление параметров к расширениям
- •Параметры для Модулей
- •Параметры для Плагинов
- •Параметры для Компонентов
- •Упаковываем все вместе
- •Список всех файлов
- •Упаковка Модуля
- •Упаковка Плагина
- •Упаковка Компонента
- •Включение sql-запросов
- •Создание пунктов меню иа
- •Дополнительные сценарии установки
- •Распространение
- •Содержание
Доступные кнопки пи
Joomla! позволяет переопределить любую кнопку для вашей собственной задачи (task) и ее название (label), передавая их как первый и второй параметры соответственно. В стандартной поставке Joomla! доступны следующие кнопки:
Если бы вы хотели создать пользовательскую кнопку, которая выглядит и ведет себя как основные, используйте функцию custom() из JToolBarHelper, используя task, icon, mouse-over image и text description в качестве параметров.
Резюме
Мы создали основные файлы Компонента. Joomla! теперь знает, что этот Компонент доступен как для ИА так и для ИП. Используя стандартные HTML и CSS классы он будет отображаться аналогично другим Компонентам системы, что делает возможным использование различных шаблонов. Для Компонента доступны основные панели инструментов и с помощью переменной $task могут быть назначены дополнительные.
Разработка ИА
Создание и управление Обзорами является крупнейшей задачей нашего Компонента. Чтобы начать добавлять Обзоры мы добавим форму и некоторые функции БД. Это также позволит некоторым из наших обозревателей ресторана высказать свои замечания. В следующих разделах этой главы мы рассмотрим:
-
Создание таблицу БД для хранения Обзоров
-
Создание основной формы для ввода данных
-
Обработка данных и добавление их в БД
-
Листинг существующих Обзоров
-
Редактирование и удаление Обзоров
Создание таблицы бд
Перед тем, как создать интерфейс для ввода Обзоров, нам нужно создать место в БД для их хранения. Начнем с таблицы, где одна строка будет представлять собой один Обзор.
CREATE TABLE 'jos_reviews'
(
'id' int(11) NOT NULL auto_increment,
'name' varchar(255) NOT NULL,
'address' varchar(255) NOT NULL,
'reservations' varchar(31) NOT NULL,
'quicktake' text NOT NULL,
'review' text NOT NULL,
'notes' text NOT NULL,
'smoking' tinyint(1) unsigned NOT NULL default '0',
'credit_cards' varchar(255) NOT NULL,
'cuisine' varchar(31) NOT NULL,
'avg_dinner_price' tinyint(3) unsigned NOT NULL default '0',
'review_date' datetime NOT NULL,
'published' tinyint(1) unsigned NOT NULL default '0',
PRIMARY KEY ('id')
);
Если вы используете PhpMyAdmin введите jos_reviews как имя таблицы с 13 полями:
После нажатия кнопки Go, то вы увидите таблицу. Заполните ее так, как это показано на картинке:
Убедитесь, что в поле id выбрано как auto_increment и primary key:
Создание класса Table
Мы могли бы создать отдельные функции для добавления, обновления и удаления Обзоров. Однако, это элементарные функции, которые вы предпочли бы не писать. К счастью, команда Joomla! уже сделала это за вас. Класс JTable предоставляет функции для создания, чтения, обновления и удаления записей из таблицы БД. Для того чтобы воспользоваться JTable, мы должны написать расширение (подкласс) для jos_reviews. В папке /administrator/components/com_reviews создайте папку с именем таблицы. В этой папке создайте файл review.php и введите следующий код:
<?php
defined('_JEXEC') or die('Restricted access');
class TableReview extends JTable
{
var $id = null;
var $name = null;
var $address = null;
var $reservations = null;
var $quicktake = null;
var $review = null;
var $notes = null;
var $smoking = null;
var $credit_cards = null;
var $cuisine = null;
var $avg_dinner_price = null;
var $review_date = null;
var $published = null;
function __construct(&$db)
{
parent::__construct( '#__reviews', 'id', $db );
}
}
?>
После расширения класса JTable мы добавим все столбцы таблицы БД в качестве переменных и обнулим их. Также мы переопределить конструктор класса: метод __construct(). Как минимум, наш __construct() будет принимать объект базы данных в качестве параметра и будет вызывать родительский конструктор, используя имя таблицы БД (где #__ это префикс таблиц), первичный ключ и объект БД
Почему используется #__ в качестве префикса?
При написании запросов и определения JTable расширения в Joomla!, используйте #__ вместо jos_. При выполнении запроса Joomla! автоматически переводит #__ на префикс базы данных выбранный администратором. Таким образом, возможно безопасное использование нескольких установок Joomla! в одной и той же БД. Это также дает возможность вам изменить префикс всего что угодно, не меняя код. Конечно же, Вы можете прямо указывать имена таблиц, но в таком случае совместное использование и совместимость будут невозможны.
Класс TableReview наследует функции Bind(),store(), Load (), delete(). Эти четыре функции позволяют Вам управлять записями в базе данных, не написав ни одной строки SQL.