Доброго времени суток. Вот мы с Вами и подошли к последнему материалу цикла, посвящённого созданию компонента для CMS Joomla. В прошлой статье мы с Вами рассмотрели добавление прав доступа для нашего компонента. А сегодня остановимся на php-скрипте, который помогает нам установить, обновить или удалить наше расширение. Вы спросите для чего это нужно? У нас есть файл описаний, который все это делает? На, что я Вам отвечу не все файл описаний может сделать. И те операции, которые не могут быть достигнуты при помощи xml-файла, мы сделаем при помощи данного скрипта. И так, давайте приступим.
Данный файл расположен в корне нашего компонента и называется script.php. Сам скрипт состоит из класса и пяти методов:
Прежде, чем приступить к созданию скрипта скачать исходник из предыдущего материал по этой ссылке (или воспользуйтесь своим). На базе компонента из прошлой статьи мы и создадим компонент с файлом script.php.
Ну, что ж давайте создадим наш скрипт script.php:
<?php
// права доступа
defined('_JEXEC') or die('Restricted access');
/**
* Файл скрипта для компонента HelloWorld
*/
class com_helloWorldInstallerScript
{
/**
* установочный метод
*/
function install($parent)
{
$parent->getParent()->setRedirectURL('index.php?option=com_helloworld');
}
/**
* метод удаления компонента
*/
function uninstall($parent)
{
echo '<p>' . JText::_('COM_HELLOWORLD_UNINSTALL_TEXT') . '</p>';
}
/**
* метод обновления для компонента
*/
function update($parent)
{
echo '<p>' . JText::_('COM_HELLOWORLD_UPDATE_TEXT') . '</p>';
}
/**
* предустановочный метод, $type: установка, удаление или обновление
*/
function preflight($type, $parent)
{
echo '<p>' . JText::_('COM_HELLOWORLD_PREFLIGHT_' . $type . '_TEXT') . '</p>';
}
/**
* постустановочный метод, type: установка, удаление или обновление
*/
function postflight($type, $parent)
{
echo '<p>' . JText::_('COM_HELLOWORLD_POSTFLIGHT_' . $type . '_TEXT') . '</p>';
}
}
Тут бы хотелось отметить, что название класса должно быть строго как описано в документации [com]_[helloWorld][InstallerScript], т.е. [com] - наше расширение является компонентом, [HelloWorld] - название компонента, [InstallerScript] - то, что это установочный скрипт.
На этом установочный скрипт для нашего компонента написан. Вы можете добавить в языковый файл admin/language/en-GB/en-GB.com_helloworld.sys.ini свой перевод.
Теперь изменим файл описания следующим образом:
<?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.15</version>
<!-- Описание компонента-->
<description>Продолжение статей по созданию расширений для CMS Joomla</description>
<!-- Выполняется при установке, удалении или обновленит. Доступно с версии 2.5 -->
<scriptfile>script.php</scriptfile>
<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">
<!-- Admin Main File Copy Section -->
<filename>index.html</filename>
<filename>config.xml</filename>
<filename>access.xml</filename>
<filename>helloworld.php</filename>
<filename>controller.php</filename>
<!-- папка для SQL файлов -->
<folder>sql</folder>
<!-- папка для table-файлов -->
<folder>tables</folder>
<!-- models files section -->
<folder>models</folder>
<!-- папка для views-файлов -->
<folder>views</folder>
<!--папка для controller-файлов-->
<folder>controllers</folder>
<!-- папка для helpers-файлов-->
<folder>helpers</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>
Теперь все запакуем в zip-архив и проверим.
На этом создания файла скрипта для установки, удаления или обновления расширения CMS Joomla мы завершаем. А также заканчиваем серию статей, посвященных созданию компонента для CMS Joomla. В следующем посте я подведу итог данной серии. А на этом пока все.
Данный файл расположен в корне нашего компонента и называется script.php. Сам скрипт состоит из класса и пяти методов:
- предустановочный, который выполняется перед установкой или обновлением
- установочный, который выполняется во время установки
- обновление - выполняется во время обновления
- удаление - во время удаления
- послеустановочный - выполняется после установки или обновления
Прежде, чем приступить к созданию скрипта скачать исходник из предыдущего материал по этой ссылке (или воспользуйтесь своим). На базе компонента из прошлой статьи мы и создадим компонент с файлом script.php.
Ну, что ж давайте создадим наш скрипт script.php:
<?php
// права доступа
defined('_JEXEC') or die('Restricted access');
/**
* Файл скрипта для компонента HelloWorld
*/
class com_helloWorldInstallerScript
{
/**
* установочный метод
*/
function install($parent)
{
$parent->getParent()->setRedirectURL('index.php?option=com_helloworld');
}
/**
* метод удаления компонента
*/
function uninstall($parent)
{
echo '<p>' . JText::_('COM_HELLOWORLD_UNINSTALL_TEXT') . '</p>';
}
/**
* метод обновления для компонента
*/
function update($parent)
{
echo '<p>' . JText::_('COM_HELLOWORLD_UPDATE_TEXT') . '</p>';
}
/**
* предустановочный метод, $type: установка, удаление или обновление
*/
function preflight($type, $parent)
{
echo '<p>' . JText::_('COM_HELLOWORLD_PREFLIGHT_' . $type . '_TEXT') . '</p>';
}
/**
* постустановочный метод, type: установка, удаление или обновление
*/
function postflight($type, $parent)
{
echo '<p>' . JText::_('COM_HELLOWORLD_POSTFLIGHT_' . $type . '_TEXT') . '</p>';
}
}
Тут бы хотелось отметить, что название класса должно быть строго как описано в документации [com]_[helloWorld][InstallerScript], т.е. [com] - наше расширение является компонентом, [HelloWorld] - название компонента, [InstallerScript] - то, что это установочный скрипт.
На этом установочный скрипт для нашего компонента написан. Вы можете добавить в языковый файл admin/language/en-GB/en-GB.com_helloworld.sys.ini свой перевод.
Теперь изменим файл описания следующим образом:
<?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.15</version>
<!-- Описание компонента-->
<description>Продолжение статей по созданию расширений для CMS Joomla</description>
<!-- Выполняется при установке, удалении или обновленит. Доступно с версии 2.5 -->
<scriptfile>script.php</scriptfile>
<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">
<!-- Admin Main File Copy Section -->
<filename>index.html</filename>
<filename>config.xml</filename>
<filename>access.xml</filename>
<filename>helloworld.php</filename>
<filename>controller.php</filename>
<!-- папка для SQL файлов -->
<folder>sql</folder>
<!-- папка для table-файлов -->
<folder>tables</folder>
<!-- models files section -->
<folder>models</folder>
<!-- папка для views-файлов -->
<folder>views</folder>
<!--папка для controller-файлов-->
<folder>controllers</folder>
<!-- папка для helpers-файлов-->
<folder>helpers</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>
Теперь все запакуем в zip-архив и проверим.
На этом создания файла скрипта для установки, удаления или обновления расширения CMS Joomla мы завершаем. А также заканчиваем серию статей, посвященных созданию компонента для CMS Joomla. В следующем посте я подведу итог данной серии. А на этом пока все.
0 коммент.:
Отправить комментарий