WebAsyst и Sape. Правильный костыль!
ВНИМАНИЕ! Руководство для версии 279, для остальных может не работать.
При установке по инструкции от меня, которая описана в статье "WebAsyst и Sape. Костыль", некоторые страницы начали выпадать в ошибки. Но при этом чек код, оставался на месте. Написал на форум сапы, там меня админ c логином Ank просвятил (за что ему огромный респект), в том что вывод чек кода, это не показатель корректной установки.
Тогда я понял, что бока у меня, сделал unserialize для links.db там было всё ок, тогда полез в sape.php и разобрал полностью формирование ссылок, в итоге оказалось, что некорректно отдается $_SERVER['REQUEST_URI'] . Связанно это с тем как вызывается файл голосований из прошлого костыля.
В общем, переделал по-новому, более умным способом.
Итак. Открываем /index.php
В самый верх, после
1 2 3 |
<?php |
вставляем
1 2 3 4 5 6 7 8 9 10 |
/* ^^^ 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
и пишем в нужное место:
1 2 3 |
{$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)
Находим код:
1 2 3 4 5 |
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 { |
и заменяем его на такой
1 2 3 4 5 6 7 8 9 |
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 в шаблонах. Как все остальное у них, это делается через ж***, но, после включения, все костыли становятся не нужными.
Author: | Tags: /
| Rating:
13 comments.
Write a comment