Главная > CMS | Sape | WebAsyst | Монетизация > WebAsyst и Sape. Правильный костыль!

WebAsyst и Sape. Правильный костыль!

14.02.2012 12 комментариев » Просмотры: 3 607
 

ВНИМАНИЕ! Руководство для версии 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 в шаблонах. Как все остальное у них, это делается через ж***, но, после включения, все костыли становятся не нужными.

Автор: | Теги:

Важно

У нас заработал ФОРУМ. Все вопросы, которые не касаются статьи, а так же вопросы по конкретно вашему случаю нужно задавать и обсуждать именно там, в разделе "Помощь пользователям".

12 комментариев

Написать свой
  1. Maksym Ответить
    27.08.2013 в 10:59 дп
    Понял. Спасибо!
    • Vitaliy Orlov
      Vitaliy Orlov Ответить
      27.08.2013 в 11:03 дп
      Пожалуйста! :D
  2. Maksym Ответить
    20.08.2013 в 9:41 дп
    Виталий, спасибо за мануал!
    Подскажи пожалуйста - все сделал как ты описал, но код отображается только на главной странице. На внутренних не хочет. В чем может быть проблема?
    • Vitaliy Orlov
      Vitaliy Orlov Ответить
      25.08.2013 в 7:05 дп
      Пожалуйста! Проблема может быть в следующем: этот рецепт для старой версии шопскрипта и в новой что-то поменялось. Если версия у тебя та же, то надо пробовать ставить брейкпоинты в скриптах и искать где именно выводятся страницы, после этого добавлять туда код. К сожалению, давно не использую эту версию, поэтому уже не могу по памяти подсказать, что именно и куда писать.
      • Maksym Ответить
        26.08.2013 в 7:47 дп
        Версия самая последняя и, наверное, из-за этого не работает.
        Не подскажешь пожалуйста как на новой версии заставить работать код сапы?
        • Vitaliy Orlov
          Vitaliy Orlov Ответить
          27.08.2013 в 8:57 дп
          К сожалению, я не работал с шопскриптом уже больше года и сейчас нет возможности посмотреть, а в вводить в заблуждение я тебя не хочу.

          Попробуй спросить тут:
          - http://forum.sape.ru/
          - http://forum.webasyst.ru/

          Если не найдешь ответа, создай проект на weblancer.net, со ставкой в 3-5$ и тебе все настроят и расскажут.
          Текст проекта можешь сделать примерно такой:

          Здравствуйте!
          Требуется установить код биржи Sape в движок WebAsyst ShopScript (версия x.x.x). После установки, рассказать мне как это было сделано.


          Я думаю, там сейчас все просто можно сделать, поэтому откликнутся много желающих тебе помочь.
  3. Vitaliy Orlov
    Vitaliy Orlov Ответить
    28.08.2012 в 9:55 дп
    p.s. только выбирай именно "Преобразовать в UTF-8 без BOM", а то, в этом же меню, есть ещё просто смена кодировки.
  4. Vitaliy Orlov
    Vitaliy Orlov Ответить
    28.08.2012 в 9:51 дп
    Ты сохранил, файл index.php в кодировке Windows-1251, тебе её надо поменять на UTF-8. Я не знаю в каком редакторе ты это делаешь, но допустим в Notepad++ (если у тебя его нет, скачай, это пару минут). Дальше открываешь в нем файлик index.php, потом выбираешь в верхнем меню:
    Кодировка>Преобразовать в UTF-8 без BOM
    сохраняешь файлик и потом его заменяешь у себя на сайте.
  5. Kibersolution Ответить
    28.08.2012 в 9:35 дп
    Очень прошу помочь чем сможете!
    В общем думаю не сочтете за рекламу, в последующем можете удалить ссылку 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 ^^^ */
  6. Kibersolution Ответить
    28.08.2012 в 7:30 дп
    Хотел узнать, почему выдаются вопросительные знаки, вместо русских слов 'Пока нет партнеров"? В каком файле необходимо кодировку изменить?
    • Vitaliy Orlov
      Vitaliy Orlov Ответить
      28.08.2012 в 7:45 дп
      В index.php:
      if (!$_REQUEST['sape'] = $sape->return_links())
      $_REQUEST['sape']='Пока нет партнеров';

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Разрешены HTML-теги: <a>, <code>, <i>, <em>, <strong>, <b>, <u>, <strike>


Ниже приводятся ссылки на блоги ссылающиеся на этот пост:
  1. Pingback от WebAsyst и SAPE. Костыль. « IT remarks 14.05.2012