Joomla! хушăмсем

Wikibooks материалӗ
(Joomla!/Расширения Joomla! 1.5 ҫинчен куҫарнӑ)

Одна из бесспорных причин популярности Joomla! — широкий спектр доступных расширений. С помощью модулей, компонентов и плагинов вы можете добавить на сайт практически любую функцию.

Вы можете добавить разные популярные функции, например, корзину для заказов товаров через ваш сайт, RSS, форум, чат, карты посетителей, возможность совместной работы над страницами в стиле wiki, возможность управления товарами и работой с клиентами (CRM, Customer Relationship Management). По сути, вы можете добавить абсолютно любую Web-ориентированную возможность в Joomla!. Огромное количество расширений доступно на главном сайте Joomla! по адресу: http://extensions.joomla.org.

Почти 80% доступных расширений бесплатны — вам нужно просто загрузить расширение с Web и увеличить возможности вашего сайта. Лучший способ узнать больше о расширениях— изучить расширения, устанавливаемые по умолчанию при установке Joomla!. Изучив администрирование существующих расширений, вы сможете понять, как управлять новыми расширениями, которые хотите использовать.

Разница между модулями, компонентами и плагинами

Часто начинающие пользователи не могут понять разницы между типами расширений. Поскольку имеются три разных типа расширений и их функции могут иногда пересекаться, очень важно знать их возможности и фундаментальные различия между ними. Много Joomla!-пакетов могут использовать несколько типов расширений, что еще больше сбивает с толку пользователя. Например, пакет голосования использует модуль для отображения пользовательского интерфейса, но для администрирования используется компонент.

В каталоге расширений Joomla! для каждого расширения выводится его тип. На рис. 7.1 показаны два расширения. Первое, joomlaXplorer, является только компонентом (см. пиктограмму, информирующую о том, что перед нами компонент). Пакет второго расширения (JoomiFish) содержит несколько типов расширений (компонент, модуль, плагин и языковое расширение).

Рис. 7.1. В правой колонке выводится тип расширения

Комбинированные пакеты расширений встречаются довольно часто: обычно в пакете как минимум два разных расширения. Чтобы понять, как все эти типы расширений работают вместе, лучше всего начать с самого сложного типа — плагина.

Плагины: самые сложные расширения

Плагины являются самыми сложными расширениями, поскольку интегрируются в Joomla! на самом низком уровне. Плагин работает между Joomla! и пользователем, как показано на рис. 7.2. Плагины активируются различным событием сервера (системным событием, пользовательским событием, событием редактора и событием контента). Плагин может перехватывать вывод Joomla! и вносить в него изменения до того, как данные будут отправлены в браузер. С другой стороны, плагин может обрабатывать любые данные, по-

лученные от пользователя перед отправкой их CMS. Это означает, что плагин может изменять входящие и исходящие данные.

Рис. 7.2. Плагин расположен между Joomla! и браузером

Наиболее "видимый" тип плагинов — WYSIWYG-редакторы. Контент статьи хранится в базе данных Joomla! в чистом HTML-коде. Если редактор не выбран, HTML-код будет отправлен в текстовое поле для редактирования пользователем. Однако, если плагин редактора выбран, HTML-код будет перехвачен плагином и конвертирован в "богатое" текстовое поле, содержащее кнопки форматирования, выбора цвета, вставки картинок и др.

Пользователь может редактировать контент статьи в WYSIWYG-среде. Когда пользователь нажмет кнопку Сохранить, данные, возвращенные в систему, будут перехвачены плагином, который конвертирует их обратно в HTML-код и передаст Joomla! для хранения в базе данных. Это простое объяснение на примере Joomla!-редакторов описывает весь процесс работы плагинов.

Вы можете использовать уже существующие плагины для вашего сайта, но если вы амбициозны, то будете разрабатывать собственные плагины. С другой стороны, ничего сложного в этом нет, и практически любой пользователь может создать базовый модуль или компонент.

Компоненты и модули

Компонент считается более мощным расширением. Модуль может выполнять много функций, а компонент— все, что может модуль, и кое-что еще. Вот что вам нужно знать, чтобы почувствовать разницу между компонентами и модулями.

  • Традиционно, модуль используется только для отображения информации или же для минимального взаимодействия с пользователем. Например, модуль может отображать курсы валют или же использоваться для голосования на сайте. Компонент может отображать статьи, изменять стиль страницы, редактировать содержимое статьи (если есть соответствующие полномочия) или предоставлять полноценный пользовательский интерфейс (например, быть форумом или доской объявлений).
  • Модуль загружается в одну из заранее определенных в шаблоне позиций (например, вверху, слева, справа). Модуль входа, модуль поиска и модуль баннеров прекрасные тому примеры. Компонент, напротив, обычно занимает всю страницу. Наиболее часто используемый компонент— компонент главной страницы (называется com_frontpage), отображающий вводный текст одной или нескольких статей с учетом форматирования. На одной странице может быть только один компонент, в то время как страница может содержать одновременно несколько модулей. Компонент можно представить как генератор страницы, в то время как модуль — это простой виджит (элемент интерфейса пользователя).
  • В интерфейсе администратора для модуля обычно можно задать всего несколько параметров. Интерфейс настройки компонентов обычно сложный, содержит несколько вкладок, что позволяет полностью настроить функционирование и внешний вид модуля.

Это базовые различия между модулями и компонентами. Посмотрите на рис. 7.3, на котором изображена страница предварительного просмотра главной страницы сайта. Предварительный просмотр позволяет увидеть расположение модулей (user3[], breadcrumb [], left [rounded] и т.д.). Обратите внимание: центральная часть страницы занята компонентом, отображающим контент, при этом над компонентом не выводится позиция модуля (хотя я выделил компонент на рисунке).

Модули появляются в четко определенных местах страницы, поэтому ссылка меню никогда не может быть связана с модулем. Но вы можете создать ссылку меню, указывающую на компонент: как только пользователь щелкнет по ней, в центральной части страницы будет отображен соответствующий компонент.

Компоненты и модули очень часто используются вместе: компоненты занимаются конфигурацией и выводом, а модули только отображают информаци

онную панель. Например, модуль может отображать поле поиска, а компонент— выполнять сам поиск и отображать результаты поиска. Подобный способ взаимодействия используется довольно часто. Например, модуль Banners отображает баннер, а компонент Баннер позволяет создавать банне-ры и управлять ими.

Понятно, что модули — самые простые расширения Joomla!, поэтому сначала мы рассмотрим модули, а потом все остальные расширения.

Рис. 7.3. Экран предварительного просмотра показывает расположение модулей

Типы модулей

Чтобы понять, как модули работают в Joomla!, вам нужно сначала разобраться с типами модулей. Модули, показанные в Менеджере модулей, — это инстанции (примеры), созданные от различных типов модулей. Во втором справа столбце в списке модулей отображается тип каждого модуля.

Тип модуля можно сравнить с шаблоном сайта. Шаблон сайта используется в качестве пустой формы, заполняемой во время создания документа. Типы Модулей работают, как шаблоны, на основании которых создаются примеры модулей. Например, в списке модулей вы найдете тип mod_mainmenu. Этот

тип является базой для всех меню в Joomla!, а отдельные примеры содержат параметры каждого меню.

Когда вы устанавливаете модуль в системе, вы, на самом деле, устанавливаете не модуль, а новый тип модуля. Joomla! автоматически создает первую инстанцию установленного типа модуля — запись, которую вы увидите в Менеджере модулей.

Менеджер модулей показывает список всех доступных в системе инстанций модулей. Если вы нажмете кнопку Новый, то увидите список типов модулей (рис. 7.4), на основании которых были созданы существующие модули. После выбора типа модуля нужно будет указать параметры создаваемого модуля.

Рис. 7.4. При создании нового модуля нужно выбрать один из существующих в системе модулей

Имена типов модулей стандартизированы: все они начинаются префиксом (mod_), после которого следует имя модуля, пробелы в имени типа не допускаются, а все буквы должны быть строчными ("маленькими"). Имена инстан-

ций модулей, наоборот, могут содержать пробелы и символы любого регистра. Столбец Тип в Менеджере модулей отображает тип модуля, на основании которого была создана инстанция модуля.

Модули по умолчанию

Модули сайта, созданные по умолчанию при установке Joomla!, перечислены в табл. 7.1. Обратите внимание: на сайте может быть много меню, но все они принадлежат к одному типу модуля. Поэтому, когда вы создаете новое меню, вы создаете модуль, который будет управлять конфигурацией и отображением элементов меню.

Таблица 7.1. Модули, устанавливаемые по умолчанию при инсталляции Joomla! Модуль Описание All Menus Организует вертикальные и горизонтальные меню Archive Управляет списком контента, который был перемещен в архив Banner Отображает рекламный баннер. Вы можете указать определенный ID клиента или же выбрать автоматическую ротацию баннеров Latest News Предоставляет список последнего контента в указанной категории Login Выводит форму для ввода логина и пароля Newsflash Выводит случайный материал из указанной категории Polls Позволяет организовать онлайн-голосование с сохранением результатов в базе данных MySQL. Управление модулем производится с помощью специального компонента, а в настройках самого модуля вы найдете только один параметр — суффикс стиля Popular Выводит список наиболее популярного контента указанной категории Random Image Выводит случайную картинку из указанного каталога с картинками Related Items Выводит контент, связанный с отображаемым в данный момент контентом Search Выводит поле ввода, в которое пользователь может ввести фразу для поиска по сайту Sections Показывает общий список разделов сайта Statistics Показывает статистику текущего Joomlal-сервера Syndication Позволяет посетителю подписываться на новостные ленты RSS и Atom Weblinks Выводит список ссылок, добавленных пользователями Who's Online Отображает количество гостей и количество зарегистрированных пользователей или же имена зарегистрированных пользователей (по желанию администратора) Модуль Описание Wrapper Показывает внешний HTML-контент (с другого сайта) в iFrame-оше. Используется, если вам нужно отобразить контент другого сайта в дизайне вашего сайта Функции большинства модулей понятны из названия модулей (например, модуль Search). Но функции некоторых модулей не очевидны, поэтому мы рассмотрим их подробнее.

Примечание переводчика

Названия модулей даже в русской версии Joomla! английские.

Модуль Wrapper (mod_wrapper)

Модуль Wrapper предоставляет мощные средства плавного перехода существующего сайта на Joomla!, позволяя отображать старый контент перед его импортом в базу данных Joomla!. Этот модуль позволяет выводить заданный URL в фрейме Joomlal-сайта. Другими словами, модуль как бы "внедряет" другой сайт в вашу Web-страницу. На рис. 7.5 я, используя модуль Wrapper, инкапсулировал сайт Coherent Visual в столбец userl моей главной страницы.

Рис. 7.5. Внешняя Web-страница отображается во фрейме вашего сайта

У модуля Wrapper есть всего несколько важных параметров, которые вам нужно установить (рис. 7.6). Параметр Url наиболее важен, поскольку он определяет местонахождение внешней страницы. В качестве данного параметра можно указать относительный адрес, если контент находится на вашем Web-сервере, или полный URL, если вам нужно получить контент удаленного сайта.

Рис. 7.6. Параметры модуля Wrapper определяют, как должен быть показан контент

Параметр Суффикс класса модуля позволяет установить ваш собственный суффикс стиля (для стилей, сохраненных в CSS-файле), который будет использоваться этим модулем. Другие параметры (Полосы прокрутки, Ширина, Высота, Авто подбор высоты) определяют внешний вид Joomla!-страницы. Включение параметра Автодобавление (значение Да) добавит префикс http:// или https:// к введенному URL, если URL не содержит имени протокола. Параметр Target устанавливает имя фрейма iFrame.

Модуль Wrapper создается по умолчанию при установке Joomla! из типа mod_wrapper. Вы можете создать собственные wrapper-модули, нажав кнопку Новый в Менеджере модулей и выбрав тип mod_wrapper.

Модуль Random Image (mod_random_image)

Модуль Random Image отображает случайную картинку из указанной вами папки. Данный модуль полезен для отображения случайного баннера. Модуль довольно важен для частых посетителей — они будут видеть, что сайт постоянно обновляется, и будут заходить на него чаще. Также этот модуль

можно использовать для показа рекламных баннеров, но для этого лучше использовать модуль Banners, который мы рассмотрим чуть позже.

Параметры модуля Random Image показаны на рис. 7.7. Параметры Тип изображения и Папка изображений определяют, как будут получены картинки. Параметр Ссылка задает гиперссылку для отображаемой картинки, а параметр Суффикс класса модуля — пользовательский стиль из CSS-файла.

Рис. 7.7. Параметры модуля Random Images определяют, откуда нужно брать картинки и как их нужно показывать

Для тестирования модуля укажите каталог /images/stories и тип картинок png. Выберите позицию модуля right для отображения модуля справа. Чтобы модуль отображался на всех страницах, выберите опцию Все. Вам осталось только определить порядок появления модуля1. Теперь нужно проверить модуль. С установленными параметрами модуль будет отображен на главной странице Joomla!-сайта (на заданной позиции и в указанном порядке).

Как и в случае со всеми модулями по умолчанию, модуль Random Image — это инстанция типа mod_random_image. Вы можете создать новые модули этого типа с помощью Менеджера модулей.

Модули Banners и Advertisement

Модули Banners и Advertisement (оба модуля типа mod_banners) управляют баннерными кампаниями, созданными с помощью компонента Banners. Когда мы будем рассматривать компоненты, то поговорим о создании рекламных кампаний с помощью Joomla!. Сейчас же мы рассмотрим параметры модуля Banners.

На рис. 7.8 представлены параметры, влияющие на отображение баннера. Параметр Количество задает количество баннеров, которые будут показаны за один раз. Параметры Клиент баннера и Категория позволяют выбрать рекламную кампанию, созданную с помощью компонента Banners. Параметр Искать по тегам — очень мощная опция, позволяющая выводить баннеры, соответствующие тегам (ключевым словам) отображаемой статьи. Теперь бейсбольные баннеры будут показаны на бейсбольных страницах, а футбольные баннеры — на футбольных страницах.

Рис. 7.8. Параметры модуля Banners

Параметры Порядок отображения, Текст заголовка, Нижний колонтитул

управляют внешним видом модуля. На рис. 7.9 я разместил баннер в верхней части страницы, а также добавил нижний и верхний колонтитулы. Обратите внимание: в этом шаблоне текст нижнего баннера немного обрезан, но вы можете изменить шаблон для корректного отображения нижнего колонтитула баннера.

Рис. 7.9. Модуль Banners отображается в верхней части страницы с установленными колонтитулами

Модуль Breadcrumbs (mod_breadcrumbs)

Модуль Breadcrumbs (рис. 7.10) отображает навигационную строку — путь к текущей странице сайта. Модуль может использоваться для быстрого перехода вверх по иерархии сайта. Модуль полезен не только для пользователей, но и для поисковых машин, которые правильнее проиндексируют ваш сайт.

Рис. 7.10. Модуль Breadcrumbs отображает путь к текущей странице сайта

Параметры модуля Breadcrumbs (рис. 7.11) в основном относятся к отображению пути. Переключатель Главная определяет, будет ли показан самый верхний уровень (Ноте) иерархии. Параметр Разделитель текста позволяет вам переопределить разделитель по умолчанию (►►).

Рис. 7.11. Параметров у модуля Breadcrumbs немного

Модуль Syndication (mod_syndicate)

Модуль Syndication создает новостную ленту для страницы, на которой он расположен. Новостные ленты (наиболее часто используются RSS и Atom) — это технологии, обеспечивающие автоматическое разделение контента с другими пользователями и другими Web-сайтами. Если у сайта есть новостная лента, это означает, что где-то на Web-сервере есть файл, действующий как оглавление самых последних статей сайта.

Для чтения данного файла нужна специальная программа— агрегатор. Это может быть как обычное настольное приложение, получающее новости с разных сайтов и отображающее самые последние статьи, так и онлайн-приложение, получающее новости с разных сайтов и публикующее их на другом сайте (конечно, с соответствующими атрибутами). Популярным Web-агрегатором (онлайн-агрегатором) является Bloglines (www.bloglines.com). Кроме того, агрегаторы уже встроены в современные браузеры— Internet Explorer 7, в Mozilla Firefox (функция Live Bookmark), Mozilla Thunderbird (команда New Account | RSS News & Blogs).

Модуль Syndication автоматически генерирует новостную ленту по статьям Joomlal-сайта, на котором он запущен. Модуль отображает специальную ссылку на файл новостной ленты (рис. 7.12).

Рис. 7.12. Ссылка на новостную ленту

Если вы исследуете файл новостной ленты (рис. 7.13), то увидите, что оглавление вашего сайта сохраняется в XML-файле в формате RSS или Atom. В Менеджере модулей вы можете выбрать формат новостной ленты (RSS или Atom). Хотя я рекомендую использовать RSS, вы можете использовать любой формат. Также в настройках этого модуля вы найдете опции, влияющие на его внешний вид.

Модуль Feed Display {modjeed)

Модуль Syndication используется для публикации RSS-лент для других сайтов, а модуль Feed Display, наоборот, позволяет на вашем Joomla!-сайте публиковать новости других сайтов. На рис. 7.14 я подписался на новости CNN и

Рис. 7.13. Новостная лента в формате RSS (XML-файл)

Рис. 7.14. Модуль Feed Display показывает три последних новости прямо на вашей Joomlal-странице

с помощью модуля Feed Display вывел три последних статьи в правой части страницы.

Настройка модуля Feed Display предельно проста. Найдите сайт, предоставляющий RSS- или Atom-ленту своего контента (об этом обычно свидетельствует специальная пиктограмма на главной странице). Скопируйте адрес ссылки новостного файла. Этот адрес нужно установить в настройках модуля в качестве значения параметра URL ленты RSS (рис. 7.15), после этого вы сможете получать новости другого сайта на вашем Joomla!-сайте.

Рис. 7.15. Для работы модуля достаточно установить всего один параметр —

URL ленты RSS

Модули Main Menu, Key Concepts, User Menu, Examples Pages, Top Menu и Resources (mod_mainmenu)

Все меню, отображаемые Joomla!, ассоциируются с модулем, который на самом деле и отвечает за вывод самого меню. Все меню Joomla! основаны на типе модуля mod_mainmenu. При установке Joomla! будет автоматически создан модуль Main Menu — инстанция от типа mod_mainmenu. Этот модуль используется на главной странице и не может быть удален из системы.

Большинство параметров типа mod_mainmenu влияет на отображение меню на странице (рис. 7.16). Для большинства сайтов подходят параметры по умолчанию, но доступно много опций, позволяющих полностью контролировать меню без изменения кода.

Рис. 7.16. Вы можете изменить любые параметры mod_mainmenu: от стиля до иерархии

Примечание переводчика

В самой последней версии Joomla! (на момент написания этих строк) часть параметров была перемещена в группу Устаревшие параметры, что и показано на рис. 7.16.

Вы можете установить следующие параметры типа modjnainrnenu:

  • Суффикс класса меню — устанавливает суффикс, используемый для задания пользовательского стиля меню;
  • Суффикс класса модуля — устанавливает суффикс, используемый для задания пользовательского стиля модуля;
  • Название меню — указывает название записи, управляемой Менеджером меню и присоединенной к этому модулю;
  • Стиль меню— позволяет выбрать один из форматов меню: список, вертикально, горизонтально или плоский список. Список и плоский список

используют теги <ui> и <11> для определения меню. Для создания вертикальных и горизонтальных меню используются HTML-таблицы;

Начальный уровень — уровень, с которого нужно начать отображение меню;

Последний уровень — уровень, на котором следует завершить отображение меню;

Всегда показывать вложенные подпункты — показывать все элементы подменю, вне зависимости от того, активно ли родительское меню или нет;

Полное активное выделение — поддержка активного выделения ссылок. Включение этой опции приведет к потере XHTML-совместимости;

Показывать иконки меню — показывает пиктограммы для меню, если они определены;

Выравнивание картинки меню — если включен показ пиктограмм меню, этот параметр позволяет задать выравнивание (по левому или по правому краю) пиктограмм;

Раскрывать меню — если этот параметр включен (значение Да), то все подменю всегда будут видимы, не зависимо от того, открыл ли меню пользователь или нет;

Активировать родителя — если этот параметр включен (значение Да), то будут включены идентификаторы всех родительских меню;

Выравнивание картинки — из этого раскрывающегося списка вы можете выбрать, как будут выровнены картинки. Значение по умолчанию — ШАБЛОН, т. е. картинки будут выровнены, как указано в шаблоне, но вы можете выбрать другой тип выравнивания или же вообще отказаться от него;

Выравнивание картинки 1,..., Выравнивание картинки 6— данные параметры используются, если для предыдущего параметра выбрано значение Использовать значения ниже. Если это так, то данные 6 параметров будут использованы для указания выравнивания картинок для различных уровней вложенности списка. Все картинки, которые будут использоваться для этих шести списков, содержатся в каталоге \images;

Разделитель — позволяет указать символ (или символы), используемый как разделитель между элементами горизонтального меню;

Разделитель — позволяет указать символ (или символы), используемые между первым и последним элементом горизонтального меню;

  • Target — задает цель ссылок (например, открывать ссылки в новом окне1 или в существующем).

Примечание переводчика

В русской версии в настройках модуля меню вы найдете два параметра с именем Разделитель, в английской версии первый параметр называется Spacer, а второй — End Spacer.

Модули администратора

Модули администратора работают подобно обычным модулям (модулям сайта), но только в интерфейсе администратора. Вы можете добавить новые модули для реализации новых функций, например, дополнительные отчеты, дополнительная статистика, пользовательские панели инструментов и другие функции, позволяющие сделать администрирование Joomla!-сайтом еще более удобным. Поскольку дополнительные возможности по администрированию могут понадобиться только очень большим сайтам, подробное рассмотрение модулей администратора выходит за рамки этой книги.

В табл. 7.2 приведен список всех модулей администратора, устанавливаемых по умолчанию. Для себя вы можете ознакомиться со списком модулей администратора, если намерены заметить один из них на посторонний модуль, чтобы расширить функциональность сайта.

Таблица 7.2. Модули администратора, устанавливаемые по умолчанию Модуль Описание Components Показывает список установленных компонентов, как вкладку в панели управления Full Menu Позволяет отображать меню интерфейса администратора Latest Items Показывает последний контент, добавленный на сайт Logged Отображает список пользователей, пребывающих на сайте в данный момент Menu Stats Генерирует статистику меню — самая последняя вкладка в панели управления Online Users Модуль выводит список пользователей, авторизованных в административной панели сайта. Количество пользователей отображается в верхней части окна (возле кнопки Выйти) Pathway Отображает "путь" администратора Модуль Описание Popular Выводит список наиболее популярных страниц (вкладка модуля находится на главной странице интерфейса администратора) Quick Icons Добавляет пиктограммы быстрого доступа в панель управления System Message Управляет системными сообщениями, всплывающими и диалоговыми окнами Toolbar Модуль показывает значки панели управления, используемые для управления действиями в административной зоне Unread Messages Отображает количество непрочитанных сообщений (в верхней части окна администратора) Компоненты сайта

Компоненты выполняют гораздо больше функций, чем модули, и обычно обладают специальным конфигурационным интерфейсом, именно поэтому у компонентов есть собственное подменю в меню интерфейса администратора Joomla!.

Из всех компонентов, устанавливаемых по умолчанию, только пять обладают видимым интерфейсом пользователя: Banners (Баннеры), Contacts (Контакты), Newsfeeds (Ленты новостей), Polls (Голосования) и Weblinks (Каталог ссылок). У каждого из этих компонентов есть свое подменю в меню Компоненты.

Компонент Banners

Компонент Banners (Баннеры) — это система отображения баннеров, которая может быть использована в коммерческих и некоммерческих целях. Для каждого баннера ведется статистика показов (количество впечатлений— в терминологии Joomla!) и щелчков (сколько раз посетители щелкнули на бан-нере). Компонент Banners работает в паре с модулем Banners, описанным ранее.

Список всех созданных баннеров отображается Менеджером баннеров (рис. 7.17). В столбцах таблицы Менеджера баннеров отображается статистика по каждому баннеру— количество впечатлений, количество щелчков и процентное соотношение показов/щелчкам, Баннеры, созданные с помощью Менеджера баннеров, могут показываться на странице с помощью модулей Banners и Advertisement, описанных ранее.

Вы можете изменить параметры отслеживания, нажав кнопку Параметры в окне Менеджера баннеров. В появившемся окне (рис. 7.18) вы можете активировать или деактивировать ежедневное отслеживание баннеров и устанавливать префикс тегов. Ежедневное отслеживание баннеров требует больше места на диске, но зато предоставляет более подробную информацию о бан-нерах.

Рис. 7.17. Менеджер баннеров показывает все баннеры и статистику по ним

Рис. 7.18. Окно конфигурации Менеджера баннеров позволяет изменить параметры отслеживания баннеров

Вы можете создать новый баннер, нажав кнопку Новый или же отредактировав один из существующих баннеров, щелкнув на его имени. Вы увидите довольно много параметров (рис. 7.19), позволяющих настроить отображение баннера так, как вам нужно. Если вы хотите установить пользовательский код баннера, вам нужна поддержка JavaScript.

Рис. 7.19. Редактирование параметров баннера

Графические файлы баннеров расположены в каталоге \images\banners. Чтобы поместить файлы (картинки) в этот каталог, вы можете использовать Медиа-менеджер или FTP-клиент. После загрузки файла картинки его имя окажется в раскрывающемся списке Выбор картинки баннера.

Интерфейс Баннеры (Компоненты | Баннер | Баннеры) управляет баннера-ми, а Менеджер клиентов баннеров (Компоненты | Баннер | Клиенты)

управляет клиентами или рекламными кампаниями (рис. 7.20). С одним клиентом может быть связано много баннеров.

Вы можете нажать кнопку Новый для создания нового клиента. Параметры клиента довольно просты (рис. 7.21): имя клиента и контактная информация. Фактически, запись клиента — это дополнительный тип организации, дополняющий категории рекламных кампаний. А для изменения категорий используется отдельный интерфейс (Компоненты | Баннер | Категории), который можно использовать, если вы предпочитаете организовать баннеры по категориям, а не по клиентам.

Рис. 7.21. Вы можете создать нового клиента и организовать для него баннерную кампанию

Компонент Contacts

Joomla! обладает небольшой системой управления контактами в пределах CMS. Контакты, сохраненные в этом компоненте, могут быть связаны с учетными записями Joomla!-пользователей, что предоставляет дополнительные удобства при общении через интерфейс Joomla!. Контакты отображаются Менеджером контактов (рис. 7.22). Если контакт привязан к учетной записи пользователя, то имя пользователя будет отображено в столбце Связать с пользователем.

При редактировании существующего контакта (рис. 7.23) или при создании нового контакта вы можете заполнить все необходимые параметры (имя,

Рис. 7.23. Окно редактирования контактов позволяет вам записать всю необходимую контактную информацию

улицу, город, телефон и т. д.) — как при использовании отдельного менеджера контактов. А поскольку Joomla! — это Web-приложение, то данная информация будет доступна с любой точки Земного шара, где есть соединение с Интернетом.

Менеджер категорий компонента Contacts очень похож на Менеджера категорий статей. Однако категории, созданные в Менеджере контактов, хранятся отдельно от категорий для статей и пользователей.

Компонент Newsfeeds

В отличие от модуля Feed Display, который появляется в заданной позиции шаблона (например, справа), компонент Newsfeed занимает центральную часть страницы. Данный компонент может быть привязан к меню, что позволяет легко просматривать/читать любую статью ленты новостей (в отличие от модуля). Фактически, вы можете создать раздел ленты новостей, который будет работать как программа-агрегатор на вашем Joomla!-сайте.

Все ленты новостей определяются в Менеджере лент новостей (рис. 7.24, где список лент отображает название ленты, категорию, ID, число'статей, лимит времени кэширования и порядок).

Рис. 7.24. Менеджер лент новостей отображает список лент и их параметры

При создании ленты новостей (рис. 7.25) вам нужно указать только название ленты, выбрать категорию и задать ссылку на файл ленты. Вы также можете указать максимальное количество статей и лимит времени кэширования. Также можно включить параметр Текст слева направо для арабского и других RTL-языков.

Рис. 7.25. Создание новой ленты: нужно указать имя, выбрать категорию и указать файл ленты 4

Компонент Polls

Вы можете создать голосования с помощью компонента Polls (Голосования), которые будут отображены модулем Polls. Все текущие голосования отображаются в Менеджере голосований (рис. 7.26). С помощью данного менеджера вы можете увидеть, какие голосования были наиболее популярными (столбец Голоса), а также просмотреть количество опций для каждого голосования (столбец Опции).

Компонент Polls (Голосования) позволяет хранить до 12 опций для каждого голосования (рис. 7.27). Он также предоставляет возможность устанавливать время задержки между голосованиями (во избежание "накрутки" счетчиков голосования). Значение по умолчанию— 86 400 секунд, что эквивалентно одному дню. Вы можете существенно увеличить это значение, например, до 31 миллиона (почти год), чтобы один и тот же посетитель не смог проголосовать два раза.

Рис. 7.26. Менеджер голосований выводит список существующих голосований и предоставляет общую информацию о каждом опросе

Рис. 7.27. При создании голосования вы можете определить до 12 вариантов ответа

Компонент Weblinks

Компонент Weblinks (Каталог ссылок) позволяет зарегистрированным пользователям предлагать ссылки, которые могут стать частью общего списка ссылок. Данная возможность — палка о двух концах. С одной стороны, она полезна для создания виртуального сообщества, где каждый пользователь может внести свою лепту в развитие сайта. С другой стороны, вам нужно будет регулярно просматривать добавленные ссылки и удалять спам или ссылки на нежелательный контент. Joomla! позволяет администратору одобрять или отклонять предложенные пользователям ссылки, но вам все равно придется постоянно просматривать их.

Для каждой ссылки Joomla! позволяет вам указать следующую информацию (рис. 7.28): название, категорию, URL, описание, порядок (определяет, где именно ссылка появится в списке), флаги подтверждения и публикации, а также цель (определяет, будет ли открыта ссылка в новом окне или в текущем).

Рис. 7.28. В параметрах ссылки вы можете указать цель для ссылки

Примечание

Когда вы публикуете внешнюю ссылку, вы должны решить, хотите ли, чтобы пользователь покинул ваш сайт и перешел на другой. Например, на вашей странице может быть много ссылок-сносок для отображаемой статьи. Если пользователь щелкнет на такой сноске, он перейдет на другой сайт. Но что делать, если он не дочитал статью или хотел посетить еще несколько ссылок? Вы можете установить значение В новом окне с навигацией для параметра Где

открывать ссылку, в результате браузер откроет новое окно и отобразит сайт, на который указывает ссылка. Но окно вашего сайта все еще будет на экране пользователя.

Плагины сайта

Практически на каждом сайте плагины работают за сценой. Вы можете изучить существующие плагины с помощью Менеджера плагинов (рис. 7.29), вызвать который можно через меню Расширения. Но всего у нескольких плагинов есть параметры, которые могут значительно повлиять на функции системы.

Рис. 7.29. Менеджер плагинов выводит список доступных в системе плагинов

Хотя плагины — самый мощный тип расширений, они обычно выполняют специфические функции и поэтому работают практически незаметно. Обычно плагины связаны с каким-то компонентом или модулем для предоставления пользовательского интерфейса.

Так как аутентификация и защита играют огромную роль в электронной коммерции, мы рассмотрим системные плагины непосредственно в главе 11, когда будем настраивать виртуальный магазин. Пока вам можно изучить плагины редакторов (TinyMCE и XStandard Lite) и плагин System — Legacy.

У расширений редакторов есть несколько полезных параметров, влияющих на процесс редактирования (например, размер окна редактора). Плагин System— Legacy позволяет использовать старые (для версии Joomla! 1.0) модули, компоненты, плагины и шаблоны.

Резюме

В этой главе мы рассмотрели три типа расширений Joomla!: модули, компоненты и плагины. У каждого типа расширений свои возможности, что позволяет воплощать с их помощью определенный ряд задач. Модули хороши для дизайна (поэтому они могут появляться в любой части страницы) и для минимального взаимодействия с пользователем. Компонент может использоваться для создания полноценного интерфейса — как пользователя, так и интерфейса администратора. Плагины работают на самом низком уровне, позволяя реализовать низкоуровневые интерфейсы вроде WYSIWYG-редактора для статей.

Часто несколько типов расширений входит в состав одного пакета. Например, расширение Polls (Голосования) содержит компонент для создания, редактирования и управления опросами, а для вывода самих опросов и для организации взаимодействия с пользователем предназначен модуль Poll.

В этой главе были рассмотрены расширения, устанавливаемые по умолчанию при инсталляции Joomla!. Вы можете установить расширения посторонних разработчиков, чем расширите возможности Joomla!. В следующей главе мы рассмотрим несколько полезных компонентов, используемых для организации виртуального сообщества.

Глава 13. Создание расширений

Joomla! дружественна не только к администраторам, но и к разработчикам. Создание расширений (модулей, компонентов или плагинов)— настоящее удовольствие для разработчика. Поскольку Joomla! заботится о выводе интерфейса пользователя, имеет встроенные функции для доступа к базе дан ных, обеспечивает безопасность доступа, создание расширений для Joomla' намного проще, чем создание отдельного РНР-приложения.

В этой главе мы рассмотрим создание трех типов расширений: модуля, модуля администратора и компонента. Процесс создания этих расширений похож, как мы убедимся в этой главе.

Разработка модуля

Как было отмечено в главе 7, модули используются преимущественно для отображения информации. В качестве демонстрации этой возможности модуля мы создадим модуль, выводящий простое приветствие. Наш модуль мы назовем mod_hellofrom, и у него будет один параметр— location (месторасположение), который можно будет установить в Менеджере модулей, и он будет выводиться в приветствии. Как показано на рис. 13.1, модуль будет отображаться в вверху левого столбца.

После установки файлы модуля будут записаны в каталог \modules. Имя каждого подкаталога в этом каталоге совпадает с названием модуля. Все файлы модуля хранятся в его подкаталоге. Позже, когда вы будете создавать компонент, вы заметите, что инсталляционный файл компонента не будет скопирован в соответствующий компоненту подкаталог.

Совет_______..

После разработки модуля самый простой способ использовать его — сжать в архив и установить в Joomla!. В процессе инсталляции будут внесены все необ-

ходимые изменения в базу данных. После установки вы можете редактировать код модуля и вспомогательные файлы в каталоге \modules вашего сайта. После внесения изменения в код модуля нужно нажать кнопку Обновить в окне браузера, чтобы перезагрузить модуль.

Рис. 13.1. Модуль mod_hellofrom также будет отображать дату в приветствии

Структура модуля

Каждый пакет модуля содержит как минимум два файла: файл кода модуля и XML-файл описания модуля. Файл кода— это PHP-сценарий, содержащий код модуля. XML-файл содержит все необходимые инсталлятору директивы, а также информацию о модуле. Также этот файл содержит описание параметров модуля, которые потом можно будет изменять с помощью Менеджера модулей.

Создайте каталог mod_hellofrom на вашем локальном диске. Все файлы модуля будут помещены в этот каталог, а затем вы заархивируете его (можно использовать архиваторы ZIP и TAR) и установите с помощью Менеджера расширений.

XML-файл модуля mod_hellofrom

Для нашего модуля Hello From XML-файл будет содержать всю основную (директивы инсталлятора, названия модуля, перечень файлов), а также некоторую дополнительную (дата создания, версия, автор и т. д.) информацию о нашем модуле.

Создайте файл с именем modjiellofrom.xml и поместите его в каталог \mod_hellofrom и введите следующий код:

Файл описания начинается стандартным XML-тегом. Тег <instaii> описывает устанавливаемое расширение. Атрибут type задает тип расширения, в данном случае — это модуль (module). Атрибут version указывает, что данный модуль может запускаться в Joomla! версии 1.5 или выше.

Элемент <name> указывает имя нашего модуля, которое будет использоваться Joomla! после установки модуля. Из главы 7 вы узнали, что тип модуля подобен шаблону документа: экземпляр модуля, как документ, создается из него. Для нашего модуля тип модуля — mod_hellofrom, а экземпляр модуля будет называться Hello From. Текст из элемента <description> будет отображен после установки модуля, обычно он содержит инструкции по использованию модуля.

В элементе <f ilename> указывается имя модуля (атрибут module), которое будет сохранено в базе данных Joomla!, и будет использоваться для создания ссылок на модуль. Это имя также будет использоваться как тип модуля, когда вы будете создавать новые экземпляры модуля. Как только файл описания будет готов, можно приступить к PHP-файлу — ядру модуля.

PHP-файл

Главный файл модуля содержит весь PHP-код, выполняемый при вызове модуля. Код модуля похож на код обычной PHP-страницы, посылающей с помощью инструкции echo любой текст в браузер пользователя.

В начале каждого модуля нужно проверить, выполняется ли он системой Joomla! или запущен непосредственно. Это предотвратит попытки хакеров запустить расширение, зная его URL, используя некоторые параметры, которые, возможно, скомпрометируют ваш сайт. При выполнении модуля через Joomla! он получит надежную защиту.

Создайте файл modhellofrom.php и поместите его в каталог \mod_heIlofrom. Код модуля приведен далее:

Если вы знаете PHP, код модуля вам должен быть понятен. После проверки того, что сценарий выполняется в среде Joomla!, будет создана переменная $mylocation. Для этого используется метод get о объекта $params: мы получим значение параметра location, который был определен ранее в XML-файле.

Для второй переменной с именем $mydatetime устанавливаем значение — строку, содержащую отформатированную дату и время. Если вы хотите использовать данный модуль на своем сайте, нужно будет откорректировать время, если физическое местоположение Web-сервера, на котором находится

ваш сайт, не соответствует временной зоне места, указанного в параметре location. После этого следуют две функции echo (), выводящие текст в браузер.

Обратите внимание: весь текст отправляется методу jText::_().. Этот метод отправляет полученный текст Менеджеру языков. Если язык отличается от языка по умолчанию, Менеджер языков (или Joom.'Fish) переводит текущий текст на выбранный язык, после чего перевод будет возвращен методу JText::_'(). Если же язык текста и язык по умолчанию совпадают, просто будет возвращен тот же текст (перевод осуществляться не будет).

Использование этого метода позволит вашему расширению соответствовать функции интернационализации Joomla!: если перевод имеется в системе, расширение может выводить сообщения на разных языках, которые поддерживаются системой Joomla!.

Заархивируйте оба файла модуля в архив mod_hellofrom.zip. Для установки модуля откройте Менеджер расширений, выберите архив с модулем и установите его. После установки с помощью Менеджера модулей установите параметр location (рис. 13.2), после этого нажмите кнопку Сохранить для сохранения параметров модуля.

Рис. 13.2. Установите географическое местоположение сервера

Если вы установили отображение модуля в левом столбце, отройте браузер, и вы увидите приветствие модуля. Если же вы не изменяли порядок модуля

в Менеджере модулей, чтобы модуль отображался первым, модуль появится в самом низу левого столбца.

Поздравляю! Вы только что создали ваше первое расширение. Однако этот примитивный модуль совсем не тот, который вам хочется разместить на реальном Joomla!-сайте. Большинство модулей предоставляет более сложные функции и часто нуждается, в доступе к базе данных. Следующий модуль будет более сложным — это будет модуль администратора.

Разработка модуля администратора Missing Metadata

Модули администратора функционируют так же, как и модули пользовательского интерфейса, но они используются в интерфейсе администратора. Модуль администратора никогда не будет показан в интерфейсе пользователя, поскольку в большинстве случаев он отображает частную системную информацию и помогает администратору обслуживать сайт, т. е. информация модуля администратора нежелательна для всеобщего обозрения. В нашем примере мы создадим модуль, показывающий список статей, у которых не заполнены метаданные.

Для надлежащей поисковой оптимизации каждая страница должна содержать две части уникальных метаданных: поля metadescription (описание страницы) и metakeywords (ключевые слова). Эти поля используются поисковыми пауками при индексировании страницы. Например, Google использует поле metadescription для предоставления итоговой информации о странице (рис. 13.3).

Несмотря на важность этой информации, у многих Joomla!-сайтов есть масса статей, у которых не заполнены метаданные. Игнорирование метаданных может понизить рейтинг вашего сайта в поисковой машине и затруднит нахождение вашего сайта другими пользователями при поиске информации. Желательно заполнить эти два поля для каждой страницы сайта.

Для решения данной проблемы мы создадим модуль администратора, отображающий все статьи, у которых метаданные не заполнены. Для каждой статьи будет создана ссылка редактирования, поэтому администратору нужно просто щелкнуть на ней, чтобы перейти в режим правки. Отсутствующая информация будет сразу же добавлена в контент. Модуль будет отображать только опубликованные статьи (неопубликованные или архивные статьи показываться не будут).

Рис. 13.3. Поле metadescription Web-страницы используется для отображения итоговой информации в поисковых машинах вроде Google

Создание ХМL-дескриптора

Файл XML-дескриптора будет примерно таким же, как для нашего первого модуля Hello From. Этот модуль будет состоять из одного РНР-файла (mod_missingmeta.php), содержащего весь основной код. В каталоге \mod_missingmeta создайте файл mod_missingmeta.xml и введите следующий код:

Обратите внимание, что тег <instail> содержит дополнительный атрибут client, которого не было в предыдущем модуле. Если атрибут client отсутствует, модуль считается модулем пользовательского интерфейса и ассоциируется с типом клиента site. Поскольку мы разрабатываем модуль, который будет доступен только через интерфейс администратора, то установили тип клиента в administrator, что создаст модуль администратора и поместит его в каталог \administrator\modules.

Создание файла модуля

Код модуля Missing Metadata Items (Отсутствующие метаданные) требует наличия двух файлов — файла стилей и файла кода. В более сложном приложении есть смысл в подобном разделении, как мы делали ранее в этой книге, когда создавали шаблон. Если вы поместите CSS-код и PHP-код в отдельные файлы, тогда вам будет проще их редактировать. Но в этом модуле для большей простоты мы весь код будем хранить в одном файле.

Создайте новый файл mod_missingmeta.php и поместите его в каталог \mod_missigmeta и добавьте следующий код:

Код этого модуля более сложен, чем код ранее рассмотренного модуля. Первая секция PHP-кода получит доступ к объекту базы данных и сохранит его в переменной $db. Инструкция where в созданном MySQL-запросе выбирает только те записи, у которых пустые поля metakey и metadesc. Запрос выбирает только те статьи, у которых поле state установлено в 1, т. е. только опубликованные статьи.

Переменная $query создана для хранения запроса, выбирающего поля id, title, metakey и metadesc. Результат запроса будет сохранен в переменной $db. Переменная запроса использует инструкцию #_content для произведения поиска в таблице контента Joomla!. Директива #_будет заменена текущим префиксом таблицы, установленным администратором — обычно по умолчанию используется префикс jos_. Метод setQueryO объекта базы данных вызывается для сохранения строки запроса.

После секции PHP-кода следует HTML-код, создающий таблицу для отображения списка статей. Таблица использует классы adminiist и title, поэтому будет выглядеть так же, как и остальные таблицы в интерфейсе администратора. Созданная таблица будет состоять из трех полей: в первом будет заголовок статьи (он же — ссылка на редактирование статьи), второе — индикатор отсутствующего описания статьи (поле metadesc пустое), третье — индикатор отсутствующих ключевых слов (поле metakey — пустое).

Вторая часть PHP-кода производит вывод списка статей. Условный оператор if проверяет, есть ли статьи без метаданных. Если таких статей нет, тогда выводится один ряд со значениями "Пусто", "n/а" и "п/а".

Если же были найдены статьи, соответствующие параметрам поиска, цикл foreach "пройдется" по каждой записи. В цикле сначала будет создан URL, позволяющий редактировать статью. Обратите внимание, что в качестве значения параметра task (задача) указан параметр edit (редактирование).

Следующие два оператора if проверяют, заполнены ли поля метаданных, и выводят слова "Yes" или "No" в соответствующих столбцах. Поскольку используется метод JText::_(), слова "Yes" и "No" при необходимости будут переведены на установленный язык. Для каждой записи будут выведены три столбца, в том числе заголовок статьи и индикаторы отсутствия метаданных.

Заархивируйте файл кода и XML-дескриптор в архив mod_missingmeta.zip и установите его с помощью Менеджера расширений. Теперь перейдите в Менеджер модулей и убедитесь, что установленный модуль отсутствует в его списке. По умолчанию Менеджер модулей отображает пользовательские модули, но не модули администратора. Перейдите по ссылке Administrator (рис. 13.4). В списке вы увидите модуль Missing Metadata Items.

Щелкните по имени модуля-— вы перейдите в режим редактирования. По умолчанию модуль будет помещен слева. Даже если у шаблона администратора эта позиция (left) не определена. Раскройте список Позиция и выберите позицию cpanel для отображения модуля на главной панели администратора (рис. 13.5). Нажмите кнопку Сохранить для внесения изменений в базу данных.

Рис. 13.4. Перейдите по ссылке Administrator

для отображения модулей администратора

Рис. 13.5. Выберите позицию cpanet

Перейдите в панель управления и посмотрите на список модулей справа. Найдите установленный модуль и нажмите на стрелку раскрытия для отображения списка статей без метаданных (рис. 13.6).

Рис. 13.6. Новый модуль отображает статьи без метаданных

Теперь вы знаете, как реализовать модуль администратора для Joomla! и можете приступить к разработке собственных модулей с необходимыми вам функциями.

Эти модули являются основой для создания функций администратора в Joomla!. Но что если вам нужно что-то более интерактивное? В этом случае нужно создавать не более мощный модуль, а новый компонент.

Структура компонента Suggestion Box

Структура компонента подобная структуре модуля. Основное отличие заключается в наличии интерфейса пользователя. Компонент обладает полноценным интерфейсом администратора, в то время как модуль ограничен экраном установки параметров. Интерфейс администратора компонента доступен через меню Компоненты панели управления.

Поскольку компоненты помещаются в центральную часть большинства шаблонов, они позволяют лучше контролировать вывод информации, чем модули. Вы можете установить прямые ссылки меню на компоненты для вызова их пользователями. Компоненты могут принимать параметры, что будет показано на примере компонента Suggestion Box (Книга жалоб и предложений).

Один из способов улучшить обратную связь с пользователем — это добавление компонента жалоб и предложений. Пользователи смогут добавить свое предложение, которое будет записано в базу данных для рассмотрения администратором.

Начать разработку компонента предложений нужно с создания каталога \com_suggestionbox на вашем жестком диске. В этот каталог нужно поместить все файлы компонента.

Файл XML-дескриптора

Файл дескриптора для компонента практически идентичен дескриптору модуля. Разница в том, что в теге <instaii> нужно изменить атрибут type и установить его в component, вместо module. Также будет дополнительная секция <administration>, определяющая интерфейс администратора для компонента.

В случае с компонентом предложений интерфейса администратора не будет как такового, но в следующем коде я сделаю так, чтобы при выборе компонента из меню Компоненты (в панели управления) отображался стандартный интерфейс компонента. Зачем я это сделал?

Когда Joomla! устанавливает компонент без интерфейса администратора, он не будет помещен в меню Компоненты. Большинство компонентов должно быть в этом меню, даже если у них нет интерфейса администратора, поскольку наличие компонента в меню Компоненты позволяет администратору быстро определить, установлен ли компонент.

Но более важно то, что компонент должен обладать интерфейсом администратора для регистрации в базе данных, иначе вы не сможете создать на него ссылку в меню. Поскольку компонент Suggestion Box должен быть доступен из главного меню, вы должны добавить секцию <administration> в XML-файл.

В каталоге \com_suggestionbox создайте файл suggestionbox.xml и введите

следующий код:

\

<?xml version="l.О" encoding="utf-8"?> <install version="1.5.0" type="component">

<name>Sugges t ionBox< /name>

<author>Dan Rahmel</author>

<version>l.0.0</version>

<description>Displays a suggestions form and records

suggestions in the jos_suggestion table.</description> <files>

<filename component="com_suggestionbox">suggestionbox.php</filename> </files>

<administration>

<menu>Suggestion Box</menu> <files>

<filename component="com_suggestionbox"> sugges t ionbox.php</filename> </files> </administration> </install>

Файл дескриптора готов к использованию. Теперь вам нужно создать файл кода, содержащий всю логику выполнения компонента.

PHP-файл кода

Код компонента будет производить множество различных операций. Прежде всего, он проверит, были ли переданы компоненту какие-то параметры. Один и тот же URL будет использоваться для первой (вывод формы для ввода предложения пользователем) и для второй (запись предложения в базу данных) стадий предложения. На первой стадии будет просто выведена форма предложений, а на второй, если форма будет заполнена, введенные пользователем данные будут записаны в таблицу.

В каталоге \com_suggestionbox создайте файл suggestionbox.php и введите следующий код:

<?php у**

  • Sversion $Id: suggestion.php 5203 2007-07-27 02:45:14Z DanR $
  • Scopyright Copyright (C) 2007 Dan Rahmel. All rights reserved.
  • Компонент принимает предложения пользователей и сохраняет их в БД
  • ■/

// Запрещаем непосредственный доступ defined('_JEXEC} or die('Restricted access'); .if(JRequest::getVar('suggestion')) { $db =& JFactory::getDBO();

// Автоматически пытаемся создать таблицу. Если таблица уже существует, // попытка ее создания будет проигнорирована

$createTable = "CREATE TABLE IF NOT EXISTS 4#_suggestions4" .

"("id" INTEGER UNSIGNED NOT NULL AUTO_INCREMENT, ". ""suggestion" text NOT NULL, "email" VARCHAR(45)," . ""location" VARCHAR(45), "created" TIMESTAMP NOT NULL, " . ""userip" VARCHAR(16), PRIMARY KEY("id"))";

$db->setQuery($createTable, 0) ; // Запускаем создание таблицы $db->query() ;

// Получаем и форматируем все переменные формы

$flclSuggest = "'" . $db->getEscaped(JRequest::getVar(1 suggestion*)) .

m 1.11 , /

$fldEmail = "'" . $db->getEscaped(JRequest::getVar( 'email')) •

$fldLocation = "'" . $db->getEscaped(JRequest::getVar( 'location' )) . и f ti.

// Сохраняем IP-адрес пользователя, сделавшего предложение $userlp = "'" . $_SERVER['REMOTE_ADDR'] .

// Помещаем все предложения в таблицу jos_suggestions $insertFields = "INSERT INTO #_suggestions " .

"(suggestion, email, location, userip) " .

"VALUES (" . $fldSuggest . "," . $fldEmail . "," .

$fldLocation . . $userlp . ");";

$db->setQuery( $insertFields, 0); $db->query();

?>

<hl class="contentheading">Cnaoi6o за ваше предложение!</hl> <?php } else {

?>

<hl class="contentheading">OopMa предложения</п1> <form id="forml" name="forml" method="post"

action="index.php?option=com_suggestionbox"> <р>Ваше предложение:

<textarea name="suggestion" cols="40" rows="4" id="suggestion"x/textarea>

Email (необязательно) : <input name="email" type="text" id="email" />

<1аЬе1>Откуда вы (необязательно) : </label>

<input name="location" type="text" id="location" />

<input type="submit" name="Submit" value="OTnpaBHTb" />

</form> <?php } ?>

Первая часть кода проверяет, были ли переданы компоненту параметры — особенно параметр suggestion. Если переменная suggestion передана компоненту, компонент начинает обрабатывать информацию. Код загружает ссылку на объект базы данных.

Затем он осуществляет запрос create table (создать таблицу). Использование модификатора if not exist позволяет создать таблицу, только если она не существует. Если это так, будет создана таблица с использованием текущего префикса таблиц (в большинстве случаев будет создана таблица jos_suggestions) для хранения предложений.

В определении таблицы мы видим два поля, генерируемые базой данных MySQL: id и created. Поле id автоматически увеличивается при добавлении новой записи, поэтому оно будет использоваться в качестве уникального ключа. Поле created — это дата добавления предложения.

После создания таблицы компонент обрабатывает три поля формы предложения (suggestion — текст предложения, email — электронный адрес пользователя и location— расположение пользователя) и сохраняет их как переменные. Метод getEscapedO используется для добавления необходимых escape-символов, чтобы убедиться, что текст правильно запишется в базу данных. Например, если бы пользователь ввел текст с кавычками, они бы стали частью запроса, и запрос не был бы выполнен из-за синтаксической ошибки, поэтому нам не обойтись без вызова метода getEscaped ().

Четвертая переменная создана для хранения IP-адреса отправителя предложения. Хотя IP-адрес может быть подменен, большинство спаммеров не тратят свое время и энергию на это, поэтому в большинстве случаев IP-адрес поможет администратору проследить, кто нарушает условия использования узла, и запретить этим IP-адресам доступ к системе.

Когда все четыре переменные установлены надлежащим образом, команда Insert Into добавит новую запись в таблицу. После сохранения записи пользователь будет поблагодарен за предложение.

Оставшаяся часть компонента будет отображена, только если не будут обнаружены переменные формы. В этом случае будет отображена форма добавления предложения. В коде формы есть только два элемента, достойных внимания. Для тега заголовка <hl> используется класс contentheading, поэтому наш компонент будет оформлен в соответствии с выбранным шаблоном.

Второй элемент — это атрибут action формы. Он установлен в index.php?option=com_suggestionbox, поэтому как только пользователь нажмет кнопку Отправить, будет снова вызван наш компонент. Компонент обнаружит заполненные поля формы и добавит предложение в базу данных.

Установка компонента

Заархивируйте содержимое каталога com_suggestionbox в архив com_suggestionbox.zip, после чего загрузите и установите его в Joomla! с помощью Менеджера расширений. Как только компонент будет установлен, перейдите на вкладку Компоненты Менеджера расширений и опубликуйте компонент (по умолчанию компоненты не публикуются после установки).

Теперь в меню Компоненты появится новый компонент. Не нужно выбирать его — просто убедитесь, что он есть. Из меню Все меню выберите главное меню. Нажмите кнопку Новый для создания новой ссылки меню. В группе Выберите тип меню выберите компонент Suggestion Box (рис. 13.7).

Рис. 13.7. Выберите компонент Suggestion Box

Назовите пункт меню Предложения и откройте в браузере свою главную страницу. В главном меню вы должны увидеть только что созданный элемент меню. Нажмите его, и вы увидите форму предложений (рис. 13.8).

Введите любое предложение и нажмите кнопку Submit. Предложение будет отправлено в базу данных для изучения администратором. Теперь вы создали ваш первый компонент и получили основу, необходимую для создания других компонентов в будущем.

Рис. 13.8. Компонент Suggestion Box отображает форму предложения

Резюме

В этой главе вы создали три разных расширения: пользовательский модуль, модуль администратора и компонент. В большинстве случаев модули и компоненты позволяют добавить необходимые функции, если вы не можете найти реализующие их посторонние расширения.

Первый модуль, отображающий простое приветствие, демонстрирует интегрирование модулей в Joomla!. Модуль администратора более сложный, он использует базу данных и доступен только из интерфейса администратора. Наконец, компонент— самый сложный из всех— состоит из двух частей: формы ввода данных и алгоритма их сохранения в базе данных. Расширение демонстрирует, как компонент может изменять свое поведение в зависимости от переданных ему параметров.

Я надеюсь, что вам понравилась эта книга, посвященная Joomla!, и вы узнали с ее помощью больше, чем ожидали. Joomla! может использоваться для создания любых сайтов — от персональных страничек до полноценных интернет-магазинов. Надеюсь, что вы присоединитесь к Joomla!-сообществу и сделаете свой вклад в развитие некоммерческой организации Open Source Matters (подробнее см. www.joomla.org и www.opensourcematters.org) — новыми шаблонами, новыми расширениями или просто своим присутствием.

Joomla!-сообщество включает десятки тысяч энтузиастов. Надеюсь, что вы присоединитесь к нам и станете одним из нас. Увидимся в Сети!

Расширения Joomla!

Как уже отмечалось в главе 1 «Системы управления содержимым и введение в Joomla!», очень сложно найти сайт, созданный на базе Joomla, который не использовал бы функциональность дополнительных расширений. Под словом «расширения» подразумеваются компоненты, модули, дополнения и языки программирования.

Существуют сотни расширений, как свободно распространяемых, так и коммерческих, разрабатываемых сторонними фирмами. Дополнительную информацию вы сможете найти на сайтах extensions.joomla.org и www.extensionprofessionals.com.

В настоящее время большинство расширений работают с версией Joomla 1.0 X. В связи с тем что версия 1.5 появилась не так давно, в настоящее время не так много расширений, созданных сторонними разработчиками, которые изначально предназначены для версии 1.5. Сейчас Joomla проходит цикл развития от бета-версии через предварительную версию к стабильному выпуску, поэтому будем надеяться на появление новых расширений в будущем, которые будут работать в новой версии.

В этой главе

В этой главе будет рассмотрено несколько примеров базовых и коммерческих расширений Joomla. Здесь также будет исследован порядок их установки и администрирования.

• Что такое расширения.

• Как установить расширения Joomla.

• Где можно взять расширения сторонних разработчиков.

• Что такое компоненты.

• Что такое модули.

Что такое расширения

Расширения - это устанавливаемые пакеты, расширяющие те или иные функциональные возможности Joomla. Существует пять типов расширений:

• Компоненты - являются наиболее сложной разновидностью расширений. Это своего рода мини-приложения, которые обычно используются для отображения содержимого в основной части страницы (самая широкая средняя колонка). Базовый компонент (com_content), например, - это мини-приложение, которое отображает все ваши статьи некоторым способом. В качестве еще одного примера можно привести компонент форума, который отображает главный стенд форума, отдельные его ветви и прочее. Но не все компоненты предназначены для отображения содержимого - некоторые реализуют довольно сложные функции. Например, компонент регистрации (com_registration) обеспечивает регистрацию пользователей.

• Модули - обычно намного меньше и проще компонентов. Кроме того, они обычно размещаются по краям основной части страницы -в заголовке, боковых колонках или в нижнем колонтитуле - и являются маленькими расширениями, предназначенными для решения небольших задач. Например, модуль Latest News (Последние новости) отображает ссылки на самые свежие статьи на сайте. Нередко модули предназначены для работы с определенным компонентом. Например, модуль формы регистрации пользователя позволяет пользователям регистрироваться на сайте.

• Дополнения (ранее назывались мамботами) - представляют собой специальные фрагменты программного кода, которые могут использоваться везде, по всему сайту, и запускаться при загрузке страницы. В качестве примера можно привести дополнение Email Cloaking, которое с помощью JavaScript выполняет сокрытие адресов электронной почты, чтобы сделать их недоступными для спам-роботов.

• Шаблоны - управляют внешним графическим представлением сайта. Они обычно включают в себя цветовую палитру, графическое оформление и шрифты.

• Языки - существует возможность интернационализации системы за счет установки различных языковых пакетов. Все текстовые элементы, которые являются составной частью Joomla (как, например, текст ссылки Read More (Подробнее)) будут отображаться на выбранном языке.

Установка расширений

Все расширения поставляются в виде файлов архивов в формате zip и устанавливаются совершенно одинаково. Чтобы установить расширение, необходимо открыть страницу Extension Manager (Менеджер расширений).

Выберите пункты меню Extensions -> Install/Uninstall (Расширения -> Установить/удалить). В результате будет открыта страница Extension Manager (Менеджер расширений), показанная на рис. 6.1.

На первой вкладке, Install (Установить), имеется возможность загрузить инсталляционный пакет (zip-файл расширения). После того как файл будет найден и загружен, Joomla автоматически определит тип расширения и установит его. После этого вам будет показано сообщение об успешной установке. Нередко, особенно при установке расширений, созданных сторонними разработчиками, вам будет показана дополнительная информация, как, например, инструкции по настройке или адрес сайта, где можно получить техническую поддержку.

Примечание

Если в процессе установки возникли ошибки, обычно это связано с правами доступа и назначением владельцев каталогов, то есть Joomla не смогла записать файлы в каталог или создать каталог, необходимый для установки расширения. Самый простой способ разрешения таких проблем - использовать уровень FTP, настройка которого производится на странице Global Configuration (Общие настройки).

Удаление компонентов также производится с помощью менеджера расширений. На рис. 6.1 можно видеть вкладки Components (Компоненты), Modules (Модули), Plugins (Плагины), Languages (Языки) и Templates (Шаблоны). Если щелкнуть по вкладке Components (Компоненты) - рис. 6.2, — можно увидеть список компонентов, которые могут быть удалены.

Обратите внимание: на рис. 6.2 в списке присутствует множество компонентов, которые обесцвечены. Это базовые компоненты Joomla, и они не могут быть удалены.

Управление расширениями

Для каждого типа расширений, кроме компонентов, в меню Extensions (Расширения) имеется свой пункт. На рис. 6.3 показано содержимое меню Extensions (Расширения).

Для компонентов имеется отдельное меню из-за высокой их сложности по сравнению, например, с модулями.

По своему оформлению страницы менеджеров модулей и дополнений напоминают менеджер статей. Страница Module Manager (Менеджер модулей) показана на рис. 6.4.

Менеджеры шаблонов и языков выглядят несколько иначе, в основном из-за того, что в каждый конкретный момент времени активным может быть только один шаблон или язык. Страница Template Manager (Менеджер шаблонов) показана на рис. 6.5.

Рис. 6.5. Страница Template Manager (Менеджер шаблонов)

Компоненты

Компоненты - это специализированные мини-приложения, работающие под управлением Joomla. В главе 1 уже говорилось, что все, отображаемое в основной части страниц сайта на базе Joomla (обычно в средней колонке), генерируется с помощью компонентов. Это может быть форум, каталог, галерея или что-то другое. Можно с уверенностью сказать, что центральной частью Joomla является компонент, способный отображать содержимое статей в форме блога или таблицы. В Joomla существует несколько компонентов, которые составляют ее основу.

Примечание

Некоторые компоненты для обеспечения полноты функциональных возможностей используют модули и другие компоненты.

Базовые компоненты

К базовым компонентам системы Joomla относятся:

• Banner (Баннер) - средство показа рекламных баннеров на сайте. Компонент состоит из менеджера баннеров и модуля Banner (Баннер).

• Contacts (Контакты) - с помощью этого компонента можно отображать на сайте список контактов. Менеджер также имеет возможность определять категории контактов. При создании ссылки на компонент можно выбрать отдельный контакт или целую категорию.

• Newsfeeds (Ленты новостей) — компонент ленты новостей - это прекрасный способ без труда встроить дополнительное информационное наполнение, имеющее отношение к тематике сайта. Данный компонент использует технологию RSS. Если другой веб-сайт имеет RSS-ленту, вы сможете организовать ее отображение на своем сайте.

• Polls (Голосования) - если вы хотите повысить интерактивность своего сайта, голосования помогут вам в этом. Голосования создаются с помощью менеджера голосований и отображаются с помощью модуля Poll (Голосование).

• Search (Поиск) - в системе Joomla имеется встроенный мощный механизм поиска. В паре с соответствующим модулем он позволяет посетителям выполнять поиск по всему сайту по ключевому слову.

• Web Links (Каталог ссылок) - любая веб-страница может содержать ссылки на другие сайты. Компонент каталога ссылок берет на себя функцию хранения ссылок и отображения счетчика числа переходов по ним. Это наиболее полезная особенность, потому что она позволяет пользователям сайта отправлять ссылки, создавая соответствующие элементы меню. Этот инструмент обычно называется каталогом.

• Massmail (Почтовые рассылки) - этот инструмент позволяет отправлять электронные сообщения всем зарегистрированным пользователям сайта. Это очень простой инструмент, и его функциональные возможности весьма далеки от реализованных в аналогичных компонентах сторонних разработчиков. Сложно гарантировать, что отправка электронной почты таким способом будет соответствовать закону о борьбе со спамом (CAN-SPAM), но такой способ очень удобен для быстрой отправки сообщений отдельным группам пользователей, например администраторам.

Компоненты сторонних разработчиков

Одна из самых интересных особенностей Joomla - это наличие огромного числа расширений. Проект Joomla уникален в мире свободного программного обеспечения, поскольку над развитием этого проекта трудятся как сторонники GPL, так и коммерческие разработчики. Двумя основными хранилищами расширений от сторонних разработчиков являются сайты extensions.joomla.org и www.extensionprofessionals.com.

При наличии более 2000 расширений очень сложно обеспечить общность их поведения. Каждое расширение отличается какими-то своими особенностями в администрировании, что объясняется решениями, которые принимаются разработчиками.

Следующие разделы образуют короткий список расширений для Joomla 1.0.Х, которые я часто использую при создании своих веб-сайтов и сайтов клиентов Joomlashack. Описания взяты непосредственно из каталога расширений. В Joomlashack все эти расширения были использованы при разработке отдельных проектов не менее 10 раз (это мое пороговое значение для включения в список). Мы протестировали каждое из них и считаем их лучшими в своем классе, поэтому мы считаем оправданным использовать их при разработке своих проектов и проектов наших клиентов. Некоторые из них распространяются на коммерческой основе, другие - на основе GPL. Если вы решите использовать расширение, которое распространяется на условиях лицензии GPL, посетите сайт разработчика и, если там предоставляется возможность оказывать финансовую поддержку, пожертвуйте хотя бы немного!

Jom Comment (система комментариев) -http://www.jom-comment.com

Jom Comment - это система комментариев, выбранная большим числом голосов! Мощная, основанная на использовании технологии Ajax, система комментариев для веб-сайтов, построенных на базе системы Joomla. Расширение Jom Comments обеспечивает ровное и гладкое отображение комментариев, уменьшая трафик с сервером, благодаря применению технологии Ajax. Обеспечивает защиту веб-сайта от нежелательного спама с использованием алгоритма САРТСНА (Completely Automated

Public Turing test to tell Computers and Humans Apart - Полностью автоматизированный публичный тест Тьюринга для различения компьютеров и людей). Позволяет настроить модуль комментариев так, чтобы он полностью соответствовал внешнему виду веб-сайта. Расширение Jom Comment легко устанавливается и не вызывает сложностей в использовании, а также имеет великолепную техническую поддержку разработчиков. Если вы используете компоненты AkoComment или ComboMax, вы можете просто импортировать данные, созданные с их помощью, в Jom Comment - и система комментариев может быть запущена практически без потерь времени.

joomlaXplorer (менеджер файлов) -http://joomlacode.org/gf/project/joomlaxplorer

Расширение joomlaXplorer - это менеджер файлов и FTP-менеджер. Оно позволяет редактировать файлы, удалять, копировать, переименовывать, архивировать и распаковывать файлы и каталоги непосредственно на сервере. Вы можете просматривать содержимое каталогов и файлов; редактировать, копировать, перемещать, и удалять файлы; отыскивать и загружать файлы; создавать новые файлы и каталоги; изменять права доступа к файлам (команда chmod) и многое другое. Этот сценарий основан на QuiXplorer 2.3.1.

Community Builder (управление пользователями) -http: //www.joomlapolis.com /

Набор Community Builder расширяет систему управления пользователями, которая имеется в Joomla. Ключевые особенности: дополнительные поля в профиле, расширенный процесс регистрации, списки пользователей, построение цепочки связей между пользователями, вкладки и профили пользователей, определяемые администратором, загрузка изображений, возможность управления со стороны внешнего интерфейса и интеграция с другими компонентами, такими как PMS, Newsletter, Forum и Galleries. Версия 1.0.2 является стабильной и совместима как с Joomla 1.0, так и с Joomla 1.5 Beta 1 и Mambo 4.5.0-4.6.2. Смотрите объявления на домашней странице проекта.

SlideShowPro for Joomla (галерея) -http://www.joomlashack.com

Расширение SlideShowPro - это популярная галерея изображений для Joomla на Flash, которая позволяет загружать изображения на сайт. Этот модуль дает пользователям возможность управлять всеми настройками, обычными для Flash-компонента, через административную панель. Модуль может дублироваться для запуска нескольких экземпляров, использующих один и тот же SWF-файл с полностью отличным набором параметров. Для работы модуля требуется Flash MX или выше и компонент SlideShowPro Flash, который можно получить на сайте www.slideshowpro.net. Вместе с модулем распространяется файл справки в формате FLA.

VirtueMart (тележка для товаров) - http://virtuemart.net/

Расширение VirtueMart - это законченное решение для интернет-магазинов (ранее известное как mambo-phpShop) на базе системы Joomla. Пользуется большой популярностью и может применяться в качестве каталога. С помощью мощного инструмента администрирования вы сможете управлять неограниченным числом категорий, продуктов, заказов и заказчиков.

Joomap (карта сайта)

http: //joomlacode.org/gf/project/joomap/

Расширение Joomap - это компонент для отображения карты сайта, который способен показывать в виде иерархического списка структуру меню, структуру категорий и разделов содержимого, категорий Virtue-mart. Система дополнений позволяет легко расширять диапазон поддерживаемого информационного наполнения, а поддержка интернационализации — локализовать компонент. Новая версия поддерживает создание XML-файла для Google Sitemap.

Mosets Tree (каталог) - http://www.mosets.com/tree/

Расширение Mosets Tree - это компонент создания каталогов для Joomla. На базе этого расширения построен каталог расширений Joomla: http:// extensions.joomla.org. Вы можете использовать Mosets Tree для создания сложных Yahool-подобных каталогов прямо внутри своего веб-сайта на базе Joomla. Расширение Mosets Tree предназначено для организации каталогов с любыми данными, например торговых каталогов, каталогов ссылок, каталогов сценариев.

perForms (формы)

http: //joomlacode.org/gf/project/performs

Расширение perForms - это компонент создания форм для Joomla. Расширение perForms позволяет создавать формы буквально за секунды, сохранять данные в базе данных, пересылать отправляемые данные по электронной почте, просматривать данные в административном разделе сайта. Обладает полной поддержкой алгоритма САРТСНА (с помощью компонента com_secu rityimages), обеспечивает безопасную загрузку файлов, сохраненные данные могут быть загружены в форме электронной таблицы, изначально поддерживает кодировку utf-8 и переведено на 14 языков. Расширение perForms включает дополнение (мамбот), которое позволяет встраивать формы прямо в содержимое, и модуль, отображающий результаты отправки формы в виде отчета.

Remository (менеджер файлов/документов) -http: //www.remository.com /

Отличный менеджер файлов с широким диапазоном функциональных возможностей и красивым интерфейсом. В настоящее время готовится к выпуску версия 3.40, которая обладает рядом усовершенствований -на сайте проекта уже доступна предварительная версия Remository 3.40 RC2.

JCal Pro (календарь) - http://dev.anything-digital.com/

Расширение JCal Pro - это "уУЗС-совместимый компонент календаря событий с великолепным внешним видом, созданным на базе CSS. Из особенностей можно отметить возможность импорта событий и категорий из ExtCalendar, поддержку встроенной в Joomla иерархии прав доступа для создания и управления событиями, визуальный редактор описаний, возможность установки и управления темами, управление событиями со стороны внутреннего интерфейса, разделение прав доступа при просмотре событий (то есть можно организовать частные категории), интегрированный мамбот поиска, а также многофункциональный мини-календарь с модулем последних событий.

Модули

Модули - это младшие братья компонентов. Они существенно меньше, но также добавляют некоторую функциональность страницам и обеспечивают интерактивность. Как уже говорилось, компоненты могут включать в себя несколько модулей. Например, компонент календаря JCal Pro содержит модуль, который отображает облегченную версию календаря в боковом поле страницы.

Отображение модулей

Все модули обладают параметрами, которые определяют характеристики их отображения (рис. 6.6).

Вверху слева находится следующая информация о модуле:

• Заголовок.

• Отображается ли модуль и активен ли он.

• Местоположение (определяется шаблоном).

• Порядок следования относительно других модулей.

• Уровень доступа.

Названия всех параметров говорят сами за себя. Единственный параметр, который заслуживает отдельного описания - это Access Level (Доступ). Этот параметр позволят создавать абсолютно разные версии веб-сайта для разных групп пользователей, таких как гости, зарегистрированные пользователи и администраторы.

Слева внизу располагаются параметры, более сложные для понимания и определяющие назначение меню. В главе 5 «Создание меню и элементов навигации» рассказывалось об этой сложной идее привязки модулей не к страницам, а к пунктам меню.

Эти параметры определяют, на каких страницах будет появляться меню. Теперь вспомните, что страницы существуют только при наличии ссылок, указывающих на них, поэтому в данном случае речь фактически идет о списке элементов меню (ссылок), а не о страницах. Вы можете выбрать один из трех вариантов: АН (Все), None (Нет) или Select (Выбрать из списка). Левой кнопкой мыши при нажатой и удерживаемой клавише Ctrl из списка можно выбрать сразу несколько страниц (я имею в виду ссылки!).

На рис. 6.6 приводятся параметры модуля Main Menu (Главное меню), который будет отображаться на всех страницах сайта.

Вполне очевидно, что при таком подходе очень легко запутаться. Поэтому я рекомендую вооружиться ручкой с листом бумаги и описать, как должны выглядеть все основные страницы и какие модули будут размещаться на них.

Обычно за размещение модулей и их управление отвечает администратор при условии, что речь идет о модулях, общих для всего сайта.

Базовые модули

Подобно компонентам, некоторые модули входят в состав базовой установки Joomla. Их можно разделить на несколько типов: базовые модули отображения содержимого, базовые модули, связанные с компонентами, и прочие базовые модули.

Базовые модули отображения содержимого

В системе Joomla имеется несколько модулей, которые устанавливаются по умолчанию.

• Archived Content (Материалы в архиве) - этот модуль отображает список календарных месяцев в виде ссылок, которые указывают на содержимое сайта в архивах. Как упоминалось ранее, наличие архивов на сайте имеет свои преимущества и недостатки. Главный недостаток заключается в изменении строки URL.

• Latest News (Последние новости) — этот модуль очень полезен. Он отображает список ссылок на последние созданные элементы содержимого. Несмотря на совпадение названия модуля Latest News (Последние новости) с названием одной из категорий в установке по умолчанию, данный модуль может быть настроен так, чтобы он выбирал содержимое только из определенных разделов и категорий. Это прекрасный способ динамического отображения информации о новом содержимом на сайте.

• Newsflash (Случайная новость) - следующий в серии модулей, которые отображают содержимое сайта динамически (Latest News (Последние новости) и Most Read (Самые читаемые)), модуль Newsflash (Случайная новость) отображает элемент содержимого, отобранный случайным образом. Немного отличный от двух других модулей, он может отображать не только заголовок элемента, но и его вводный текст. Кроме того, он может отображать содержимое не только из одноименной категории Newsflash (Случайная новость), присутствующей в установке по умолчанию, но и из любого другого раздела или категории.

. • Random Image (Произвольное изображение)-еще один модуль отображения содержимого. Он похож на модуль Newsflash (Случайная новость), но используется для показа изображений.

Совет

При аккуратном проектировании шаблона модуль Random Image (Произвольное изображение) легко можно превратить в заголовок сайта. В результате появляется возможность показа случайных изображений в заголовке сайта.

• Custom HTML (Произвольный HTML-код)-в этот модуль с помощью редактора можно записать произвольное содержимое в формате XHTML, что делает его самым гибким из всех модулей. Помимо текста и графики в этот модуль можно вставлять разметку XHTML и программный код JavaScript.

• Most Read Content (Самые читаемые) - еще один очень полезный модуль, отображающий динамическую информацию; он показывает список ссылок на наиболее популярные элементы содержимого на сайте. Как и модуль Latest News (Последние новости), он может показывать содержимое из определенных разделов и/или категорий.

Примечание

В настоящее время в базовой поставке Joomla нет модулей, которые позволяли бы отображать вводный текст из статей, выбранных случайным образом. Существуют модули сторонних разработчиков, которые позволяют делать это, но они недостаточно надежны.

• Related Items (Похожие материалы) - этот модуль отображает список ссылок на все элементы, которые имеют отношение к содержимому, отображаемому в настоящий момент времени. Отношения между элементами содержимого в Joomla определяются с помощью ключевых слов в метаданных. Примечательно, что не существует способа ограничить число отображаемых ссылок, как в других модулях. Подробнее о метаданных мы поговорим в главе 8 «Привлечение посетителей».

• Sections (Разделы) - показывает список ссылок на все разделы сайта. К сожалению, нет эквивалентного модуля для отображения списка категорий.

Базовые модули, связанные с компонентами

В установку Joomla по умолчанию включено несколько модулей, которые предназначены для работы в составе базовых компонентов.

• Syndicate (Публикации) - модуль, дополняющий компонент синдици-рования. Он выполняет роль RSS-рассылки в компоненте Frontpage (Главная страница). То есть неважно, где находится модуль Syndicate (Публикации), - он всего лишь обеспечивает передачу информационного наполнения, публикуемого компонентом Frontpage (Главная страница).

Совет

Компонент Frontpage (Главная страница) необязательно должен присутствовать на первой странице сайта. Вам может показаться это странным, но дело в том, что в Joomla в качестве главной страницы сайта используется любая первая ссылка в главном меню. В действительности вы можете перенести ссылку на компонент Frontpage (Главная страница) вглубь сайта. Это удобно при создании блогов, которые нежелательно показывать на главной странице.

• Poll (Голосование) - дополняет компонент голосований. Фактически этот модуль показывает вопросы для голосования.

Прочие базовые модули

В последнюю категорию входят модули, которые реализуют самые разнообразные функции.

• Login (Войти) — важнейший модуль для большинства сайтов на базе Joomla. Он отображает простейшую форму для регистрации пользователя или создания новой учетной записи. Обратите внимание: форма регистрации также может отображаться в основной части страницы при наличии ссылки на нее в меню. В этом случае модуль не используется.

• Menu (Меню) - еще один жизненно важный модуль. Он отображает различные меню сайта.

• Who's Online (Кто онлайн) - простейший модуль, показывающий число зарегистрированных пользователей и гостей, присутствующих на сайте.

• Statistics (Статистика) - показывает простейшую статистику посещений сайта, имеет возможность отображать технические характеристики сервера.

• Feed Display (Лента новостей) - этот модуль позволяет отображать ленту новостей RSS, что делает его эквивалентным компоненту Newsfeed (Ленты новостей), который отображает ленты новостей в основной части страницы.

• Wrapper (Обертка) - этот модуль загружает и показывает внешнюю страницу. По своему действию напоминает компонент Wrapper (Обертка), который делает то же самое в основной части страницы. Этот модуль имеет ограниченную ценность, так как он может загружать и отображать только небольшие объемы содержимого из-за того, что модули обычно помещаются в узкие боковые колонки и другие ограниченные по площади участки страницы.

Модули сторонних разработчиков

Подобно компонентам, для Joomla существует большое разнообразие модулей, созданных сторонними разработчиками. Как уже говорилось в разделе, описывающем компоненты, мы все еще находимся в переходном периоде, но здесь я хотел бы отметить некоторые модули для версии 1.0.Х, которые лично опробовал и протестировал.

JPG Flash Rotator 2 (смена изображений) -http: //www.joomlashack.com

JPG Flash Rotator 2 - модуль на базе (X)HTML Flash, который позволяет выбирать по одному изображению из нескольких и использовать их для отображения в виде затухающего баннера или слайд-шоу на сайте. Модуль обладает следующими характеристиками: удовлетворяет требованиям (X)HTML, поддерживает режим частичной прозрачности (WMODE=Transparent), способен отображать до 6 различных Flash-эффектов переходов (круговой, текучесть, затухание фона, перекрестное затухание, летящие квадратики, линейные жалюзи), возможность выбора случайного изображения, назначение ссылок для каждого кадра, полноценная панель администратора (для работы с ней не требуется знание технологии Flash), изменяемый размер изображений, изменяемый цвет фона, обеспечивает возможность выполнять переходы с помощью клавиши табуляции.

Jumi - http://www.vedeme.cz

Jumi - это многоцелевой модуль и дополнение для Joomla и Mambo. Благодаря Jumi вы сможете включать разметку HTML и сценарии на РНР или JavaScript в определенные позиции модуля и в статьи. Установив всего один модуль и/или дополнение, вы сможете включить тысячи своих сценариев в модули и статьи. Вы сможете вставлять в свои страницы статический текст и разметку HTML даже без использования компонента Wrapper (Обертка). Вы сможете определять, изменять и передавать PHP-сценариям неограниченное число аргументов и тем самым влиять на поведение содержимого.

AdSense Module - http://www.joomlaspan.com

Лучшее простое решение для реализации контекстной рекламы Google AdSense в Joomla. Улучшенные характеристики модуля: возможность блокировать показ рекламы для определенных IP-адресов. Теперь вы сможете блокировать «небезопасные» щелчки, которые потенциально способны отключить вас от Google AdSense! Мы предлагаем вам указать здесь свой собственный IP-адрес, чтобы предотвратить переход на просмотр рекламы по случайному щелчку, кроме случаев, когда вам требуется проверить появление рекламы на своем сайте. Для заблокированных IP-адресов вы сможете организовать показ какой-нибудь другой рекламы. Кроме того, модуль способен автоматически изменять цвет рекламного объявления.

Как видите, я склонен использовать больше модулей, чем компонентов. Это обусловлено, главным образом, тем, что очень часто в составе компонентов распространяется сразу несколько модулей.

Дополнения

Дополнения предлагают ту же самую функциональность, которая может использоваться по всему сайту. Большинство пользователей Joomla заметят, что дополнения не нуждаются в таком частом администрировании, как компоненты или модули.

Базовые дополнения

• Authentication - в системе Joomla имеется несколько дополнений, которые могут использоваться для аутентификации в различных системах, включая Gmail, OpenID и LDAP.

• Content-Code Highlighter - это дополнение выполняет подсветку синтаксиса программного кода в информационном наполнении (когда используется тег <срге>) в соответствии со стандартами GeSHi.

• Content-Email Cloacking - это дополнение преобразует адреса электронной почты, которые встречаются в статьях, в программный код JavaScript. Это обеспечивает недоступность адресов для спам-робо-тов, производящих сбор адресов.

• Content-Load Modules - это дополнение позволяет загрузить модуль в содержимое статьи, в указанную позицию, вставляя строку

[loadposition user"!].

• Кнопки: Image, Pagebreak и Readmore - эти дополнения отвечают за функциональность кнопок вставки изображений, разрывов страниц и ссылок Read More (Подробнее) в редакторе статей.

• Редакторы - в установку Joomla по умолчанию входит три редактора: No Editor, TinyMCE и XStandard Lite. Дополнительно могут быть установлены другие улучшенные или коммерчески распространяемые редакторы.

• Search - это дополнение управляет индексацией и поиском содержимого.

• System-Legacy - это дополнение дает возможность запускать расширения (шаблоны, компоненты и модули), которые создавались для Joomla 1.0.X, под управлением Joomla 1.5. Обратите внимание: чтобы расширения могли работать в Joomla 1.5 без дополнительной поддержки, разработчики должны обновить их.

• System-Cache - это дополнение обеспечивает механизм кэширования страниц в Joomla 1.5.

• XML-RPC - эти дополнения позволяют реализовать администрирование удаленного сайта на базе Joomla.

Дополнения сторонних разработчиков

Подобно модулям и компонентам, существует масса дополнений, созданных сторонними разработчиками. Единственный класс дополнений, которые я использую постоянно, - это редакторы. Хотя в настоящее время пока нет доступных редакторов для версии 1.5, я часто использовал один из коммерческих редакторов для версии 1.0.X.

WysiwygPro (редактор) - http://www.wysiwyg-pro.com

Редактор WysiwygPro замещает редактор по умолчанию. WysiwygPro - это коммерчески распространяемый визуальный редактор с дополнительными возможностями, такими как управление изображениями, документами и ссылками, что позволяет легко создавать ссылки на страницы и статьи. Все параметры WysiwygPro могут контролироваться с помощью панели администратора, где можно указать, какие кнопки и инструменты должны быть доступны, какие классы шрифтов могут использоваться и т. п.

Plugin Googlemaps

http://joomlacode.org/gf/project/mambot_google1/

Дополнение (мамбот) для отображения одной или более карт с сайта Google Maps внутри элемента содержимого. Вы можете определить ширину, высоту, географические широту и долготу, начальный масштаб, текст подписи и, разумеется, ключ лицензии Google API. Значения этих параметров также могут быть определены в административном разделе сайта на базе Joomla. Недавно вышла версия 2.8, которая обладает новыми возможностями, такими как отображение содержимого в формате KML, изменение масштаба карты с помощью колесика мыши, и позволяет пользователю ввести свой адрес и показать маршрут движения от текущего местоположения на сайте maps.google.com.

Шаблоны

В главе 1 мы исследовали, как с помощью шаблонов реализуется управление внешним видом сайта на базе Joomla. В главе 9 «Создание шаблона на основе CSS» мы во всех подробностях рассмотрим процесс создания собственного шаблона.

Базовые шаблоны

В настоящее время в состав Joomla входит три шаблона:

• Khepri - это шаблон оформления внутреннего интерфейса сайта. Вы можете создавать новые шаблоны для настройки внешнего вида административного раздела.

• Milkyway - шаблон, используемый по умолчанию.

• Beez — это специальный шаблон, который может служить в качестве примера использования новых возможностей переопределения параметров, появившихся в Joomla 1.5. Эти возможности мы коротко обсудим в главе 9.

Шаблоны сторонних разработчиков

Для Joomla 1.0.Х существуют тысячи шаблонов. После выхода предварительной версии 1.5 летом 2007 года для нее стало появляться все больше и больше шаблонов. Самый простой, на мой взгляд, способ найти подходящий шаблон для своего сайта - это поискать в Google по фразе «Joomla 1.5 templates* или «free Joomla 1.5 templates*.

Поставщики шаблонов делятся на два типа - клубы и отдельные поставщики. Клубы взыскивают ежегодную плату и хорошо подходят для тех, кто стремится чаще обновлять дизайн сайта, учитывая, что новые шаблоны обычно появляются каждый месяц. Отдельные поставщики шаблонов предлагают шаблоны на индивидуальной основе и, как правило, немного дешевле.

Резюме

Для системы Joomla имеются самые разные расширения, способные удовлетворить любые потребности веб-сайта. Они доступны во множестве мест с самыми разными ценами. Многие расширения распространяются на условиях лицензии GPL и доступны совершенно бесплатно. Ниже коротко перечисляется то, о чем говорилось в этой главе:

• Система Joomla поддерживается широким кругом разработчиков, которые создают важнейшие расширения, необходимые для увеличения функциональных возможностей Joomla.

• Многие из этих расширений распространяются бесплатно, на условиях лицензии GPL; другие - на коммерческой основе.

• Информацию о функциональных возможностях расширений можно найти на официальном справочном сайте help.joomla.org.

• В этой главе приводится короткий список расширений, которые были протестированы и используются автором книги.