В книге представлены самые передовые приемы программирования, опробованные на практике ее авторами, Марком Декстером и Луисом Лэндри, написавшим немалую долю кода новой интегрированной среды Joomla!, подробно описаны многочисленные примеры исходного кода, а также приводится немало полезной справочной информации по всем затрагиваемым темам.
Благодарности Об авторах Предисловие Опытные пользователи Joomla, только начинающие программировать Опытные программисты, только начинающие осваивать Joomla Разработчики, которым требуется быстро освоить версию 2.5 Joomla Читатели, которым требуется узнать больше о Joomla и разработке расширений Вопросы, не рассматриваемые в книге Структура книги Трудности веб-разработки - нужно слишком много знать! Нововведения в версии Joomla 2.5 Система списков контроля доступа Определяемые пользователем уровни категорий (и больше никаких разделов) Класс JForm Класс JTableNested Класс JDatabaseQuery Версия PHP 5.2 Версия MySQL 5.0.4 Формат файлов языковой поддержки Упрощенная процедура обновления Усовершенствования шаблона MVC Поддержка других баз данных Усовершенствованный поиск Веб-сайт, сопровождающий книгу Добро пожаловать в сообщество разработчиков Joomla От издательства 1. Основы разработки в Joomla! Разрабатывать в Joomla совсем не трудно! Техническая среда Joomla Требования к программированию для Joomla Способы расширения Joomla Открытость кода означает полный контроль над ним Изменения на веб-странице с помощью файлов замещения Расширения Подключаемые модули Модули Компоненты Языковые расширения Шаблоны Выбор типа расширения для конкретного проекта Применение Joomla в качестве платформы или интегрированной среды Резюме 2. Подготовка рабочей станции к разработке в Joomla! Требования к запуску Joomla Папка DocumentRoot в Apache Получение своевременных инструкций Платформа Windows Платформа Mac OS X Платформа Linux Владелец файлов и папок по умолчанию Рабочие инструменты Интегрированная среда разработки в сравнении с текстовым редактором Варианты IDE с открытым кодом Коммерческие IDE Текстовые редакторы Другие инструментальные средства Программное обеспечение контроля версий Программное обеспечение автоматического построения проектов (Ant и Phing) Программы автоматизации тестирования Резюме 3. Принцип действия Joomla! Краткий обзор папок Joomla Пользовательская и административная части Папка cache Папка cli Папка components Папка images Папка includes Папка installation Папка language Папка libraries Папка logs Папка media Папка modules Папка plugins Папка templates Папка tmp Папка administrator Платформа Joomla Веб-программирование в сравнении с обычным программированием Сохранение состояния программы Контроль и проверка команд Внутреннее строение цикла выполнения команд в Joomla Загрузка файла index.php Проверка среды выполнения Определение мест расположения файлов Загрузка интегрированной среды Joomla Начало или продолжение сеанса Маршрутизация URL Выполнение компонента Воспроизведение страницы Вывод страницы Краткие итоги сеанса работы с веб-сайтом Joomla Условные обозначения имен Глобальные объекты Краткий обзор таблиц базы данных О префиксах имен таблиц Резюме 4. Расширение Joomla замещениями компоновки Основы применения шаблонов Папки и файлы шаблонов Файл шаблона index.php Места расположения в шаблонах Параметры настройки шаблонов Стилевая рамка модуля Копирование шаблона Замещение компоновки модуля последних статей в шаблоне Настройка модуля в выборочных данных Создание файла замещения компоновки Специальная настройка компоновки Устранение ошибки с помощью функции strip_tags() Применение метода truncate() из класса JHtmlString Применения синтаксиса подчеркивания Изменение внешнего вида компонента регистрации пользователя Альтернативные компоновки Добавление новой компоновки пункта меню Переопределение параметров О принципе действия замещений Замещение других элементов оформления веб-сайта Стилевая рамка модуля: добавление нового стиля оформления модуля Языковые замещения: добавление перевода в замещение Замещения таблиц и моделей Резюме 5. Расширение Joomla подключаемыми модулями Что такое подключаемый модуль Принцип действия подключаемых модулей Условные обозначения подключаемых модулей Типы подключаемых модулей и место для их ввода Аутентификация Контрольное изображение Содержимое Редакторы Editors-XTD Расширение Поиск Интеллектуальный поиск Система Пользователь Краткий обзор избранных базовых подключаемых модулей Системный подключаемый модуль SEF Подключаемый модуль аутентификации Подключаемый модуль содержимого Подключаемый модуль для обработки события onBeforeCompileHead Подключаемый модуль для регистрации пользователей Обновление файла замещения подтверждения Ввод исходного XML-файла Ввод исходного PHP-файла Ввод файлов языковой поддержки Проверка подключаемого модуля Упаковка подключаемого модуля Усовершенствованный подключаемый модуль для регистрации пользователей Создание главного XML-файла для подключаемого модуля Создание XML-файла для разметки формы Создание исходного файла PHP для подключаемого модуля Ввод файлов языковой поддержки Проверка подключаемого модуля Упаковка подключаемого модуля Добавление параметров в подключаемый модуль Применение подключаемых модулей для замещения основных классов Каким образом импортируются подключаемые модули Каким образом загружаются классы Пример замещения класса JTableNested Передовой опыт разработки и применения подключаемых модулей Резюме 6. Расширение Joomla модулями Что такое модуль Модули в сравнении с компонентами Краткий обзор базового модуля XML-файл модуля Главный файл модуля Вспомогательный класс модуля Файл исходной компоновки Отображение статей текущего автора Структура модуля XML-файл модуля Исходный файл PHP Вспомогательный файл Файл исходной компоновки Файлы языковой поддержки Проверка достоверности параметров средствами класса JForm Справочный файл Упаковка модуля Краткий обзор созданного модуля Передовой опыт разработки и применения модулей Резюме 7. Компоненты, часть I. Контроллеры и модели Что такое компонент Основные функции компонентов Своеобразие компонентов Шаблон проектирования MVC Административная часть компонента Weblinks Установочные файлы Меню компонентов Параметры компонента Вспомогательные классы и методы Точка входа в компонент Weblinks Функции контроллера в компоненте Weblinks Модели компонента Weblinks Табличный класс компонента Weblinks Резюме 8. Компоненты, часть II. Представления, класс JForm и пользовательская часть Представления и методы отображения Представление списка веб-ссылок Файл исходной компоновки Представление одиночных веб-ссылок Применение класса JForm в компоненте Weblinks Сохранение обьекта типа JForm в оперативной памяти Видоизменение форм в динамическом режиме Воспроизведение формы Краткие итоги рассмотрения административной части компонента Weblinks Пользовательская часть компонента Weblinks Сходство структуры файлов и применения шаблона MVC Типы пунктов меню Маршрутизация в пользовательской части веб-сайга Пользовательское представление ленты новостей Резюме 9. Компоненты, часть III. Пример разработки административной части компонента Краткий обзор назначения создаваемого примера компонента Детальная разработка компонента Файлы из административной части компонента Экран Subscriptions Manager: Subscriptions Исходный контроллер Контроллер подчиненного диспетчера и задачи на панели инструментов Представление диспетчера Вспомогательный класс Модель диспетчера Таблицы базы данных Компоновка экрана диспетчера Экран Subscriptions Manager: Add and Edit Задачи контроллера Представление ввода и редактирования подписки Модель ввода и редактирования подписок Форма ввода и редактирования подписок Табличный класс Файлы языковой поддержки Установка и настройка компонента Резюме 8. Компоненты, часть II. Представления, класс JForm и пользовательская часть Представления и методы отображения Представление списка веб-ссылок Файл исходной компоновки Представление одиночных веб-ссылок Применение класса JForm в компоненте Weblinks Сохранение объекта типа JForm в оперативной памяти Видоизменение форм в динамическом режиме Воспроизведение формы Краткие итоги рассмотрения административной части компонента Weblinks Пользовательская часть компонента Weblinks Сходство структуры файлов и применения шаблона MVC Типы пунктов меню Маршрутизация в пользовательской части веб-сайта Пользовательское представление ленты новостей Резюме 9. Компоненты, часть III. Пример разработки административной части компонента Краткий обзор назначения создаваемого примера компонента Детальная разработка компонента Файлы из административной части компонента Экран Subscriptions Manager: Subscriptions Исходный контроллер Контроллер подчиненного диспетчера и задачи на панели инструментов Представление диспетчера Вспомогательный класс Модель диспетчера Таблицы базы данных Компоновка экрана диспетчера Экран Subscriptions Manager: Add and Edit Задачи контроллера Представление ввода и редактирования подписки Модель ввода и редактирования подписок Форма ввода и редактирования подписок Табличный класс Файлы языковой поддержки Установка и настройка компонента Резюме 10. Компоненты, часть IV. Пример разработки пользовательской части компонента Краткий обзор используемых файлов Установочный XML-файл Точка входа в компонент Исходный контроллер Представление категории подписок XML-файл для разметки пункта меню Представление категории Модель Вспомогательный файл категорий Файлы компоновки категорий Представление подписки Методы контроллера для редактирования подписки Представление и форма редактирования Компоновка формы редактирования Задача подписки Модель для формы Компоновка экрана с благодарностями за подписку Файл языковой поддержки Упаковка компонента Новая функция: отчет о подписчиках в административной части компонента Новая кнопка панели инструментов Метод контроллера для выполнения новой задачи Класс новой модели Метод контроллера для создания файла экспорта Составление отчета Практические соображения Резюме 11. Работа с базой данных Краткий обзор баз данных Создание и видоизменение таблицы по командам DDL Команда CREATE TABLE Типы данных Атрибуты столбцов Команда ALTER TABLE Команда DROP TABLE Применение программы phpMyAdmin Тестирование и отладка запросов SQL Создание сценариев DDL Резервное и обычное копирование базы данных Формирование запросов SQL к базе данных с помощью команд DML Запросы по команде SELECT Запросы по команде UPDATE Запросы по команде INSERT Запросы по команде DELETE Запросы по команде UNION Выражения в запросах Разработка структуры таблиц Справочные таблицы Поля ключей и внешние ключи Таблицы соответствий Таблицы предыстории Работа с базой данных в среде Joomla Применение класса JDatabaseQuery Обработка данных по запросу Обработка запросов по командам insert, update и delete Обработка запросов по команде SELECT Резюме 12. Применение JavaScript и MooTools в Joomla! Общее представление о JavaScript Принцип действия JavaScript Общее представление о MooTools Порядок применения JavaScript и MooTools в Joomla Встроенные средства JavaScript Поведение calendar Поведение caption Поведение colorpicker Проверка достоверности формы Поведение framework Поведение highlighter Поведение keepalive Поведение modal Виды поведения checkall и multiselect Поведение nof rames Поведение switcher Поведение tooltip Поведение tree Поведение uploader Применение расширений MooTools Применение AJAX в Joomla Применение других интегрированных сред JavaScript Резюме 13. Применение платформы Joomla! в качестве среды для разработки приложений Общее представление о платформе Joomla Причины выделения платформы Joomla в отдельный проект Назначение платфомы Joomla Примеры разработки программ на платформе Joomla Подготовка проекта на платформе Приложение командной строки Hello World Веб-приложение Hello WWW Пример текущего контроля подписок Структура проекта Конфигурационный файл Контрольный файл Файл текущего контроля подписок Выполнение приложения для текущего контроля подписок Выполнение программ командной строки в системе Joomla CMS Резюме Приложение А. Краткий курс PHP и ООП Структура файлов PHP Файлы, содержащие только исходный код PHP Файлы, содержащие исходный код PHP и HTML Основы синтаксиса языка PHP Наиболее важные символы Наиболее употребительные операторы Арифметические и строковые операторы Задание и приведение типов переменных Логические операторы Условные операторы Оператор выбора switch Операторы цикла Циклы foreach Циклы for Циклы do/while Оператор continue Альтернативный синтаксис Переменные Объявление переменных Область действия переменных Массивы Обращение с массивами Символьные строки Константы и текущий каталог Функции и методы Структура функции Область действия переменной в функции Передача значений по ссылке Включение файлов и их типы Файлы объявления классов Файлы объявления функций Простые сценарии Смешанные файлы Включение файлов Основы ООП Классы и объекты Метод-конструктор Создание объектов Стандартный класс Расширение классов и наследование Переопределение методов Модификаторы public, protected и private Статические методы, поля и переменные Переменная $this и ключевые слова self и parent Простая отладка программ Просмотр определенных переменных Просмотр трассировки стека Более совершенные приемы программирования Применение логического оператора || вместо условного оператора if Связывание методов в цепочку Волшебные методы PHP Переменные в качестве имен классов и методов Регулярные выражения Приложение Б. Типы фильтров в Joomla! Фильтрация элементов разметки в коде HTML Фильтрация данных в приложениях Joomla Фильтрация в классе JForm Фильтрация в классах JRequest и JInput Непосредственное применение класса JFilterlnput для фильтрации данных Приложение В. Методы из класса JHtml Вызов методов из класса JHtml Специальные классы типа JHtml Методы из класса JHtml Метод link () Метод image () Метод stylesheet () Метод script () Метод calendar () Метод date () Классы из папки html Класс JHtmlBatch Класс JHtmlBehavior Класс JHtmlCategory Класс JHtmlContent Класс JHtmlContentLanguage Класс JHtmlEmail Класс JHtmlForm Класс JHtmlGrid Класс JHtmllmage Класс JHtmlJGrid Класс JHtmlList Класс JHtmSelect Класс JHtmSliders Класс JHtmString Класс JHtmTabs Приложение Г. Словарь специальных терминов Предметный указатель