При переносе сайта на свежую версию Livestreet я столкнулся с проблемой добавления кода сапы на новый сайт. Дело в том что в новой версии движка обновился шаблонизатор Smarty в котором фактически отказались от использования конструкций вида {php} ибо логику от вывода все же надо отделять.В большинстве сайтов на Livestreet сапа была подключена примерно таким образом в tpl-файле (в моём случае sidebar.tpl):
{php} if (!defined('_SAPE_USER')){ define('_SAPE_USER', 'код'); } $o['charset'] = 'UTF-8'; require_once($_SERVER['DOCUMENT_ROOT'].'/'._SAPE_USER.'/sape.php'); $sape = new SAPE_client($o); unset($o); echo $sape->return_links(n); {/php}
Такая конструкция сейчас не работает!
Ответ как ни странно был найден на форуме sape.ru, думаю что мадемуазель Inga не огорчится если я опубликую здесь её решение:
1) Идём в engine/lib/external/Smarty/libs/plugins/
2) Создаём там файл function.sape.php с немного модифицированным предыдущим кодом:
<?php function smarty_function_sape($params,&$smarty) { define('_SAPE_USER', 'ваш_длинный_код'); require_once($_SERVER['DOCUMENT_ROOT'].'/'._SAPE_USER.'/sape.php'); $o['charset'] = 'UTF-8'; $sape = new SAPE_client($o); unset($o); return $sape->return_links(); } ?>
3) Теперь для вызова кода сапы можно использовать конструкцию {sape} в любом шаблоне.
Если вы используете PHP версии 5.3 то возможно что вы также столкнётесь с такой ошибкой:
Deprecated: Function set_magic_quotes_runtime() is deprecated ...
Дело в том что данную функцию в ближайшем будущем уберут из php.
Для решения этой проблемы открываем файл sape.php который находится в папке с вашим sape-кодом в корне сайта и заменяем вот эту строчку:
set_magic_quotes_runtime(0);
на
ini_set(«magic_quotes_runtime», 0);
Теперь всё работает как надо! =)
Добавить комментарий