User Tools

Site Tools


ru:plugins:tips

Советы и рекомендации

Если вы разработчик плагинов – вам следует ознакомиться с новой системой обновлений, интегрированной в GetSimple 3.1. Начиная с этой версии, GetSimple уведомляет пользова-теля при появлении новой версии плагина для загрузки в секции сайта GS Extend. При разработке плагина для достижения его совместимости с новой системой необходимо следовать рекомендациям, изложенным в секции ВИКИ "Взаимодействие плагинов и секции Extend сайта get-simple.info"

Определение версии GetSimple

Определение версии GetSimple – не такая простая задача, так как единственная доступная функция return_site_ver(), выводящая на экран номер версии в GS 2.03 и возвращающая результат в версии 3.0b уже устарела (прим. переводчика – пометка о том, что данная функция устарела (??) в списке тэгов англоязычной Вики отсутствует). На самом деле, по заявлению разработчиков, 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

<?php 
  if (isset($msg)) {
    if ($canUndo) $msg .= ' <a href="load.php?id=myplugin&undo">' . i18n_r('UNDO') . '</a>' 
?>
<script type="text/javascript">
  $(function() {
    $('div.bodycontent').before('<div class="<?php echo $isSuccess ? 'updated' : 'error'; ?>" style="display:block;">'+
            <?php echo json_encode($msg); ?>+'</div>');
    $(".updated, .error").fadeOut(500).fadeIn(500);
  });
</script>
<?php 
  } 
?>

Вывод на экран локализованных дат и дат в пользовательском формате

Дата публикации страницы в 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);        // восстанавливаем старую локаль

Этот важнейший для сайта (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/plugins/tips.txt · Last modified: 2013/10/18 09:51 by Arkady