Sape

Dr_Brown

Пользователь
Внедрения кода биржи ссылок Sape, выложил в эту тему, так как не сильно силен в php, помогите доработать, так как есть небольшая проблема. Возможно что в будущем пригодится кому. Сразу оговорюсь, что клиентский код предоставлен в дефолте, самой Сапой.

Открываем: /includes/page_header.php

в самом начале, после:
PHP:
if (defined('PAGE_HEADER_SENT')) return;

добавляем:
PHP:
global $sape;
    if (!defined('_SAPE_USER')){
        define('_SAPE_USER', 'имя вашей папки в корне, предоставляется Сапой');
    }
    require_once($_SERVER['DOCUMENT_ROOT'].'/'._SAPE_USER.'/sape.php');
    $o['force_show_code'] = true;
    $o['charset'] = 'UTF-8';
    $sape = new SAPE_client($o);
    unset($o);

где,
$o['force_show_code'] = true; - включение проверки корректности установки кода, в случае если все правильно сделано, в месте установки кода выводит закоментируемую строку <!--check code-->, или число типа <!--1709685970547-->;
$o['charset'] = 'UTF-8'; - вывод размещенных ссылок в нашей кодировке;

Вывод ссылок (блоком, нововведение Сапы) делаем например, в футере, в удобном для Вас месте.

Открываем: /templates/default/page_footer.tpl, в удобном для вас месте (обрамляем своими стилями если надо) делаем вывод ссылок в блочном виде, предварительно включив данный тип вывода, в профиле по площадке на Сапе:

HTML:
<?php
    global $sape;
    echo $sape->return_block_links();
?>

Ориентация блока, кол-во ссылок, размер, цвета, настраивается в Профиле Сапы, по Вашей площадке.

Все как бы хорошо, работает....но есть проблема...

При попытке очистить в админке кэш шаблона, появляется ошибка, вида:

Код:
Fatal error: Call to a member function return_block_links() on a non-object in /var/www/........../includes/template.php(305) : eval()'d code on line 19

После того как нажимаешь скомпилировать, лезет ещё одна ошибка, типа:

Код:
Fatal error: Call to a member function return_block_links() on a non-object in /var/www/.........../cache/tpl_default_page_footer.tpl.php on line 19

Я так понимаю что связно с кэшированием, и функцию return_block_links() надо гдето еще предопределить, помогите доработать.
 

dimka3210

Легенда
Код:
 /includes/page_header.php
PHP:
require_once($_SERVER['DOCUMENT_ROOT'].'/'._SAPE_USER.'/sape.php');
$o['force_show_code'] = true;
$o['charset'] = 'UTF-8';
$sape = new SAPE_client($o);
unset($o);
$template->assign_vars(array(
"SAPE" => $sape
));

Код:
 /tepmlates/default/page_header.tpl
PHP:
#В нужное место
{SAPE}

Всё. Нафиг выдумывать?
 

Dr_Brown

Пользователь
Dr_Brown, по-моему нужно использовать return_links()

Та там щас без разницы, или return_links() или return_block_links(), разница есть если ты выводишь смешанный и блочный тип одновременно.

Для вывода ссылок в виде блока используйте метод return_block_links() или return_links($n, $offset, $options) с параметром $options['as_block'] = true;
Для вывода простых ссылок по-прежнему используйте return_links()

dimka3210, все понятно, а если надо вывести на странице в 2-х или 3-х местах, как быть ? Или смешанный тип, в одном месте блоком, в другом просто ссылками ?

В дефолте таким образом:


Пример: предположим, Вы планируете выводить на странице 5 ссылок в 3-х блоках, разнесенных в разные места страницы, например, 1 ссылку под левым навигационным меню, 2 ссылки под правым меню и оставшиеся 2 ссылки в «подвале» страницы. В этой ситуации вам необходимо сделать в исходном коде страницы 3 дополнительные php-вставки:
  • <? echo $sape->return_links(1); ?>- под левым меню;
  • <? echo $sape->return_links(2); ?>- под правым меню;
  • <? echo $sape->return_links(); ?>- в «подвале» (обратите внимание, функция вызывается без параметра, т.к. это последний ее вызов на данной странице);

все таки, где надо определить return_links() или return_block_links(), при моем варианте ?
 
Сверху