Jump to content

Recommended Posts

Здравствуйте. Нужно подключить сервис Seo Shield. 

Проблема в подключении к сайту. Делаю всё по инструкции не появляется комментарий <!--{seo_shield_out_buffer}-->

Может кто подсказать как правильно подключить к Simpla?

 

Инструкция:

  1. В кореневую директорию сайта (расположение главного index.php) заливаем папку seoshield-client
  2. Перейдя по URL http://<domain_name>/seoshield-client/ должны увидеть белую страницу и 200ый статус HTTP ответа (в случае если этого не произошло, возможно в .htaccess сайта необходимо добавить исключение для адреса "/seoshield-client/").
  3. Далее необходимо подключить SeoShield Client к сайту. Для этого выполните следующие действия в главном исполняемом php-файле, обычно - index.php
    • Подключить файл seoshield-client/main.php
    • Вызвать функцию seo_shield_start_cms
    • Пропустить сформированный HTML-код через функцию seo_shield_out_buffer с помощью функции ob_start или напрямую передав его в функцию

Примеры подключения:

 

if(file_exists('seoshield-client/main.php'))
{
    include_once('seoshield-client/main.php');
    if(function_exists('seo_shield_start_cms'))
       seo_shield_start_cms();
    if(function_exists('seo_shield_out_buffer'))
       ob_start('seo_shield_out_buffer');
}
 

 

 

 

$html = ...
if(file_exists('seoshield-client/main.php'))
{
    include_once('seoshield-client/main.php');

    if(function_exists('seo_shield_start_cms'))
        seo_shield_start_cms();

    if(function_exists('seo_shield_out_buffer'))
        $html = seo_shield_out_buffer($html);
}
echo $html;
 

 



Также рекомендуется добавить исключения, при которых SeoShield Client не должен срабатывать. Например, страницы админ-панели сайта либо POST-запросы.
Предположим, что у Вас URL админ-панели такой: http://example.com/admin/...
В таком случае исключение будет иметь вид:

 

if(isset($_SERVER['REQUEST_URI']) && strpos($_SERVER['REQUEST_URI'], '/admin') === false && $_SERVER['REQUEST_METHOD'] === 'GET')
{
    if(file_exists('current/seoshield-client/main.php'))
    {
        ...подключение SeoShield Client...
    }
}
 

 


Фреймворки Yii, ZF2
Вызов кода нужно делать до строчек Zend\Mvc\Application::init($config)->run(); либо (new yii\web\Application($config))->run();
  WordPress
Советуем вносить код подключения в файл wp-config.php
  OpenCart и схожие CMS
В некоторых CMS вывод контента осуществляется методами самой CMS. Например вы можете увидеть в index.php следующее $response->output();
В таком случае:

Вариат №1. Получить контент такми образом:

 

ob_start();
$response->output();
$html = ob_get_contents(); 
 

 

И далее "пропустить" его через модифицирующую функцию SeoShield Client:

 

$html = seo_shield_out_buffer($html);
 

 


В результате подключение будет выглядеть следующим образом:

 

ob_start();
$response->output();
$html = ob_get_contents(); 
if(file_exists('seoshield-client/main.php'))
{
    include_once('seoshield-client/main.php');
    if(function_exists('seo_shield_start_cms'))
        seo_shield_start_cms();
    if(function_exists('seo_shield_out_buffer'))
        $html = seo_shield_out_buffer($html);
}
echo $html;
 

 

Внимание! Этот вариант не сработает, если на сайте включен метод который сжимает контент перед тем как отдать его браузеру.

Вариант №2. Найти в исходниках класс Response, стандартный путь к нему: system/library/response.php. В этом файле должен быть метод output с примерно таким содержимым:

 

if ($this->output) {
    if ($this->level) {
        $output = $this->compress($this->output, $this->level);
    } else {
        $output = $this->output;
    }    
        
    if (!headers_sent()) {
        foreach ($this->headers as $header) {
            header($header, true);
        }
    }
    
    echo $output;
}
 

 

Тогда этот метод можно переписать следующим образом:

 

if ($this->output) {
    if(file_exists('seoshield-client/main.php'))
    {
        include_once('seoshield-client/main.php');
        if(function_exists('seo_shield_start_cms'))
            seo_shield_start_cms();
        if(function_exists('seo_shield_out_buffer'))
            $this->output = seo_shield_out_buffer($this->output);
    }

    if ($this->level) {
        $output = $this->compress($this->output, $this->level);
    } else {
        $output = $this->output;
    }    
        
    if (!headers_sent()) {
        foreach ($this->headers as $header) {
            header($header, true);
        }
    }
    
    echo $output;
}
 

 

При правильном подключении, перед закрывающим тегом body должен появится проверочный комментарий: 
<!--{seo_shield_out_buffer}-->

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...