monstra-cms / monstra

THIS PROJECT IS NOT SUPPORTED ANYMORE! Check FLEXTYPE.ORG
http://flextype.org
MIT License
396 stars 121 forks source link

<p>{shortcode}</p> #214

Open promo360 opened 10 years ago

promo360 commented 10 years ago
Google translate

Many visual editors automatically frame the non-block elements in the tag P, if shortcode will display any block tag, you get

text

and most likely will go layout


Многие визуальные редакторы автоматически обрамляют неблочные элементы в тег

, если шорткод будет выводить какой-нибудь блочный тег, то получится

текст

и скорей всего верстка поедет, внутри тега P не должно быть блочных элементов.

Варианты решения:

1) Настроить редактор так, чтобы он ставил
вместо

- костыль 2) В настройках редактора указать, что {shortcode} - это блочный элемент. Было бы возможно, если бы шорткоды имели вид html-тега: - так сделано в diafan CMS. 3) Поправить регулярные выражения так, чтобы тег P вокруг шорткода пропускался. Не силен в регулярках, но идея надеюсь понятна. Здесь изменить строчку на что-то такое: $pattern = "/(\<p\>)?(.?)\{([$shortcodes]+)(.*?)(\/)?\}(?(4)|(?:(.+?)\{\/\s*\\2\s*\}))?(.?)(\<\/p\>)?/s";

В GetSimple эта проблема решается 3 способом, только не очень изящное решение у них:

Можно еще посмотреть как WordPress обрабатывает шорткоды.

Voomra commented 10 years ago

Это всё надо настраивать в самих виз. редакторах, но никак не в коде самой cms. Встроенный редактор markItUp такими проблемами не обладает (ну его и виз. редактором не назвать).