====== Советы и рекомендации ======
Если вы разработчик плагинов – вам следует ознакомиться с новой системой обновлений, интегрированной в 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]]