Некорректный description

nuvel

Есть следующий код:

PHP:
  1. if (!empty($recipe[‘html_description’])) $this->view->setDescription($recipe[‘html_description’]);
  2. else $this->view->setDescription(mb_substr(strip_tags(str_replace(‘ ’,»,$recipe[‘desc’])),0,165).‘…’);

Отвечает за вывод краткого описания статьи в <meta name=»description» content=»»>. Если description не задан ручками в админке сайта, подтягивается автоматический.

Загвоздка в том, что автоматический description выводится с пустыми строками (абзацами). Пример:

Код (Text):
  1.  
  2. <meta name=»description» content=»Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
  3.  
  4. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.
  5.  
  6. Duis aute irure dolor…»>

Сам текст в статье так и разбит. Но как сделать, чтобы в <meta name=»description» content=»»> текст отображался одной строкой, без разбивки на абзацы? То есть вот так:

Код (Text):
  1.  
  2. <meta name=»description» content=»Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor…»>

От модератора: используйте кнопку </> для кода

 

Drunkenmunky

Вот в этой части вашего кода:

Замените ‘&nbsp;’,»
на
array(‘&nbsp’, «n», «rn»),’ ‘

 

nuvel

Drunkenmunky, спасибо, работает!
Только там, где должен был быть абзац, получается двойной пробел.
То есть между первым и вторым предложениями идут два пробела, а не один:
«Бла-бла-бла. ДВА ПРОБЕЛА Бла-бла-бла.»
Это можно как-то исправить?

 

Drunkenmunky

Попробуйте вместо вот этого
array(‘&nbsp’, «n», «rn»),’ ‘
вставить
array(‘&nbsp’, «rn»),’ ‘

 

nuvel

Не помогло.
Судя по всему, задваивает вот эта часть кода (кавычки в конце):
array(‘&nbsp’, «n», «rn»),‘ ‘
Убираю пробел — предложения идут слитно, оставляю — задваивает.

 

Drunkenmunky

Понятно.
Похоже,что абзац начинался с неразрывного пробела. Его и удаляли.
попробуйте так
array(«rn&nbsp«, «n&nbsp», «rn», «n»),’ ‘
Что-то, возможно, будет лишним. Уберёте.

 

nuvel

Увы((
Текст, из которого берем description, в шаблоне отображается так:

HTML:
  1. <div>Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.<br />
  2. &nbsp;<br />
  3. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat.</div>

Может, так ситуация яснее станет.

 

Drunkenmunky

Перед кодом из первого вашего сообщения
Вставьте

Код (Text):
  1. echo $recipe[‘desc’];

И скопируйте из него подстроку которую нужно заменить на пробел.
И вставьте её вместо ‘&nbsp;’
Заключив в кавычки.
Если при этом сам код будет перенесен на новую строку, то так и оставьте.

 

nuvel

Эх, знаний не хватает, не понял, что надо сделать.
Пошел шуршать в «методичках».
Спасибо еще раз!

 

Sail

Вот, в основной «методичке» по одной из используемых функций:

Используйте в статьях <br> вместо <br /> и всё наладится

 

nuvel

Решил проблему двойных пробелов.
Из первоначального кода (первое мое сообщение) заменил вот это:

Код (Text):
  1. ‘&nbsp;’,»

На вот это:

Код (Text):
  1. array(«rn&nbsp;», «rn<br />», «rn»), array(«», «», » «)

У меня просто в абзацах то &nbsp;<br />, то просто <br />.
Может, кому пригодится.
Всем спасибо за советы!

 

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

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