====== Советы и рекомендации ====== Если вы разработчик плагинов – вам следует ознакомиться с новой системой обновлений, интегрированной в GetSimple 3.1. Начиная с этой версии, GetSimple уведомляет пользова-теля при появлении новой версии плагина для загрузки в секции сайта GS Extend. При разработке плагина для достижения его совместимости с новой системой необходимо следовать рекомендациям, изложенным в секции ВИКИ [[ru:plugins:update notifications|"Взаимодействие плагинов и секции Extend сайта get-simple.info"]] ===== Определение версии GetSimple ===== Определение версии GetSimple – не такая простая задача, так как единственная доступная функция ''return_site_ver()'', выводящая на экран номер версии в GS 2.03 и возвращающая результат в версии 3.0b уже устарела (прим. переводчика – пометка о том, что данная функция устарела (??) [[themes:template_tags| в списке тэгов англоязычной Вики отсутствует]]). На самом деле, по заявлению разработчиков, ''return_site_ver()'' применяется до сих пор и не является устаревшей. Самый простой способ определить, установлен ли плагин под GetSimple 2.03 или 3.0+: $isV3 = function_exists('get_site_version'); Самый правильный способ определения версии – следующий (используйте его только внутри функций, чтобы не засорять глобальное пространство имен!): include(GSADMININCPATH.'configuration.php'); $version = GSVERSION; ===== Обход отсутствия хука Page-Delete в 2.03 ===== Для запуска функции вашего плагина myplugin_function при удалении страницы в GetSimple 2.03 и 3.0+ применяйте следующий код: // GetSimple 3.0+ add_action('page-delete', 'myplugin_function'); // GetSimple 2.03 if (!function_exists('get_site_version') && basename($_SERVER['PHP_SELF']) == 'deletefile.php') { myplugin_function(); } ===== Вывод сообщений на экран сообщений об ошибках и об успешном завершении ===== В этой статье приводится описание возможности выводить на экран сообщения в бэкенд-страницах плагина.Предположим, есть 3 переменных ''$isSuccess'' (успешно), ''$canUndo''(возможная отмена) и ''$msg'' (сообщение пользователю), для соответствующих сообщений для пользователя. Для вывода на экран нужного сообщения, добавьте следующий код к вашему плагину myplugin ' . i18n_r('UNDO') . '' ?> ===== Вывод на экран локализованных дат и дат в пользовательском формате ===== Дата публикации страницы в XML-файлах GS хранится в английском текстовом формате, который может быть сконвертирован в UNIX-время: $timestamp = strtotime($data->pubDate); GetSimple использует для отображения дат функцию //date//, которая подходит и для других языков, если не требуется показывать названия дней недели и месяцев, так как они всегда будут на английском. Для вывода на экран локализованного значения даты следует применять следующий метод: $dateLocale = 'de_DE,de,ger,deu'; // или используйте $LANG или соответствующую установку в вашем плагине // для совместимости с разными ОС должны допускаться различные локали $dateFormat = "%A, %d.%m.%Y - %H:%M"; // эта запись должна быть в языковом файле вашего плагина // возможные значения формата – в документации к PHP-функции strftime $oldlocale = setLocale(LC_TIME, '0'); // сохраняем старую локаль setlocale(LC_TIME, preg_split('/s*,s*/', $dateLocale)) echo strftime($dateFormat, $date); // $date - UNIX-время (timestamp) setLocale(LC_TIME, $oldlocale); // восстанавливаем старую локаль ===== Обход ошибки при установке cookie на сайт в GS 3.0 ===== Этот важнейший для сайта (sitewide) cookie-файл в GS 3.0 содержит корректную информацию только для пути /admin. Способа (или простого способа?) исправить ситуацию для фронтенда не существует. Тем не менее, если вам для бэкенда требуется совершить какое-то действие, например, под-ключить какой-то php-файл из папки плагина, вы можете добавить следующий код к ва-шему плагину, например, сразу после установки хуков: if (!myplugin_is_frontend() && myplugin_gsversion() == '3.0') { // workaround for GetSimple 3.0: if (isset($_COOKIE['GS_ADMIN_USERNAME'])) setcookie('GS_ADMIN_USERNAME', $_COOKIE['GS_ADMIN_USERNAME'], 0, '/'); } function myplugin_is_frontend() { return function_exists('get_site_url'); } function myplugin_gsversion() { @include(GSADMININCPATH.'configuration.php'); return GSVERSION; } Замените //myplugin// наименованием своего плагина. ====== Ссылки ====== На главную [[ru:|Содержание]] ===== Страницы этой секции ===== === Разработка плагинов === *[[ru:plugins:creation|Создание плагинов ]] *[[ru:plugins:extend_api|Работа с Extend API ]] *[[ru:plugins:hooks_filters|Хуки и фильтры]] *[[ru:plugins:tabs_menus|Вкладки и боковые меню]] *[[ru:plugins:update_notifications|Взаимодействие плагинов и секции Extend сайта get-simple.info]]