Tickets для статей. Заменить <br> на <p>
Хотелось попробовать использовать Tickets для статей. Есть возможность абзац текста заключать в параграф и избавится от перевода строк
?
?
<div id="ticket-text">
<p>Первый абзац</p>
<p>Второй абзац</p>
</div>
Вместо <div id="ticket-text">
Первый абзац
< br >
Второй абзац
</div>
Комментарии: 11
Смотри параметры сниппета Jevix, набор Ticket.
Нужно разрешить тег p и отключить у него выставление br. У всех параметров есть описание на русском.
На крайний случай, у каждого тикета можно отключить обработку Jevix. Есть и системный параметр для установки этого переключателя по-умолчанию.
Нужно разрешить тег p и отключить у него выставление br. У всех параметров есть описание на русском.
На крайний случай, у каждого тикета можно отключить обработку Jevix. Есть и системный параметр для установки этого переключателя по-умолчанию.
Как оказалось, Jevix не умеет работать с p. Хотя на jevix.ru это осуществлено. Печалька конечно.
Что значит, не умеет?
Он расставляет переносы не параграфами, а тегом br, но никто не запрещает расставить p самостоятельно. К примеру, TinyMCE тебе в этом поможет.
Он расставляет переносы не параграфами, а тегом br, но никто не запрещает расставить p самостоятельно. К примеру, TinyMCE тебе в этом поможет.
Привет, удалось настроить замену br на p?
В параметрах Jevix в cfgAllowTags добавляешь тег p и cfgSetAutoBrMode значение — нет.
Ага, спасибо. А в панель MrkUp p добавить можно?
Пока приходится статьи пропускать через www.artlebedev.ru/tools/reformator/ или открывать тикет автора через бэкэнд и нажимать «Сохранить» — что тег автопроставился через TyneMCE
Пока приходится статьи пропускать через www.artlebedev.ru/tools/reformator/ или открывать тикет автора через бэкэнд и нажимать «Сохранить» — что тег автопроставился через TyneMCE
Я сделал так.
Вызов контента
Вызов контента
[[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>, так на всякий..
Решение кривое, но работает. Любые улучшения и изменения приветствуются.
Борис, можно повесить плагин на событие onDocFormSave и там делать эту замену, тогда в базу уже будет сохраняться уже готовый вариант и сниппет не будет при каждом просмотре отрабатывать!
Да, спасибо, думал на эту тему.
На сайте уже много статей и пересохранать каждую не очень хочется, может быть есть вариант прогнать все статьи через плагин?
На сайте уже много статей и пересохранать каждую не очень хочется, может быть есть вариант прогнать все статьи через плагин?
Запустить для каждой статьи процессор resource/update, тогда статьи и пересохранятся, и события для плагинов будут вызваны.
В продолжение темы. Продолжаю изучение php и попытки оптимизации кода. Теперь сниппет brp такой
Вычитал что str_replace работает быстрее чем preg_replace
Вычитал что 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>";
Будут идеи как оптимизировать, с радостью приму.
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.