Опубликован: 02.10.2012 | Доступ: свободный | Студентов: 1916 / 85 | Длительность: 11:48:00
Теги: joomla, mvc, php, xhtml, xml
Лекция 8:

Файл-манифест

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

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

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

<?xml version="1.0" encoding="utf-8"?>
<extension type="module" version="1.7">
  <name>mod_myquestions</name>
  <author>Me</author>
  <creationDate>2012</creationDate>
  <copyright>Copyright (C) 2012 Me</copyright>
  <license>GNU General Public License version 2 or later</license>
  <authorEmail>admin@mysite.ru</authorEmail>
  <authorUrl>www.mysite.ru</authorUrl>
  <version>1.7.0</version>
  <description>MOD_MYQUESTIONS_XML_DESCRIPTION</description>
  <config>
    <fields name="params">
      <fieldset name="basic">
        <field name="random" type="radio" default="0" label="MOD_MYQUESTIONS_RANDOMIZE_LABEL" 
description="MOD_MYQUESTIONS_RANDOMIZE_LABEL_DESC">
          <option value="0">JNO</option>
          <option value="1">JYES</option>
        </field>
        <field name="items" type="text" default="1" label="MOD_MYQUESTIONS_ITEMS_LABEL" 
description="MOD_MYQUESTIONS_ITEMS_LABEL_DESC"/>
        <field name="maxlen" type="text" default="100" label="MOD_MYQUESTIONS_MAXLEN_LABEL" 
description="MOD_MYQUESTIONS_MAXLEN_LABEL_DESC"/>
        <field name="author" type="radio" default="1" label="MOD_MYQUESTIONS_AUTHOR_LABEL" 
description="MOD_MYQUESTIONS_AUTHOR_LABEL_DESC">
          <option value="0">JNO</option>
          <option value="1">JYES</option>
        </field>
        <field name="date" type="radio" default="1" label="MOD_MYQUESTIONS_DATE_LABEL" 
description="MOD_MYQUESTIONS_DATE_LABEL_DESC">
          <option value="0">JNO</option>
          <option value="1">JYES</option>
        </field>
      </fieldset>
    </fields>
  </config>
</extension>
            

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

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

Теперь создайте языковой файл для модуля /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="Выводить дату написания вопроса?"
            

В панели управления перейдите в "Расширения" - "Менеджер модулей". Выберите из списка модуль "Новые вопросы", и в правой части открывшейся страницы будет отображена группа элементов формы для установки параметров модуля ( рис. 8.4).

Установка параметров модуля

Рис. 8.4. Установка параметров модуля
Упаковка модуля

Для упаковки модуля добавьте в файл /modules/mod_myquestions/mod_myquestions.xml выделенный код:

<description>MOD_MYQUESTIONS_XML_DESCRIPTION</description>
  <files>
        <filename module="mod_myquestions">mod_myquestions.php</filename>
        <filename>mod_myquestions.xml</filename>
    </files>
    <languages>
        <language tag="ru-RU">language/ru-RU/ru-RU.mod_myquestions.ini</language>
        <language tag="ru-RU">language/ru-RU/ru-RU.mod_myquestions.sys.ini</language>
    </languages>

Создайте в папке /modules/mod_myquestions папку language, в ней - папку ru-RU. Скопируйте в нее файл ru-RU.mod_myquestions.ini из папки language/ru-RU. Создайте файл /modules/mod_myquestions/language/ru-RU/ru-RU.mod_myquestions.sys.ini:

MOD_MYQUESTIONS="Новые вопросы"
MOD_MYQUESTIONS_XML_DESCRIPTION="Выводит вопросы из системы Вопрос - ответ"
            

Создайте из содержимого папки /modules/mod_myquestions архив mod_myquestions.zip. Это и есть установочный пакет для модуля. Обратите внимание, что в архиве должно находиться именно содержимое папки mod_myquestions, а не сама эта папка.

Ключевые термины

Манифест - файл XML, содержащий метаданные о расширении, данные для установки и/или описание его настроек.

Краткие итоги

Для каждого расширения Joomla может существовать файл-манифест, содержащий метаданные о расширении, данные для установки и/или описание его настроек. Манифест должен называться <имя расширения>.xml и находиться в корневой директории установочного пакета.

Настройки расширения описаны для модулей непосредственно в манифесте, а для компонентов - в отдельном файле config.xml в корневой директории бэкенда компонента.

Установочные пакеты для модуля и для компонента представляют собой ZIP-архивы определенной структуры.

Для компонента установочный пакет включает манифест и папки admin и site, содержащие файлы и папки бэкенда и фронтенда соответственно и, возможно, некоторые дополнительные файлы и папки, например, SQL-скрипты.

Для модуля установочный пакет просто включает все его папки и файлы.

Вопросы

  1. Какие данные содержит манифест расширения Joomla?
  2. Где описаны настройки модулей и компонентов?
  3. Какова структура установочного пакет для модуля и для компонента?

Упражнения

Адаптируйте код из раздела "Практика" для своего варианта (см. список вариантов в "Варианты заданий для лабораторных работ" ).

Заключение

В рамках курса были рассмотрены основы программирования под CMS Joomla. Были предложены для изучения такие темы, как архитектура Joomla, работа с базой данных, генерация элементов HTML, организация иерархии пунктов меню, создание и отправка электронных писем, генерация SEF-ссылок, основы реализации архитектуры MVC с помощью Joomla, разработка простых модулей, организация постраничного вывода списков, управление навигационной цепочкой, создание манифестов расширений и установочных пакетов. Изучен ряд классов фреймворка Joomla. Таким образом, успешное освоение материалов данного курса достаточно для разработки небольших компонентов и модулей для Joomla.

Общий глоссарий

JAdministrator - приложение, управляющее функциями для администрирования Joomla.
JApplication - класс, позволяющий работать с очередью сообщений, осуществлять перенаправление браузера, получать параметры конфигурации сайта, определять тип запущенного приложения Joomla.
JController - абстрактный класс для реализации контроллеров.
JDatabase - абстрактный класс, предоставляющий доступ к соединению с базой данных, создающемуся при инициализации приложения Joomla.
JDatabaseQuery - класс, методы которого совпадают с ключевыми словами языка SQL и позволяют упростить создание сложных SQL-запросов.
JDate - класс для работы с датами.
JDocument - класс для работы с документом.
JEditor - класс для работы с WYSIWYG-редактором.
JError - класс для работы с ошибками.
JFactory - класс Joomla, реализующий паттерн "фабрика" и позволяющий получить доступ к глобальным объектам фреймворка.
JHTML - класс для вывода элементов XHTML.
JHTMLBehavior - поддерживающий класс, который позволяет вывести календарь, дерево элементов, файловый загрузчик и некоторые другие элементы управления.
JHTMLEmail - поддерживающий класс, содержащий метод для скрытия адреса электронной почты в целях его защиты от спам-ботов.
JHTMLForm - поддерживающий класс, содержащий метод, который возвращает код скрытого поля формы для уменьшения риска CSRF-атак.
JHTMLGrid - поддерживающий класс, позволяющий вывести в таблице в панели управления такие элементы, как чекбокс, пиктограмма для переключения состояния "опубликовано"/"не опубликовано", отобразить заголовок столбца как ссылки для сортировки по этому столбцу и др.
JHTMLImage - поддерживающий класс, содержащий методы для поиска изображения в фронтенде и бэкенде.
JHTMLList - поддерживающий класс для создания списков некоторых конкретных значений.
JHTMLSelect - поддерживающий класс для генерации кода списков.
JInstallation - приложение, которое запускается при установке Joomla.
JMail - класс для создания и отправки электронных писем.
JMailHelper - класс для очистки данных перед добавлением к электронному письму и проверки, является ли заданная строка корректным адресом электронной почты.
JModel - абстрактный класс для реализации моделей.
JPagination - класс для вывода элементов формы для разбивки на страницы списков элементов.
JPathway - класс для управления навигационной цепочкой.
JRequest - класс Joomla, использующийся для работы с переменными HTTP-запроса.
JRoute - класс для создания SEF-ссылок.
JSite - приложение, отвечающее за компоновку и отображение фронтенда.
JTable - класс, реализующий паттерн Active Record и использующийся для управления таблицами базы данных.
JToolBarHelper - класс Joomla, содержащий методы, которые генерируют HTML-код для построения кнопок панелей инструментов.
JURI - класс для работы с URI.
JUser - класс для работы с данными о пользователе.
JView - абстрактный класс для реализации представлений.
XML-RPC - приложение, позволяющее администрировать сайт Joomla удаленно.
Библиотека - файл, который требуется для работы фреймворка или сторонних расширений.
Бэкенд - система администрирования сайта.
Документ - буфер, использующийся для хранения содержимого веб-страницы, которая будет показана пользователю после выполнения запроса.
Иерархия пунктов меню - дерево, состоящее из пунктов меню и организованное с помощью вложенных множеств.
Ключ - эквивалент текста, подлежащего переводу.
Компонент - основной тип расширений Joomla, вызов которого происходит при каждом обращении к Joomla.
Манифест - файл XML, содержащий метаданные о расширении, данные для установки и/или описание его настроек.
Модуль - расширение Joomla, использующееся для отображения небольших фрагментов контента, обычно в левой или правой колонке или верхней или нижней областях страницы.
Основной метод класса JHTML - метод JHTML::_(), который вызывает метод, определяющийся его первым параметром, и передает ему свои остальные параметры.
Очередь сообщений - массив строк, которые будут выведены на экран при следующей загрузке какой-либо страницы.
Перевод - строка, содержащая перевод текста, соответствующего заданному ключу, на какой-либо язык.
Плагин - расширение Joomla, позволяющее зарегистрировать функции и классы для обработки каких-либо событий, вызванных Joomla, например, поиск по сайту.
Поддерживающие классы - классы для вывода элементов XHTML и поведений Javascript.
Префикс таблиц базы данных - строка, которая присоединяется к названию каждой таблицы Joomla в базе данных.
Приложение - глобальный объект, использующийся для обработки запросов.
Реальный префикс - то конкретное сочетание символов, которое используется в названиях таблиц базы данных.
Регистрация задачи - сопоставление ее какому-либо методу класса, производного от JController.
Связывание - процесс присвоения каждому полю производного от JTable класса значения элемента массива переменных запроса, так что ключ элемента совпадает с названием поля.
Символический префикс - сочетание "#__" (решетка и два знака подчеркивания), которое используется в запросах вместо реального префикса.
Уровень приложения - часть архитектуры Joomla, которая состоит из приложений, расширяющих абстрактный класс JApplication.
Уровень расширений - часть архитектуры Joomla, которая состоит из расширений фреймворка Joomla и приложений.
Уровень фреймворка - часть архитектуры Joomla, которая обеспечивает ее базовую функциональность с помощью набора библиотек и плагинов и собственно ядра Joomla.
Фреймворк Joomla ("ядро") - набор классов, обеспечивающих базовую функциональность Joomla (JDatabase, JUser, JForm, JEditor и т.д.).
Фронтенд - часть сайта, доступная пользователю.
Функция генерации SEF-ссылок - функция, которая принимает массив элементов HTTP-запроса и возвращает массив сегментов SEF-ссылки.
Функция декодирования SEF-ссылок - функция, которая из массива сегментов SEF-ссылки создает массив переменных HTTP-запроса.
Шаблон - расширение Joomla, отвечающее за внешний вид сайта.
Шаблон SEF-ссылок - последовательность сегментов.
Языковый файл - расширение Joomla, позволяющее представить ее контент на нескольких языках.

Список сокращений

CCK Content Construction Kit Конструктор контента
CMS Content Management System Система управления контентом
MVC Model - View - Controller Архитектура "Модель - Представление - Контроллер"
SEF Search Engine Friendly Ссылка, удобная для восприятия поисковыми системами
Кирилл Гусаров
Кирилл Гусаров

В разделе "Первые папки и файлы. Добавление пунктов меню"

предлагается создать две файла:

- myquestions.php;

- admin.myquestions.php

с соответствуюшими адресами:

/components/com_myquestions/myquestions.php;

- /administrator/components/com_myquestions/admin.myquestions.php;

Так вот, при создании файла "admin.myquestions.php" В админке выдает ошибку - "Компонент не найден", а при переименовании его на  "myquestions.php" в последующем шаге, в админке не выводятся кнопки редактирования. 
Проверил кодировку, проверил правильность пути к файлам, пересохранил указанный код. Скажите что я делаю не так или в чем может быть причина?