ВНИМАНИЕ! Руководство для версии 279, для остальных может не работать.
При установке по инструкции от меня, которая описана в статье "WebAsyst и Sape. Костыль", некоторые страницы начали выпадать в ошибки. Но при этом чек код, оставался на месте. Написал на форум сапы, там меня админ c логином Ank просвятил (за что ему огромный респект), в том что вывод чек кода, это не показатель корректной установки.
Тогда я понял, что бока у меня, сделал unserialize для links.db там было всё ок, тогда полез в sape.php и разобрал полностью формирование ссылок, в итоге оказалось, что некорректно отдается $_SERVER['REQUEST_URI'] . Связанно это с тем как вызывается файл голосований из прошлого костыля.
В общем, переделал по-новому, более умным способом.
Итак. Открываем /index.php
В самый верх, после
<?php
вставляем
/* ^^^ SAPE START ^^^ */ $_REQUEST['sape'] =''; if (!defined('_SAPE_USER')) define('_SAPE_USER', '0a32c139ce17e92514b4c05379818685'); // Устанавливаем id пользователя require_once($_SERVER['DOCUMENT_ROOT'].'/'._SAPE_USER.'/sape.php'); // подключаем класс сапы $sape = new SAPE_client(Array('charset'=>'UTF-8')); //создаем класс сапы if (!$_REQUEST['sape'] = $sape->return_links()) $_REQUEST['sape']='Пока нет партнеров'; unset($sape); /* ^^^ SAPE END ^^^ */
Не забываем заменить: 0a32c139ce17e92514b4c05379818685, на свой код.
Теперь открываем шаблон:
/www/ваш_сайт/published/publicdata/НАЗВАНИЕ_БД/attachments/SC/themes/название_шаблона/index.html
и пишем в нужное место:
{$smarty.request.sape}
Теперь, еще один тонкий момент, из-за которого страницы выпадают в error. При переключении языка, sape берет ссылку с идентификатором языка, т.е.
/index.php?ukey=auxpage_1&did=198&lang_iso2=en
и хранит её в links.db именно с ним. А в webasyst'e реализована переадресация на флаг без идентификатора ссылки, т.е. при переходе по такой ссылке мы попадаем на страницу, вида:
/index.php?ukey=auxpage_1&did=198
Из-за этого, бот сапы и не видит её ( они для него разные ). Исправляется это так:
Открываем /ваш_идентификатор/sape.php
Теперь ищем класс class SAPE_client extends SAPE_base, а в нем функцию function set_data($data)
Находим код:
if (array_key_exists($this->_request_uri, $this->_links) && is_array($this->_links[$this->_request_uri])) { $this->_links_page = $this->_links[$this->_request_uri]; } else {
и заменяем его на такой
if (array_key_exists($this->_request_uri, $this->_links) && is_array($this->_links[$this->_request_uri])) { $this->_links_page = $this->_links[$this->_request_uri]; } elseif (array_key_exists($this->_request_uri.'&lang_iso2=en', $this->_links) && is_array($this->_links[$this->_request_uri.'&lang_iso2=en'])) { $this->_links_page = $this->_links[$this->_request_uri.'&lang_iso2=en']; } elseif (array_key_exists($this->_request_uri.'&lang_iso2=ru', $this->_links) && is_array($this->_links[$this->_request_uri.'&lang_iso2=ru'])) { $this->_links_page = $this->_links[$this->_request_uri.'&lang_iso2=ru']; } else {
Таким образом, если ссылка не найдена, мы ищем её же с модификатором языка.
На этом установка завершена. И самое главное помните, перед внесением изменений, делайте копии всех файлов, дабы можно было откатиться назад. Либо доверяйте это дело специалистам 🙂
Вот тут http://www.shop-script.ru/support/help/php-in-templates.html есть мануал от шопскриптеров как включить php в шаблонах. Как все остальное у них, это делается через ж***, но, после включения, все костыли становятся не нужными.
Комментарии (11)
Понял. Спасибо!
Пожалуйста! :D
Виталий, спасибо за мануал!
Подскажи пожалуйста - все сделал как ты описал, но код отображается только на главной странице. На внутренних не хочет. В чем может быть проблема?
Пожалуйста! Проблема может быть в следующем: этот рецепт для старой версии шопскрипта и в новой что-то поменялось. Если версия у тебя та же, то надо пробовать ставить брейкпоинты в скриптах и искать где именно выводятся страницы, после этого добавлять туда код. К сожалению, давно не использую эту версию, поэтому уже не могу по памяти подсказать, что именно и куда писать.
Версия самая последняя и, наверное, из-за этого не работает.
Не подскажешь пожалуйста как на новой версии заставить работать код сапы?
К сожалению, я не работал с шопскриптом уже больше года и сейчас нет возможности посмотреть, а в вводить в заблуждение я тебя не хочу.
Попробуй спросить тут:
- http://forum.sape.ru/
- http://forum.webasyst.ru/
Если не найдешь ответа, создай проект на weblancer.net, со ставкой в 3-5$ и тебе все настроят и расскажут.
Текст проекта можешь сделать примерно такой:
Здравствуйте!
Требуется установить код биржи Sape в движок WebAsyst ShopScript (версия x.x.x). После установки, рассказать мне как это было сделано.
Я думаю, там сейчас все просто можно сделать, поэтому откликнутся много желающих тебе помочь.
p.s. только выбирай именно "Преобразовать в UTF-8 без BOM", а то, в этом же меню, есть ещё просто смена кодировки.
Ты сохранил, файл index.php в кодировке Windows-1251, тебе её надо поменять на UTF-8. Я не знаю в каком редакторе ты это делаешь, но допустим в Notepad++ (если у тебя его нет, скачай, это пару минут). Дальше открываешь в нем файлик index.php, потом выбираешь в верхнем меню:
Кодировка>Преобразовать в UTF-8 без BOM
сохраняешь файлик и потом его заменяешь у себя на сайте.
Хотел узнать, почему выдаются вопросительные знаки, вместо русских слов 'Пока нет партнеров"? В каком файле необходимо кодировку изменить?
В index.php:
Очень прошу помочь чем сможете!
В общем думаю не сочтете за рекламу, в последующем можете удалить ссылку http://kibersolution.ru/ а пока пройдя по ссылке обратите внимание, справа снизу указывается надпись "пока нет партнеров" но только в виде вопросительных знаков!
Как сделать, чтобы отображалось русскими буквами, а не квакозябрами!?
Код в /index.php стоит такой, и все что описанно в вашей статье, сделал:
/* ^^^ SAPE START ^^^ */
$_REQUEST['sape'] ='';
if (!defined('_SAPE_USER')) define('_SAPE_USER', 'c629ad9a2ea81c791264be25f164b450'); // Устанавливаем id пользователя
require_once($_SERVER['DOCUMENT_ROOT'].'/'._SAPE_USER.'/sape.php'); // подключаем класс сапы
$sape = new SAPE_client(Array('charset'=>'UTF-8')); //создаем класс сапы
if (!$_REQUEST['sape'] = $sape->return_links())
$_REQUEST['sape']='Пока нет партнеров';
unset($sape);
/* ^^^ SAPE END ^^^ */