Доброго времени суток, читатели блога zloykolobk.blogspot.com, посвященного изучению CMS Joomla. И мы с Вами продолжаем создавать компонент для CMS Joomla. Так в прошлой статье мы остановились на добавлении панели инструментов в наш компонент. А сегодня мы немного украсим наш компонент в админке. Итак задачу поставили давайте приступим...
Для тех, кто к нам присоединился с данного поста рекомендую Вам скачать исходник компонента, который мы сделали в предыдущих постах. На базе данного компонента мы и будем продолжать расширять функционал нашего компонента для CMS Joomla.
Небольшое замечания пока данный исходник не устанавливайте, просто распакуйте архив в папку.
Добавление иконок.
Создаем необходимые нам иконки размером 16x16 и 48x48 и помещаем их в media/images/ и не забываем добавить данное изменение в файл описания. Исходник которого я приведу чуть ниже.
Изменение представления.
Для того, чтобы изменить view нашего компонента мы изменим код в файле admin/views/helloworlds/view.html.php на:
<?php
// права доступа
defined('_JEXEC') or die('Restricted access');
// импортируем библиотеку view
jimport('joomla.application.component.view');
/**
* создаем класс HelloWorlds
*/
class HelloWorldViewHelloWorlds extends JView
{
function display($tpl = null)
{
// берем данные
$items = $this->get('Items');
$pagination = $this->get('Pagination');
// проверяем на наличие ошибок
if (count($errors = $this->get('Errors')))
{
JError::raiseError(500, implode('<br />', $errors));
return false;
}
// Помещаем данные во view
$this->items = $items;
$this->pagination = $pagination;
//Устанавливаем панель инструментов
$this->addToolBar();
// передаем данные в шаблон
parent::display($tpl);
// Передаем установки title
$this->setDocument();
}
/**
* Настройка панели инструментов
*/
protected function addToolBar()
{
JToolBarHelper::title(JText::_('COM_HELLOWORLD_MANAGER_HELLOWORLDS'), 'helloworld');
JToolBarHelper::deleteListX('', 'helloworlds.delete');
JToolBarHelper::editListX('helloworld.edit');
JToolBarHelper::addNewX('helloworld.add');
}
protected function setDocument()
{
$document = JFactory::getDocument();
$document->setTitle(JText::_('COM_HELLOWORLD_ADMINISTRATION'));
}
}
Это представление использует параметр для JToolBarHelper::title, который будет использоваться для построения CSS классов загаловка. Метод _setDocument устанавливает в браузер title.
Теперь отредактируем код в admin/views/helloworld/view.html.php следующим образом:
<?php
// права доступа
defined('_JEXEC') or die('Restricted access');
// импортируем библиотеку view
jimport('joomla.application.component.view');
/**
* создаем класс HelloWorld
*/
class HelloWorldViewHelloWorld extends JView
{
protected $form = null;
public function display($tpl = null)
{
// вытаскиваем данные
$form = $this->get('Form');
$item = $this->get('Item');
// проверяем на наличие ошибок
if (count($errors = $this->get('Errors')))
{
JError::raiseError(500, implode('<br />', $errors));
return false;
}
// Вывод данных для просмотра
$this->form = $form;
$this->item = $item;
// Устанавливаем панель инструментов
$this->addToolBar();
// показываем шаблон
parent::display($tpl);
// передаем title
$this->setDocument();
}
/**
* Настройка панели инструментов
*/
protected function addToolBar()
{
JRequest::setVar('hidemainmenu', true);
$isNew = ($this->item->id == 0);
JToolBarHelper::title($isNew ? JText::_('COM_HELLOWORLD_MANAGER_HELLOWORLD_NEW')
: JText::_('COM_HELLOWORLD_MANAGER_HELLOWORLD_EDIT'), 'helloworld');
JToolBarHelper::save('helloworld.save');
JToolBarHelper::cancel('helloworld.cancel', $isNew ? 'JTOOLBAR_CANCEL' : 'JTOOLBAR_CLOSE');
}
protected function setDocument()
{
$isNew = ($this->item->id < 1);
$document = JFactory::getDocument();
$document->setTitle($isNew ? JText::_('COM_HELLOWORLD_HELLOWORLD_CREATING')
: JText::_('COM_HELLOWORLD_HELLOWORLD_EDITING'));
}
}
Это представление также использует параметр JToolBarHelper::title, который устанавливает title в браузере.
Изменение основного файла.
В файле admin/helloworld.php изменим код для того, чтобы использовать изображение размером 48x48:
<?php
// проверка доступа
defined('_JEXEC') or die('Restricted access');
// Устанавливаем глобальные свойства
$document = JFactory::getDocument();
$document->addStyleDeclaration('.icon-48-helloworld {background-image: url(../media/com_helloworld/images/tux-48x48.png);}');
// импорт библиотеки Joomla controller
jimport('joomla.application.component.controller');
// Получаем экземпляр контроллераHelloWorld
$controller = JController::getInstance('HelloWorld');
// Выполняем запрос задачи
$controller->execute(JRequest::getCmd('task'));
// перенаправляем на установленный контролер
$controller->redirect();
Изменение языкового файла.
Изменим файл admin/language/en-GB/en-GB.com_helloworld.ini следующим образом:
COM_HELLOWORLD_ADMINISTRATION="HelloWorld - Администрирование"
COM_HELLOWORLD_HELLOWORLD_CREATING="HelloWorld - Создание"
COM_HELLOWORLD_HELLOWORLD_DETAILS="Детали"
COM_HELLOWORLD_HELLOWORLD_EDITING="HelloWorld - Редактирование"
COM_HELLOWORLD_HELLOWORLD_FIELD_GREETING_DESC="Это сообщение будет показано"
COM_HELLOWORLD_HELLOWORLD_FIELD_GREETING_LABEL="Сообщение"
COM_HELLOWORLD_HELLOWORLD_HEADING_GREETING="Приветствие"
COM_HELLOWORLD_HELLOWORLD_HEADING_ID="Id"
COM_HELLOWORLD_MANAGER_HELLOWORLD_EDIT="HelloWorld управление: Редактирование сообщения"
COM_HELLOWORLD_MANAGER_HELLOWORLD_NEW="HelloWorld управление: Новое сообщение"
COM_HELLOWORLD_MANAGER_HELLOWORLDS="HelloWorld управление"
COM_HELLOWORLD_N_ITEMS_DELETED_1="Одно сообщение удалено"
COM_HELLOWORLD_N_ITEMS_DELETED_MORE="%d сообщение удалено"
COM_HELLOWORLD_HELLOWORLD_GREETING_LABEL="Сообщение"
COM_HELLOWORLD_N_ITEMS_DELETED="Сообщения удалены"
На этом наш пост, посвященный добавлению украшений в админку для компонента CMS Joomla можно считать завершенным. Единственной осталось изменить файл описания helloworld.xml:
<?xml version="1.0" encoding="utf-8"?>
<extension type="component" version="2.5.0" method="upgrade">
<name>Hello World!</name>
<!-- Данные о разработчике -->
<creationDate>2012</creationDate>
<author>zloykolobok</author>
<authorEmail></authorEmail>
<authorUrl>http://zloykolobok.blogspot.com</authorUrl>
<copyright>Copyright Info</copyright>
<license>License Info</license>
<!-- Версия продукта-->
<version>0.0.10</version>
<!-- Описание компонента-->
<description>Продолжение статей по созданию расширений для CMS Joomla</description>
<install> <!--Выполняется при установке -->
<sql>
<file driver="mysql" charset="utf8">sql/install.mysql.utf8.sql</file>
</sql>
</install>
<uninstall> <!-- Выполняется при удалении-->
<sql>
<file driver="mysql" charset="utf8">sql/uninstall.mysql.utf8.sql</file>
</sql>
</uninstall>
<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>
<folder>language</folder>
</files>
<!-- в папке media создается папка com_helloworld и туда производиться копирование media-файлов-->
<media destination="com_helloworld" folder="media">
<filename>index.html</filename>
<folder>images</folder>
</media>
<administration>
<!-- меню в административном разделе-->
<menu img="../media/com_helloworld/images/tux-16x16.png">COM_HELLOWORLD_MENU</menu>
<!-- Копирование сайтов в секцию Administration -->
<files folder="admin">
<filename>index.html</filename>
<filename>helloworld.php</filename>
<filename>controller.php</filename>
<!-- папка для SQL файлов -->
<folder>sql</folder>
<!-- папка для table-файлов -->
<folder>tables</folder>
<!-- папка для model-файлов-->
<folder>models</folder>
<!-- папка для views-файлов -->
<folder>views</folder>
<!--папка для controller-файлов-->
<folder>controllers</folder>
</files>
<languages folder="admin">
<language tag="en-GB">language/en-GB/en-GB.com_helloworld.ini</language>
<language tag="en-GB">language/en-GB/en-GB.com_helloworld.sys.ini</language>
</languages>
</administration>
</extension>
Сделать архив и проверить работоспособность компонента.
Скачать исходник компонента данного поста Вы можете по ссылке.
А на этом я с Вами прощаюсь. Если у Вас возникли проблемы или вопросы по данному посту пишите в комментариях и я обязательно постараюсь Вам помочь.
Если Вам понравились материалы данного блога, то Вы можете подписаться на RSS-рассылку данного блога для того, чтобы не пропустить выхода новых статей.
Для тех, кто к нам присоединился с данного поста рекомендую Вам скачать исходник компонента, который мы сделали в предыдущих постах. На базе данного компонента мы и будем продолжать расширять функционал нашего компонента для CMS Joomla.
Небольшое замечания пока данный исходник не устанавливайте, просто распакуйте архив в папку.
Добавление иконок.
Создаем необходимые нам иконки размером 16x16 и 48x48 и помещаем их в media/images/ и не забываем добавить данное изменение в файл описания. Исходник которого я приведу чуть ниже.
Изменение представления.
Для того, чтобы изменить view нашего компонента мы изменим код в файле admin/views/helloworlds/view.html.php на:
<?php
// права доступа
defined('_JEXEC') or die('Restricted access');
// импортируем библиотеку view
jimport('joomla.application.component.view');
/**
* создаем класс HelloWorlds
*/
class HelloWorldViewHelloWorlds extends JView
{
function display($tpl = null)
{
// берем данные
$items = $this->get('Items');
$pagination = $this->get('Pagination');
// проверяем на наличие ошибок
if (count($errors = $this->get('Errors')))
{
JError::raiseError(500, implode('<br />', $errors));
return false;
}
// Помещаем данные во view
$this->items = $items;
$this->pagination = $pagination;
//Устанавливаем панель инструментов
$this->addToolBar();
// передаем данные в шаблон
parent::display($tpl);
// Передаем установки title
$this->setDocument();
}
/**
* Настройка панели инструментов
*/
protected function addToolBar()
{
JToolBarHelper::title(JText::_('COM_HELLOWORLD_MANAGER_HELLOWORLDS'), 'helloworld');
JToolBarHelper::deleteListX('', 'helloworlds.delete');
JToolBarHelper::editListX('helloworld.edit');
JToolBarHelper::addNewX('helloworld.add');
}
protected function setDocument()
{
$document = JFactory::getDocument();
$document->setTitle(JText::_('COM_HELLOWORLD_ADMINISTRATION'));
}
}
Это представление использует параметр для JToolBarHelper::title, который будет использоваться для построения CSS классов загаловка. Метод _setDocument устанавливает в браузер title.
Теперь отредактируем код в admin/views/helloworld/view.html.php следующим образом:
<?php
// права доступа
defined('_JEXEC') or die('Restricted access');
// импортируем библиотеку view
jimport('joomla.application.component.view');
/**
* создаем класс HelloWorld
*/
class HelloWorldViewHelloWorld extends JView
{
protected $form = null;
public function display($tpl = null)
{
// вытаскиваем данные
$form = $this->get('Form');
$item = $this->get('Item');
// проверяем на наличие ошибок
if (count($errors = $this->get('Errors')))
{
JError::raiseError(500, implode('<br />', $errors));
return false;
}
// Вывод данных для просмотра
$this->form = $form;
$this->item = $item;
// Устанавливаем панель инструментов
$this->addToolBar();
// показываем шаблон
parent::display($tpl);
// передаем title
$this->setDocument();
}
/**
* Настройка панели инструментов
*/
protected function addToolBar()
{
JRequest::setVar('hidemainmenu', true);
$isNew = ($this->item->id == 0);
JToolBarHelper::title($isNew ? JText::_('COM_HELLOWORLD_MANAGER_HELLOWORLD_NEW')
: JText::_('COM_HELLOWORLD_MANAGER_HELLOWORLD_EDIT'), 'helloworld');
JToolBarHelper::save('helloworld.save');
JToolBarHelper::cancel('helloworld.cancel', $isNew ? 'JTOOLBAR_CANCEL' : 'JTOOLBAR_CLOSE');
}
protected function setDocument()
{
$isNew = ($this->item->id < 1);
$document = JFactory::getDocument();
$document->setTitle($isNew ? JText::_('COM_HELLOWORLD_HELLOWORLD_CREATING')
: JText::_('COM_HELLOWORLD_HELLOWORLD_EDITING'));
}
}
Это представление также использует параметр JToolBarHelper::title, который устанавливает title в браузере.
Изменение основного файла.
В файле admin/helloworld.php изменим код для того, чтобы использовать изображение размером 48x48:
<?php
// проверка доступа
defined('_JEXEC') or die('Restricted access');
// Устанавливаем глобальные свойства
$document = JFactory::getDocument();
$document->addStyleDeclaration('.icon-48-helloworld {background-image: url(../media/com_helloworld/images/tux-48x48.png);}');
// импорт библиотеки Joomla controller
jimport('joomla.application.component.controller');
// Получаем экземпляр контроллераHelloWorld
$controller = JController::getInstance('HelloWorld');
// Выполняем запрос задачи
$controller->execute(JRequest::getCmd('task'));
// перенаправляем на установленный контролер
$controller->redirect();
Изменение языкового файла.
Изменим файл admin/language/en-GB/en-GB.com_helloworld.ini следующим образом:
COM_HELLOWORLD_ADMINISTRATION="HelloWorld - Администрирование"
COM_HELLOWORLD_HELLOWORLD_CREATING="HelloWorld - Создание"
COM_HELLOWORLD_HELLOWORLD_DETAILS="Детали"
COM_HELLOWORLD_HELLOWORLD_EDITING="HelloWorld - Редактирование"
COM_HELLOWORLD_HELLOWORLD_FIELD_GREETING_DESC="Это сообщение будет показано"
COM_HELLOWORLD_HELLOWORLD_FIELD_GREETING_LABEL="Сообщение"
COM_HELLOWORLD_HELLOWORLD_HEADING_GREETING="Приветствие"
COM_HELLOWORLD_HELLOWORLD_HEADING_ID="Id"
COM_HELLOWORLD_MANAGER_HELLOWORLD_EDIT="HelloWorld управление: Редактирование сообщения"
COM_HELLOWORLD_MANAGER_HELLOWORLD_NEW="HelloWorld управление: Новое сообщение"
COM_HELLOWORLD_MANAGER_HELLOWORLDS="HelloWorld управление"
COM_HELLOWORLD_N_ITEMS_DELETED_1="Одно сообщение удалено"
COM_HELLOWORLD_N_ITEMS_DELETED_MORE="%d сообщение удалено"
COM_HELLOWORLD_HELLOWORLD_GREETING_LABEL="Сообщение"
COM_HELLOWORLD_N_ITEMS_DELETED="Сообщения удалены"
На этом наш пост, посвященный добавлению украшений в админку для компонента CMS Joomla можно считать завершенным. Единственной осталось изменить файл описания helloworld.xml:
<?xml version="1.0" encoding="utf-8"?>
<extension type="component" version="2.5.0" method="upgrade">
<name>Hello World!</name>
<!-- Данные о разработчике -->
<creationDate>2012</creationDate>
<author>zloykolobok</author>
<authorEmail></authorEmail>
<authorUrl>http://zloykolobok.blogspot.com</authorUrl>
<copyright>Copyright Info</copyright>
<license>License Info</license>
<!-- Версия продукта-->
<version>0.0.10</version>
<!-- Описание компонента-->
<description>Продолжение статей по созданию расширений для CMS Joomla</description>
<install> <!--Выполняется при установке -->
<sql>
<file driver="mysql" charset="utf8">sql/install.mysql.utf8.sql</file>
</sql>
</install>
<uninstall> <!-- Выполняется при удалении-->
<sql>
<file driver="mysql" charset="utf8">sql/uninstall.mysql.utf8.sql</file>
</sql>
</uninstall>
<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>
<folder>language</folder>
</files>
<!-- в папке media создается папка com_helloworld и туда производиться копирование media-файлов-->
<media destination="com_helloworld" folder="media">
<filename>index.html</filename>
<folder>images</folder>
</media>
<administration>
<!-- меню в административном разделе-->
<menu img="../media/com_helloworld/images/tux-16x16.png">COM_HELLOWORLD_MENU</menu>
<!-- Копирование сайтов в секцию Administration -->
<files folder="admin">
<filename>index.html</filename>
<filename>helloworld.php</filename>
<filename>controller.php</filename>
<!-- папка для SQL файлов -->
<folder>sql</folder>
<!-- папка для table-файлов -->
<folder>tables</folder>
<!-- папка для model-файлов-->
<folder>models</folder>
<!-- папка для views-файлов -->
<folder>views</folder>
<!--папка для controller-файлов-->
<folder>controllers</folder>
</files>
<languages folder="admin">
<language tag="en-GB">language/en-GB/en-GB.com_helloworld.ini</language>
<language tag="en-GB">language/en-GB/en-GB.com_helloworld.sys.ini</language>
</languages>
</administration>
</extension>
Сделать архив и проверить работоспособность компонента.
Скачать исходник компонента данного поста Вы можете по ссылке.
А на этом я с Вами прощаюсь. Если у Вас возникли проблемы или вопросы по данному посту пишите в комментариях и я обязательно постараюсь Вам помочь.
Если Вам понравились материалы данного блога, то Вы можете подписаться на RSS-рассылку данного блога для того, чтобы не пропустить выхода новых статей.
Ссылка на предыдущую статью не работает.
ОтветитьУдалитьAsuran, спасибо. Все исправил.
Удалить