This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
ru:plugins:tips [2013/10/15 10:51] vladislav [Советы и рекомендации] |
ru:plugins:tips [2013/10/18 09:51] (current) Arkady [Success and Error Messages] |
||
---|---|---|---|
Line 5: | Line 5: | ||
===== Определение версии GetSimple ===== | ===== Определение версии GetSimple ===== | ||
- | Определение версии GetSimple – не такая простая задача, так как единственная доступная функция ''return_site_ver()'', выводящая на экран номер версии в GS 2.03 и возвращающая результат в версии 3.0b уже устарела (прим. переводчика – пометка о том, что данная функция устарела [[themes:template_tags| в списке тэгов англоязычной Вики отсутствует]]). Самый простой способ определить, установлен ли плагин под GetSimple 2.03 или 3.0+: | + | Определение версии GetSimple – не такая простая задача, так как единственная доступная функция ''return_site_ver()'', выводящая на экран номер версии в GS 2.03 и возвращающая результат в версии 3.0b уже устарела (прим. переводчика – пометка о том, что данная функция устарела (??) [[themes:template_tags| в списке тэгов англоязычной Вики отсутствует]]). |
+ | На самом деле, по заявлению разработчиков, ''return_site_ver()'' применяется до сих пор и не является устаревшей. | ||
+ | |||
+ | Самый простой способ определить, установлен ли плагин под GetSimple 2.03 или 3.0+: | ||
<code> | <code> | ||
Line 19: | Line 22: | ||
===== Обход отсутствия хука Page-Delete в 2.03 ===== | ===== Обход отсутствия хука Page-Delete в 2.03 ===== | ||
- | To trigger a function myplugin_function on page deletes in GetSimple 2.03 and 3.0+ use the following code: | + | Для запуска функции вашего плагина myplugin_function при удалении страницы в GetSimple 2.03 и 3.0+ применяйте следующий код: |
<code> | <code> | ||
Line 31: | Line 34: | ||
</code> | </code> | ||
- | ===== Success and Error Messages ===== | + | ===== Вывод сообщений на экран сообщений об ошибках и об успешном завершении ===== |
- | This describes how to display messages in back-end plugin pages. | + | В этой статье приводится описание возможности выводить на экран сообщения в бэкенд-страницах плагина.Предположим, есть 3 переменных ''$isSuccess'' (успешно), ''$canUndo''(возможная отмена) и ''$msg'' (сообщение пользователю), для соответствующих сообщений для пользователя. |
- | Assume you have 3 variables, ''$isSuccess'', ''$canUndo'' and ''$msg'' holding the message. To display the message for your plugin ''myplugin'', add the following code to your plugin: | + | |
+ | Для вывода на экран нужного сообщения, добавьте следующий код к вашему плагину myplugin | ||
<code> | <code> | ||
Line 53: | Line 57: | ||
</code> | </code> | ||
- | ===== Displaying custom and localized Dates ===== | + | ===== Вывод на экран локализованных дат и дат в пользовательском формате ===== |
- | + | Дата публикации страницы в XML-файлах GS хранится в английском текстовом формате, который может быть сконвертирован в UNIX-время: | |
- | The publication date in the page XML files is stored in an english text format, which can be converted to a UNIX timestamp with | + | |
<code> | <code> | ||
$timestamp = strtotime($data->pubDate); | $timestamp = strtotime($data->pubDate); | ||
</code> | </code> | ||
- | GetSimple itself uses the ''date'' function to display dates, which will work with other languages only when no weekday or month names are displayed, as these will always be in english. | + | GetSimple использует для отображения дат функцию //date//, которая подходит и для других языков, если не требуется показывать названия дней недели и месяцев, так как они всегда будут на английском. |
- | To display a truly localized date, use: | + | Для вывода на экран локализованного значения даты следует применять следующий метод: |
<code> | <code> | ||
- | $dateLocale = 'de_DE,de,ger,deu'; // or use $LANG or a setting in your plugin, | + | $dateLocale = 'de_DE,de,ger,deu'; // или используйте $LANG или соответствующую установку в вашем плагине |
- | // for OS compatibility multiple locales should be possible | + | // для совместимости с разными ОС должны допускаться различные локали |
- | $dateFormat = "%A, %d.%m.%Y - %H:%M"; // should be a entry in the i18n language file of your plugin | + | $dateFormat = "%A, %d.%m.%Y - %H:%M"; // эта запись должна быть в языковом файле вашего плагина |
- | // for the format see PHP function strftime | + | // возможные значения формата – в документации к PHP-функции strftime |
- | $oldlocale = setLocale(LC_TIME, '0'); // save old locale | + | $oldlocale = setLocale(LC_TIME, '0'); // сохраняем старую локаль |
setlocale(LC_TIME, preg_split('/s*,s*/', $dateLocale)) | setlocale(LC_TIME, preg_split('/s*,s*/', $dateLocale)) | ||
- | echo strftime($dateFormat, $date); // $date is a UNIX timestamp | + | echo strftime($dateFormat, $date); // $date - UNIX-время (timestamp) |
- | setLocale(LC_TIME, $oldlocale); // restore old locale | + | setLocale(LC_TIME, $oldlocale); // восстанавливаем старую локаль |
</code> | </code> | ||
+ | ===== Обход ошибки при установке cookie на сайт в GS 3.0 ===== | ||
- | ===== Working around the broken sitewide cookies in GS 3.0 ===== | + | Этот важнейший для сайта (sitewide) cookie-файл в GS 3.0 содержит корректную информацию только для пути /admin. |
- | + | ||
- | The important cookie is only valid for path /admin. | + | |
- | There is no (easy?) way to correct the problem for the frontend. | + | |
- | However, if you need it for the backend, e.g. linking to a php somewhere in the plugins folder, you can add the following code to your plugin (e.g. directly after setting up the hooks): | + | |
+ | Способа (или простого способа?) исправить ситуацию для фронтенда не существует. Тем не менее, если вам для бэкенда требуется совершить какое-то действие, например, под-ключить какой-то php-файл из папки плагина, вы можете добавить следующий код к ва-шему плагину, например, сразу после установки хуков: | ||
<code> | <code> | ||
if (!myplugin_is_frontend() && myplugin_gsversion() == '3.0') { | if (!myplugin_is_frontend() && myplugin_gsversion() == '3.0') { |