В предыдущей статье мы рассмотрели, как добавить в “менеджер меню” пункт “тип” для нашего компонента Если Вы еще пока не разобрались, что такое меню и как его добавлять/изменять, то я Вам рекомендую вначале прочитать мою статью “Интерфейс 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+ .
В этом посте мы рассмотрим создание модели в нашем компоненте. Вообще, в 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+ .
Не получается скачать архив :(
ОтветитьУдалитьК сожалению ваши статьи очень сложны для понимания. Как будто вы пишите их для себя. И примеры не скачиваются. Я вынужден остановиться и искать другие инструкции и мануалы (((
ОтветитьУдалить