Sape на LS1.0

Кто-нибудь сталкивался с проблемой при установке. Если как 0.5.1 вставляю код в шаблон, то ошибка получается и все ложится. Не знаете как нужно ставить? В чем отличие теперь? Заранее спасибо!

44 комментария

avatar
Вроде был плагин для sape SeoLib, правда еще не адаптирован под новую версию кажется. Хотя на данном сайте ссылки сапы имеются.
avatar
да теперь вообще скрипты как-то в tpl не добавить, выдает ошибку, будь то сапа или плагин контакта… как теперь делать....?
avatar
с контактом разобрался, а вот php сапы никак не вставить(( где включается поддержка пхп в смарти? раньше как то проще было
avatar
где включается поддержка пхп в смарти
в старой версии — было описано в ФАКе, в новой не проверялось
avatar
Присоединяюсь к вопросу, не могу вставить в шаблон скрипт поиска от google.
avatar
в тег {literal} {/literal}
avatar
да, тут согласен, у меня тоже все вышло, но вот с сапой не все так просто. Как сделать-то? Кто-нибудь в курсе?
avatar
что за код скинь, посмотрю почему не вставляется
avatar
{php}
if (!defined('_SAPE_USER')){
define('_SAPE_USER', 'code_sape');
}
require_once($_SERVER['DOCUMENT_ROOT'].'/'._SAPE_USER.'/sape.php');
$sape = new SAPE_client($o);
echo iconv( «windows-1251», «UTF-8», $sape->return_links() );
{/php}
avatar
ну это же не точный код. мне точный нужен. и тег {/if} должен быть как открытый так и закрытый. сКИНЬ ТОЧНЫЙ КОД ОТ САПА можешь в личку
avatar
Без точного кода я не могу сказать как. Если в футер то вставляй после {hook run='body_end'}
{literal}код{/literal} и php попробуй убрать мне кажется {php}и{/php} там не нужно. Ну вобщем попробуй и так и так, ну если не выйдет то точный код мне в личку скинь я у себя установлю а потом тебе расскажу как вставить
avatar
это точный код, только code_sape надо свой подставить
убрал теги, теперь просто код показывает, как с литерал так и без, а если пхп оставляю, то вообще сайт ложится, ошибок кучу выдает
avatar
вот родной код сапы, сорри: такой

<?php
global $sape;
if (!defined('_SAPE_USER')){
define('_SAPE_USER', 'КОД САПЫ');
}
require_once($_SERVER['DOCUMENT_ROOT'].'/'._SAPE_USER.'/sape.php');
$sape = new SAPE_client();
?>
<?php
global $sape;
echo $sape->return_links();
?>
или такой:

<?php
if (!defined('_SAPE_USER')){
define('_SAPE_USER', 'КОД САПЫ'');
}
require_once($_SERVER['DOCUMENT_ROOT'].'/'._SAPE_USER.'/sape.php');
$sape = new SAPE_client();
?>
avatar
вот так похоже {* код *} после {hook run='body_end'} в футоре. Попробуй и отпишись ок?
avatar
Ну ты где? что там?
avatar
ну скинь мне в личку если сдесь нехочешь код сап, я просто там не кручусь — интерес давно уже пропал к sape
avatar
Так пробывал? {* код *} после {hook run='body_end'}
avatar
да, но на сколько я понимаю, он его комментит просто так и не выводит вообще
avatar
и куда вставить пробуешь в пост или в шапку, сайдбар и т.д.
avatar
в футер
комментарий был удален
комментарий был удален
avatar
Создай в Smarty код sape как функцию (даже с параметрами) и указывай в шаблоне
avatar
если не сложно, не могли бы объяснить подробнее или дать ссылку на мануал? Заранее благодарен!
avatar
плагин есть
avatar
У него же новая версия, вроде не подходит плагин
avatar
а Вы пробовали? например в моем плагине такая же реализация работает в 1.0
avatar
В поиске есть про функции Smarty

Для ленивых (как я сделал).
В engine/lib/external/Smarty/libs/plugins/function.sape.php
<?php
  function smarty_function_sape($params,$template)
  {
	if (!defined('_SAPE_USER')){
	    define('_SAPE_USER', 'ваш_длинный_код'); 
	}
	if (isset($params['sapeuser'])) {
            define('_SAPE_USER', $params['sapeuser']); ;
        }
	
    require_once($_SERVER['DOCUMENT_ROOT'].'/'._SAPE_USER.'/sape.php');
    $o['charset'] = 'UTF-8';
    $sape = new SAPE_client($o);
    unset($o);
    if (isset($params['count'])) {
        return $sape->return_links($params['count']));
    else
	return $sape->return_links();
    }
  }
?>


Пример использования:
<div id="sidebar">
	{if isset($aBlocks.right)}
		{foreach from=$aBlocks.right item=aBlock}
			{if $aBlock.type=='block'}
				{insert name="block" block=$aBlock.name params=$aBlock.params}
			{/if}
			{if $aBlock.type=='template'}
				{include file=$aBlock.name params=$aBlock.params}
			{/if}
		{/foreach}
	{/if}

	{sape sapeuser=ваш_длинный_код count=100}
</div>

можно просто {sape}
avatar
Написал ошибку, но получилось, изменив код на

<?php
function smarty_function_sape($params,$template)
{
if (!defined('_SAPE_USER')){
define('_SAPE_USER', 'БОЛЬШОЙ САПОВКИЙ КОД');
}
require_once($_SERVER['DOCUMENT_ROOT'].'/'._SAPE_USER.'/sape.php');

$sape = new SAPE_client();

echo iconv( «windows-1251», «UTF-8», $sape->return_links() );
}
?>
avatar
Можно и так. Главное — понять использование функций в Smarty
avatar
А что если не выводит код?
avatar
Как бы если сделать так:

<?php
function smarty_function_sape($params,$template)
{
    echo 'test';
    if (!defined('_SAPE_USER')){
        define('_SAPE_USER', 'f12f10cbff9525c7a41a7342be671554');
    }
    require_once($_SERVER['DOCUMENT_ROOT'].'/'._SAPE_USER.'/sape.php');
    $sape = new SAPE_client();
}
?>

echo test выводится, но самого кода в исходном коде не видно и сайт не индексируется.
avatar
Нужно проверить что отдает $_SERVER['DOCUMENT_ROOT'].
На некоторых хостингах выдает совсем не то, что есть на самом деле.
Ну и после
$sape = new SAPE_client();
должно быть как минумум что-то
return $sape->return_links();
или
echo $sape->return_links();
avatar
Проверил вывод, идет полный путь /var/www/site.ru/_SAPE_USER
avatar
А
echo $sape->return_links()

В папке с f12f10cbff9525c7a41a7342be671554 должен быть links.db, его можно удалить, новый появится.
avatar
вот так должно выйте в footer.tpl
{hook run='body_end'}
{* <?php
if (!defined('_SAPE_USER')){
define('_SAPE_USER', 'КОД САПЫ'');
}
require_once($_SERVER['DOCUMENT_ROOT'].'/'._SAPE_USER.'/sape.php');
$sape = new SAPE_client();
?>  *}
avatar
{* что угодно *} это комментирование в смарти, также как и {*} что угодно {*} Не путайте человека.
avatar
спасибо) вот сижу и думаю, что что-то тут не то либо со мной либо с миром)
avatar
Думаю вопрос надо подругому поставить, как разрешить выполнение кода пхп? Раньше это просто менялось в Smarty.class.php, но теперь allow_php там просто нет, но есть странные
public $allow_php_templates = false;

или

const PHP_PASSTHRU = 0; //-> print tags as plain text
const PHP_QUOTE = 1; //-> escape tags as entities
const PHP_REMOVE = 2; //-> escape tags as entities
const PHP_ALLOW = 3; //-> escape tags as entities

Это оно или нет? если да, то как выставить?
avatar
как вариант вам поможет это
Чтоб подключить другой файл в engine/modules/viewer/Viewer.class.php
меняете lib/external/Smarty/libs/Smarty.class.php
на lib/external/Smarty/libs/SmartyBC.class.php
, а new Smarty();
на new SmartyBC();

Где это аукнется не знаю, использовать не рекомендую =) Сам проверил, после этого тэг {php} работает.
На мой взгляд проще создать хук, где исполнить код сапы, а в шаблон передать результат. Это если я правильно представляю как работает сапа.
avatar
Спасибо! Получилось! Надеюсь, негативных последствий не будет.
avatar
{php} tags are deprecated from Smarty, and should not be used. Put your PHP logic in PHP scripts or plugin functions instead.

As of Smarty 3.1 the {php} tags are only available from SmartyBC.

www.smarty.net/docs/en/language.function.php.tpl

проще создать хук, где исполнить код сапы, а в шаблон передать результат

+1, делал так же
avatar
так расскажите как этот хук то сделать:)
avatar
Your text to link...
livestreet.ru/blog/10237.html#comment196045
sape работает хорошо.
setlinks работает чуть криво…
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.