Tickets для статей. Заменить <br> на <p>

Хотелось попробовать использовать Tickets для статей. Есть возможность абзац текста заключать в параграф и избавится от перевода строк
?

<div id="ticket-text">
		<p>Первый абзац</p>
		<p>Второй абзац</p>
	</div>
Вместо
<div id="ticket-text">
		Первый абзац
			< br >
		Второй абзац
	</div>
Александр Донский
08 февраля 2013, 21:12
modx.pro
1
2 652
0

Комментарии: 11

Василий Наумкин
09 февраля 2013, 01:19
0
Смотри параметры сниппета Jevix, набор Ticket.
Нужно разрешить тег p и отключить у него выставление br. У всех параметров есть описание на русском.

На крайний случай, у каждого тикета можно отключить обработку Jevix. Есть и системный параметр для установки этого переключателя по-умолчанию.
    Александр Донский
    10 февраля 2013, 15:14
    0
    Как оказалось, Jevix не умеет работать с p. Хотя на jevix.ru это осуществлено. Печалька конечно.
      Василий Наумкин
      10 февраля 2013, 15:21
      0
      Что значит, не умеет?

      Он расставляет переносы не параграфами, а тегом br, но никто не запрещает расставить p самостоятельно. К примеру, TinyMCE тебе в этом поможет.
        brioni
        25 февраля 2016, 19:25
        0
        Привет, удалось настроить замену br на p?
          Борода
          25 февраля 2016, 22:04
          +1
          В параметрах Jevix в cfgAllowTags добавляешь тег p и cfgSetAutoBrMode значение — нет.
            brioni
            25 февраля 2016, 22:45
            0
            Ага, спасибо. А в панель MrkUp p добавить можно?
            Пока приходится статьи пропускать через www.artlebedev.ru/tools/reformator/ или открывать тикет автора через бэкэнд и нажимать «Сохранить» — что тег автопроставился через TyneMCE
              Борис И
              09 апреля 2016, 21:44
              0
              Я сделал так.
              Вызов контента
              [[brp? &sContent=`[[*content]]`]]
              Сниппет brp
              $sContent = preg_replace_callback('|(<ul(.+)</ul>)|iU', function($sContent){
              	       
                          return $sContent[0]."\n";
                      	
                      }, $sContent);
                      
              $sContent = preg_replace_callback('|<h([2,3]{1}) id=".">(.+)</h[2,3]{1}>|iU', function($sContent){
              	        
                      	return $sContent[0]."\n";
                      }, $sContent);
                      
              $sContent = preg_replace('|</br>|isU', '', $sContent);// слеш перед br не нужен, здесь без него происходит перенос строки
              
              $sContent = preg_replace('|\n|isU', '</p><p>', $sContent);
              return "<p>".$sContent."</p>";
              Принцип действия прост:
              добавляем  "\n" после ul и заголовков (h2,h3). Вырезаем все br,  меняем  все \n на </p><p>. В начало добавляем <p>, в конец </p>, так на всякий..
              Решение кривое, но работает. Любые улучшения и изменения приветствуются.
                Роман Садоян
                09 апреля 2016, 23:02
                0
                Борис, можно повесить плагин на событие onDocFormSave и там делать эту замену, тогда в базу уже будет сохраняться уже готовый вариант и сниппет не будет при каждом просмотре отрабатывать!
                  Борис И
                  10 апреля 2016, 07:29
                  0
                  Да, спасибо, думал на эту тему.
                  На сайте уже много статей и пересохранать каждую не очень хочется, может быть есть вариант прогнать все статьи через плагин?
                    Воеводский Михаил
                    10 апреля 2016, 11:26
                    +1
                    Запустить для каждой статьи процессор resource/update, тогда статьи и пересохранятся, и события для плагинов будут вызваны.
      Борис И
      12 апреля 2016, 21:12
      0
      В продолжение темы. Продолжаю изучение php и попытки оптимизации кода. Теперь сниппет brp такой
      Вычитал что str_replace работает быстрее чем preg_replace
      $sContent = preg_replace_callback('|(<ul(.+)</ul>)|iU', function($sContent){
      	       
                  return "</p>".$sContent[0]."<p>";
              	
              }, $sContent);
              
      $sContent = preg_replace_callback('|(<ol(.+)</ol>)|iU', function($sContent){
      	       
                  return "</p>".$sContent[0]."<p>";
              	
              }, $sContent);
                      
              
      $sContent = preg_replace_callback('|<h([2,3]{1}) id=".">(.+)</h[2,3]{1}>|iU', function($sContent){
      	        
              	return "</p>".$sContent[0]."<p>";
              }, $sContent);
              
      
      
          $from=array ("</br>","\n","></p><p><","<p>\r</p>","<p>\n</p>","<p></p>"); //слеш перед br не нужен, здесь без него происходит перенос строки
            $to=array ("\n","</p><p>","><","","","");
          $sContent=str_replace($from, $to, $sContent);  
      return "<p>".$sContent."</p>";
      Будут идеи как оптимизировать, с радостью приму.
        Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.
        11