Начало работы

Модели (models)

Шаблоны (views) и маршрутизация (routes)

Формы

SQL запросы

Сессии и безопасность

Плагины

Документация

Начало работы

Модели (models)

Шаблоны (views) и маршрутизация (routes)

Формы

SQL запросы

Сессии и безопасность

Плагины

Проблема с robot.txt создаваемом моделью "SEO параметры"

Ответов: 4
Volaner
30.03.2019 20:19

Между строк зачем то добавляется пустая строка. Так нельзя! Категорически! Между директивой User-agent и последующим Allow/Disallow пустых строк быть не должно. Зачем вообще модель сама что то дописывает? Надо это убрать.

Тэги: Модели

Прочтений: 104
Ответов: 4
Admin
01.04.2019 10:25

Ваш вопрос не совсем понятен, надо посмотреть и сравнить текст в админке и то что потом записывается в файл robots.txt, у себя мы это воспроизвести не можем, текст попадает в файл в том же виде как он заносится в админке в модели SEO.

На всякий случай проверьте у себя модель SEO и ее метод update(), именно он перезаписывает файл robots.txt

Maxim
02.04.2019 13:21

Чтобы точно решить проблему замените код метода update() в модели SEO на такой

public function update()
{
   parent :: update();
   
   $file = $this -> registry -> getSetting("IncludePath")."robots.txt";
   $text = $this -> getValue("robots");
   file_put_contents($file, $text);
   
   return $this;
}
Volaner
11.04.2019 05:42

Ниже метод update. Я его не ковырял, так и было. Не могу сказать, из какой это версии, я обновлял систему несколько раз по верх.

Вот зачем там nl2br? Вот он и пишет лишний перенос.

parent :: update();
           
           $file = $this -> registry -> getSetting("IncludePath")."robots.txt";
           $text = $this -> getValue("robots"); 
        $text = preg_split("/(\\r)*(\\n)*<br(\s\/)?>(\\r)*(\\n)*/", nl2br($text));

        @unlink($file);
           
           if($handle = @fopen($file, "wt"))
           {
               @chmod($file, 0777);
               
               foreach($text as $string)
                   fwrite($handle, $string."\r\n");
               
               fclose($handle);
           }
           
           return $this;
Volaner
11.04.2019 06:05

Убрал nl2br, не помогло. Не очень я понимаю логики разбиения строки на массив.
Прикрутил код предложенный выше, всё норм, больше лишних строк не пишит

Ответить на вопрос
Ответить