Разрботка расширений для CMS Joomla - Страница 34

Изменить размер шрифта:

Теги, задающие метаданные, такие как author, creationDate и другие, скопированы из файла /modules/mod_myquestions/mod_myquestions.xml.

Тег задает SQL-файл, который будет выполнен при установке компонента. Обратите внимание, что явно указана его кодировка - utf-8 и, следовательно, этот файл нужно будет сохранить в указанной кодировке. Заметьте также, что тег имеет атрибут folder со значением admin, что означает, что инсталлятор будет искать SQL-файл в папке adminустановочного пакета. Кроме того, файл задан как sql/install.sql, то есть он находится в папке sqlвнутри папки admin. Тег имеет аналогичное содержимое.

Далее следует тег files со значением атрибута folder, равным site, т.е. описаны папки и файлы, которые находятся в папке siteустановочного пакета. Обратите внимание, что содержимое подпапок ( modelsи views) не описывается, указывается только имя подпапки.

Содержимое тега описывает языковые файлы. Так как задан атрибут site, то эти файлы будут скопированы из папки siteустановочного пакета.

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

описывает пункт меню, который появится в меню " Компоненты" панели управления, а также два его подпункта. Обратите внимание, что при задании ссылок для пунктов меню вместо амперсанда необходимо указывать его HTML-эквивалент &.

Добавьте в файл /administrator/language/ru-RU/ru-RU.com_myquestions.sys.iniстроки:

COM_MYQUESTIONS="Моя система «вопрос – ответ»" COM_MYQUESTIONS_XML_DESCRIPTION="Моя система «вопрос – ответ»"

В папку adminскопируйте содержимое папки /administrator/components/com_myquestions, а в папку site- /components/com_myquestions.

Кроме того, создайте в папке siteпапку language, в ней - папку ru-RU. Скопируйте в нее файл ru-RU.com_myquestions.iniиз language/ru-RU.

Создайте в папке adminпапку language, в ней - папку ru-RUи скопируйте в нее файлы ru-RU.com_myquestions.sys.iniи ru-RU.com_myquestions.iniиз /administrator/language/ru-RU.

Наконец, создайте в папке adminподпапку sql, а в ней создайте файлы install.sqlи uninstall.sql.

Получившееся дерево папок показано на рис. 8.3.

Разрботка расширений для CMS Joomla - _63.jpg

Рис. 8.3.  Дерево папок установочного пакета

В файл install.sqlвставьте код

DROP TABLE IF EXISTS `#__myquestions`; DROP TABLE IF EXISTS `#__myquestions_categories`; CREATE TABLE `#__myquestions` ( `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY, `name` VARCHAR(255) NOT NULL, `date` DATETIME NOT NULL, `question` TEXT NOT NULL, `city` VARCHAR(50) NULL, `email` VARCHAR(50) NOT NULL, `IP` VARCHAR(15) NOT NULL, `id_cat` INT NOT NULL, `published` TINYINT(1) NULL DEFAULT '1', `expiration_date` DATETIME NULL DEFAULT '0000-00-00 00:00:00', `senttoexpert` TINYINT(1) NULL DEFAULT '0', `answer` TEXT NULL DEFAULT '', `senttoauthor` TINYINT(1) NULL DEFAULT '0' ); CREATE TABLE `#__myquestions_categories` ( `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY, `name` VARCHAR(255) NOT NULL, `desc` TEXT NOT NULL DEFAULT '' ); INSERT INTO `#__myquestions_categories`(`name`, `desc`) VALUES('Без категории','');

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

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

Запросы из скрипта uninstall.sqlудаляют обе таблицы:

DROP TABLE `#__myquestions`; DROP TABLE `#__myquestions_categories`;

Упакуйте папки admin, siteи файл myquestions.xmlв архив com_myquestions.zip. Установочный пакет компонента готов. Для проверки его работоспособности создайте новую установку Joomla и установите на нее ваш компонент с помощью менеджера расширений в панели управления.

Манифест для модуля

Настройки модуля

Создайте файл /modules/mod_myquestions/mod_myquestions.xml:

mod_myquestions Me 2012 Copyright (C) 2012 Me GNU General Public License version 2 or later [email protected] www.mysite.ru 1.7.0 MOD_MYQUESTIONS_XML_DESCRIPTION

Значения атрибутов тега определяют, что расширение, для которого написан этот манифест, - это модуль и что он написан для Joomla 1.7.

Описаны пять параметров модуля, три из которых - random, author и date - являются переключателями, а остальные два - items и maxlen - текстовыми полями. Для переключателей с помощью тега

Теперь создайте языковой файл для модуля /language/ru-RU/ru-RU.mod_myquestions.ini:

MOD_MYQUESTIONS_XML_DESCRIPTION="Выводит вопросы из системы Вопрос - ответ" MOD_MYQUESTIONS_RANDOMIZE_LABEL="Случайный вопрос" MOD_MYQUESTIONS_RANDOMIZE_LABEL_DESC="Выводить один случайный вопрос?" MOD_MYQUESTIONS_ITEMS_LABEL="Количество вопросов"; MOD_MYQUESTIONS_ITEMS_LABEL_DESC="Сколько вопросов выводить?" MOD_MYQUESTIONS_MAXLEN_LABEL="Длина вопроса" MOD_MYQUESTIONS_MAXLEN_LABEL_DESC="Сколько первых символов вопроса отображать?" MOD_MYQUESTIONS_AUTHOR_LABEL="Автор вопроса" MOD_MYQUESTIONS_AUTHOR_LABEL_DESC="Выводить имя автора?" MOD_MYQUESTIONS_DATE_LABEL="Дата вопроса" MOD_MYQUESTIONS_DATE_LABEL_DESC="Выводить дату написания вопроса?"

Оригинальный текст книги читать онлайн бесплатно в онлайн-библиотеке Knigger.com