Проблема с robot.txt создаваемом моделью "SEO параметры"
Между строк зачем то добавляется пустая строка. Так нельзя! Категорически! Между директивой User-agent и последующим Allow/Disallow пустых строк быть не должно. Зачем вообще модель сама что то дописывает? Надо это убрать.
Ваш вопрос не совсем понятен, надо посмотреть и сравнить текст в админке и то что потом записывается в файл robots.txt, у себя мы это воспроизвести не можем, текст попадает в файл в том же виде как он заносится в админке в модели SEO.
На всякий случай проверьте у себя модель SEO и ее метод update(), именно он перезаписывает файл robots.txt
Чтобы точно решить проблему замените код метода 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;
}Ниже метод 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;Убрал nl2br, не помогло. Не очень я понимаю логики разбиения строки на массив.
Прикрутил код предложенный выше, всё норм, больше лишних строк не пишит