четверг, 17 ноября 2011 г.

Создание расширения для CMS Joomla 1.7. Часть 4

В предыдущей статье мы рассмотрели, как добавить в “менеджер меню” пункт “тип” для нашего компонента Если Вы еще пока не разобрались, что такое меню и как его добавлять/изменять, то я Вам рекомендую вначале прочитать мою статью “Интерфейс Joomla 1.6. Основное меню. Меню: Меню (часть 2.3)”. Перед тем как продолжить эту статью Вы обязательно должны понимать, что такое ООП и хорошо разбираться в PHP. Также я Вам рекомендую прочитать предыдущие статьи, касающиеся создания расширений для CMS Joomla.
В этом посте мы рассмотрим создание модели в нашем компоненте. Вообще, в CMS Joomla 1.7 модели отвечают за управление данными. Ну, что ж, приступим к наращиванию функциональности нашего компонента для CMS Joomla 1.7.

Первое, что нам необходимо сделать это в папке нашего компонента, в каталоге site создать подкаталог models, а в нем уже файл helloworld.php. Должна получиться следующая конструкция: <com_имя компонента>/site/models/helloworld.php
Теперь добавим в этот файл немного кода:
<?php
//  Защита доступа
defined('_JEXEC') or die('Restricted access');

// импортируем Joomla библиотеку modelitem
jimport('joomla.application.component.modelitem');

/**
* Наша модель для HelloWorld
*/
class HelloWorldModelHelloWorld extends JModelItem
{
    protected $msg;
    /**
    * Вытягиваем сообщение
    * и возвращаем строку с сообщенеим для того, чтобы показать посетителям
    */
    public function getMsg()
    {
       if (!isset($this->msg))
       {
           $this->msg = 'Hello World!';
       }
       return $this->msg;
    }
}
Думаю, что код объяснять не надо, единственное на чем я хотел акцентировать Ваше внимание - это на том, что тут мы используем класс JModelItem о котором я поговорю в следующей статье.  
Класс HelloWorldViewHelloWorld берет данные из модели с использованием метода get из класса JView, о котором я рассказал в статье “Создание расширения для CMS Joomla 1.7. Класс JView Часть 2.2”. Теперь давайте опишем эту часть. В файле <com_имя компонента>/site/views/helloworld/view.html.php изменим код: 
<?php
// Защита доступа
defined('_JEXEC') or die('Restricted access');

// импорт библиотеки контроллеров joomla
jimport('joomla.application.component.view');

/**
* HTML представление класса для компонента HelloWorld
*/
class HelloWorldViewHelloWorld extends JView
{
    // Перезаписываем JView метод display
    function display($tpl = null)
    {
       // Назначаем данные для просмотра
       $this->msg = $this->get('Msg');

       // Проверяем на ошибки
       if (count($errors = $this->get('Errors')))
       {
           JError::raiseError(500, implode('<br />', $errors));
           return false;
       }
       // Показываем представление
       parent::display($tpl);
    }
}
Тут мы использовали класс JError, о которм я расскажу в следующих статьях.
И теперь немного подправим наш конфигурационный файл helloworld.xml и на этом на сегодня все:
<?xml version="1.0" encoding="utf-8"?>
<extension type="component" version="1.7.0" method="upgrade">

    <name>Hello World!</name>
    <!-- Данные о разработчике -->
    <creationDate>2011</creationDate>
    <author>zloykolobok</author>
    <authorEmail></authorEmail>
    <authorUrl>http://zloykolobok.blogspot.com</authorUrl>
    <copyright>Copyright Info</copyright>
    <license>License Info</license>
    <!--  Версия продукта-->
    <version>0.0.4</version>
    <!-- Описание компонента-->
    <description>Продолжение статей по созданию расширений для CMS Joomla</description>

    <update> <!-- Будет исполнено при обновлении. Доступно с версии 1.6 -->
       <schemas>
           <schemapath type="mysql">sql/updates/mysql</schemapath>
       </schemas>
    </update>

    <!-- Копирование файлов в секцию site-->
    <files folder="site">
       <filename>index.html</filename>
       <filename>helloworld.php</filename>
       <filename>controller.php</filename>
       <folder>views</folder>
       <folder>models</folder>
    </files>

    <administration>
       <!-- меню в административном разделе-->
       <menu>Hello World!</menu>
       <!-- Копирование сайтов в секцию Administration  -->
       <files folder="admin">
           <filename>index.html</filename>
           <filename>helloworld.php</filename>
           <!-- папка для SQL файлов -->
           <folder>sql</folder>
       </files>
    </administration>

</extension>
Создаем zip-архив (скачать готовый zip-архив, только перед установкой переименуйте его в com_helloworld.zip)и устанавлисаем наше расширение для CMS Joomla. Все!!! Проверям. У меня все работает, а у Вас? Если что-то не так пишите в комментариях.
В следующих статьях мы должны будем рассмотреть два класса JError и JModelItem, так как мы их использовали в данном посте. Ну, что до новых встреч и не забываем подписываться на данный блог.  Также Вы меня можете найти в twitter  или в Google+ .

Понравилась статья? Поблагодарить автора:

Введите e-mail адрес:



2 комментария:

  1. Не получается скачать архив :(

    ОтветитьУдалить
  2. К сожалению ваши статьи очень сложны для понимания. Как будто вы пишите их для себя. И примеры не скачиваются. Я вынужден остановиться и искать другие инструкции и мануалы (((

    ОтветитьУдалить