P

Pasechnik

+78
Репутация
60
Рейтинг
#1 Как заменить br на p в markitup? 17 декабря 2016 в 02:56
Решил через jevix. Типограф старый и особо упертый на br, рабочего примера замены на тег <p> не нашел, пришлось методом научного тыка. smile

Изменил:
  1. protected $br = "<br/>";
  2. на
  3. protected $br = "</p><p>";
  1. $text.= $brCount == 1 ? $br : $br.$br;
  2. на
  3. $text.= $brCount == 1 ? $br : $br;
Проблема осталась с первым абзацем, так топорно это не победишь.

Сейчас так:
  1. markitup
  2. <p><p>
  3. <p>markitup</p>
  4. <p>markitup</p>
  5. <p>markitup</p>
Нужно было уменьшить уменьшить размер абзацев не изменяя межстрочный интервал, из-за чего и задался целью заменить br на p.
#2 Как заменить br на p в markitup? 16 декабря 2016 в 14:10

<p></p> — парный тег. В отличии от одиночного тега <br>

Ris
Это понятно. Суть не банальной замене тега на тег, а в корректной отработке абзацев.

Между <p> и </p> должен быть текст! Иначе типограф выкидывает их, как пустое место.

Ris
Не знал что типограф обрабатывает комментарии, а это очень хорошо. Теперь понятно с вырезанием. smile

Уточняю:
<p>markitup</p>

Вообще без br, чтоб глаза этот тег не видели. Намаялся с этой пакостью в imperative, только решил, тот после обновления движка стал лепить <p "=""> Хорошо, что наткнулся на тему с решением по данному вопросу.
#3 Как заменить br на p в markitup? 16 декабря 2016 в 12:36

Все замечательно вставляется в текст по энтеру, ничего не обрезается.

Ris
При сохранении <p></p> вырезаются.
markitup
<br>
markitup
#4 Как заменить br на p в markitup? 16 декабря 2016 в 12:05

Возможно не очень понял суть проблемы.

Мартин

Странно, у меня ничего не режется.

Ris
Редактор из 2.6.1
  1. markitup
  2. <br>
  3. <br>
  4. markitup
  5. <br>
  6. <br>
  7. markitup
  8. <br>
  9. <br>
  10. markitup
Заменить на <p></p>.

Весь вопрос в этом.
#5 Как заменить br на p в markitup? 16 декабря 2016 в 08:40

Pasechnik, markItUp все правильно делает: абзацы — тегами <p></p>, а переносы <br>

Sonat
Редактор в комментариях вырезает <p></p> при сохранение.

Пробовал так:
  1. onEnter: {keepDefault:false, openWith:'\n<p>', closeWith:'</p>'}
  2.  
Все режет.

Может кому-то удалось побороть <br>, поделитесь пожалуйста решением.
#6 Как заменить br на p в markitup? 16 декабря 2016 в 07:27

Когда пишите строку и жмете Enter — это новая строка редактор ставит перенос <br> в рамках текущего абзаца,
чтобы начать новый абзац жмите Ctrl Enter

Sonat
Как это объяснить пользователям, смастерить всплывающее окно с коротким курсом по работе с редактором. sad

<br> — пережиток эпохи застоя, в большинстве случаев данный тег вообще не нужен.
#1 Как заменить br на p в markitup? 16 декабря 2016 в 00:54
Markitup разбивает текст на абзацы тегами переноса строки <br><br>, что не совсем правильно. Возможно ли заменить на <p></p>? Покопался в документации к редактору, решения не нашел. sad
#7 [ЕСТЬ РЕШЕНИЕ] Связи типов контента - Сбор 15 декабря 2016 в 15:03

Ышо адын оффтоп

AndroS
Ну на хрен их закалку) Меня в госпитале аспирином от воспаления легких лечили, тоже чуть не сдох. Больше двадцати лет прошло, а по привычке и сейчас аспирином все болезни лечу. laugh
#8 Как вывести виджет сразу же после материала? 14 декабря 2016 в 16:23
taleh, спасибо! Возьму на заметку.

положительные и отрицательные маски...

DK
Маска запретить показ и дубля, и виджета.

Решил удалением из шаблона, места вывода обозначил только в нужных файлах.
#9 Как вывести виджет сразу же после материала? 14 декабря 2016 в 12:30
DK, спасибо!

Использовал:
  1. <?php
  2. cmsCore::getInstance()->runWidgets();
  3. $this->widgets('main-bottom');
  4. unset($this->widgets);
  5. ?>
Теперь виджеты дублируются. Как запретить вывод виджета "по умолчанию" на конкретно взятой странице?
#10 Как вывести виджет сразу же после материала? 14 декабря 2016 в 10:30

или просто виджет вывести?

kirkr
Именно виджет. Рекламный код я вставляю напрямую в файлы, хотелось бы таким образом вставить и виджет.
#1 Как вывести виджет сразу же после материала? 14 декабря 2016 в 09:38
Друзья, помогите советом. Нужно вывести виджет внизу страницы, стандартным методом можно только после "тела страницы", получается — после комментариев. Нужно, что бы виджет отображался до комментариев, внизу статьи.

Можно ли это сделать прямой вставкой кода. Все нужные файлы знаю, таким образом выводил после статей соц.кнопки и рекламу, не знаю как правильно и что вставить для вывода виджета на данной позиции. Ерунда получается, когда похожие новости и т.т. можно отобразить только после комментариев.
#11 Типограф и якоря 10 декабря 2016 в 15:27
Fuze, благодарю! С id вопрос решен.
Но якоря по прежнему режет. Здесь одна строка мешает, устанавливающая href, как обязательный атрибут для ссылки..

Можно ли удалить без последствий?
  1. $jevix->cfgSetTagParamsRequired('a', 'href');
#12 Типограф и якоря 10 декабря 2016 в 14:48
/system/controllers/typograph/hooks/html_filter.php
  1. <?php
  2.  
  3. class onTypographHtmlFilter extends cmsAction {
  4.  
  5. public function run($data){
  6.  
  7. $errors = null;
  8. $is_auto_br = true;
  9. $build_redirect_link = true;
  10.  
  11. if (is_array($data)){
  12. $text = $data['text'];
  13. $is_auto_br = $data['is_auto_br'];
  14. if(isset($data['build_redirect_link'])){
  15. $build_redirect_link = $data['build_redirect_link'];
  16. }
  17. } else {
  18. $text = $data;
  19. }
  20.  
  21. return $this->getJevix($is_auto_br, $build_redirect_link)->parse($text, $errors);
  22.  
  23. }
  24.  
  25. private function getJevix($is_auto_br, $build_redirect_link){
  26.  
  27. cmsCore::loadLib('jevix.class', 'Jevix');
  28.  
  29. $jevix = new Jevix();
  30.  
  31. // Устанавливаем разрешённые теги. (Все не разрешенные теги считаются запрещенными.)
  32. $jevix->cfgAllowTags(array(
  33. 'p', 'br', 'span', 'div',
  34. 'a', 'img',
  35. 'b', 'i', 'u', 's', 'del', 'em', 'strong', 'sup', 'sub', 'hr', 'font',
  36. 'ul', 'ol', 'li',
  37. 'table', 'tbody', 'thead', 'tfoot', 'tr', 'td', 'th',
  38. 'h1','h2','h3','h4','h5','h6',
  39. 'pre', 'code', 'blockquote',
  40. 'video', 'audio', 'youtube','facebook',
  41. 'object', 'param', 'embed', 'iframe'
  42. ));
  43.  
  44. // Устанавливаем коротие теги. (не имеющие закрывающего тега)
  45. $jevix->cfgSetTagShort(array(
  46. 'br', 'img', 'hr', 'embed'
  47. ));
  48.  
  49. // Устанавливаем преформатированные теги. (в них все будет заменятся на HTML сущности)
  50. $jevix->cfgSetTagPreformatted(array(
  51. 'pre', 'video'
  52. ));
  53.  
  54. // Устанавливаем теги, которые необходимо вырезать из текста вместе с контентом.
  55. $jevix->cfgSetTagCutWithContent(array(
  56. 'script', 'style', 'meta'
  57. ));
  58.  
  59. $jevix->cfgSetTagIsEmpty(array(
  60. 'param','embed','a','iframe','div'
  61. ));
  62.  
  63. // Устанавливаем разрешённые параметры тегов. Также можно устанавливать допустимые значения этих параметров.
  64. $jevix->cfgAllowTagParams('a', array('href' => '#link', 'name' => '#text', 'target' => '#text', 'class' => '#text'));
  65. $jevix->cfgAllowTagParams('img', array('src', 'style' => '#text', 'alt' => '#text', 'title' => '#text', 'align' => array('right', 'left', 'center'), 'width' => '#int', 'height' => '#int', 'hspace' => '#int', 'vspace' => '#int', 'class' => '#text'));
  66. $jevix->cfgAllowTagParams('span', array('style' => '#text'));
  67. $jevix->cfgAllowTagParams('object', array('width' => '#int', 'height' => '#int', 'data' => array('#domain'=>array('youtube.com','rutube.ru','vimeo.com','vk.com')), 'type' => '#text'));
  68. $jevix->cfgAllowTagParams('param', array('name' => '#text', 'value' => '#text'));
  69. $jevix->cfgAllowTagParams('embed', array('src' => array('#domain'=>array('youtube.com','rutube.ru','vimeo.com','vk.com')), 'type' => '#text','allowscriptaccess' => '#text', 'allowfullscreen' => '#text','width' => '#int', 'height' => '#int', 'flashvars'=> '#text', 'wmode'=> '#text'));
  70. $jevix->cfgAllowTagParams('iframe', array('width' => '#int', 'height' => '#int', 'style' => '#text', 'frameborder' => '#int', 'allowfullscreen' => '#text', 'src' => array('#domain'=>array('youtube.com','rutube.ru','vimeo.com','vk.com','my.mail.ru','facebook.com'))));
  71. $jevix->cfgAllowTagParams('table', array('width' => '#int', 'height' => '#int', 'cellpadding' => '#int', 'cellspacing' => '#int', 'border' => '#int', 'style' => '#text', 'align'=>'#text', 'valign'=>'#text'));
  72. $jevix->cfgAllowTagParams('td', array('width' => '#int', 'height' => '#int', 'style' => '#text', 'align'=>'#text', 'valign'=>'#text', 'colspan'=>'#int', 'rowspan'=>'#int'));
  73. $jevix->cfgAllowTagParams('th', array('width' => '#int', 'height' => '#int', 'style' => '#text', 'align'=>'#text', 'valign'=>'#text', 'colspan'=>'#int', 'rowspan'=>'#int'));
  74. $jevix->cfgAllowTagParams('p', array('style' => '#text'));
  75. $jevix->cfgAllowTagParams('div', array('style' => '#text', 'class' => '#text'));
  76.  
  77. // Устанавливаем параметры тегов являющиеся обязательными. Без них вырезает тег оставляя содержимое.
  78. $jevix->cfgSetTagParamsRequired('img', 'src');
  79. $jevix->cfgSetTagParamsRequired('a', 'href');
  80.  
  81. // Устанавливаем теги которые может содержать тег контейнер
  82. $jevix->cfgSetTagChilds('ul',array('li'),false,true);
  83. $jevix->cfgSetTagChilds('ol',array('li'),false,true);
  84. $jevix->cfgSetTagChilds('table',array('tr', 'tbody', 'thead', 'tfoot', 'th', 'td'),false,true);
  85. $jevix->cfgSetTagChilds('tbody',array('tr', 'td', 'th'),false,true);
  86. $jevix->cfgSetTagChilds('thead',array('tr', 'td', 'th'),false,true);
  87. $jevix->cfgSetTagChilds('tfoot',array('tr', 'td', 'th'),false,true);
  88. $jevix->cfgSetTagChilds('tr',array('td'),false,true);
  89. $jevix->cfgSetTagChilds('tr',array('th'),false,true);
  90.  
  91. // Устанавливаем автозамену
  92. $jevix->cfgSetAutoReplace(array('+/-', '(c)', '(с)', '(r)', '(C)', '(С)', '(R)'), array('±', '©', '©', '®', '©', '©', '®'));
  93.  
  94. // включаем режим замены переноса строк на тег <br/>
  95. $jevix->cfgSetAutoBrMode($is_auto_br);
  96.  
  97. // включаем режим автоматического определения ссылок
  98. $jevix->cfgSetAutoLinkMode(true);
  99.  
  100. // если нужно обрабатывать внешние ссылки в редирект
  101. if($build_redirect_link){
  102. $jevix->cfgSetTagCallbackFull('a', array($this, 'linkRedirectPrefix'));
  103. }
  104.  
  105. // Отключаем типографирование в определенном теге
  106. $jevix->cfgSetTagNoTypography('pre','youtube', 'iframe');
  107.  
  108. // Ставим колбэк для youtube
  109. $jevix->cfgSetTagCallbackFull('youtube', array($this, 'parseYouTubeVideo'));
  110.  
  111. // Ставим колбэк для facebook
  112. $jevix->
#13 Типограф и якоря 10 декабря 2016 в 01:53
Актуально. Какой файл отвечает за работу типогрофа, можно ли добавить исключение, чтобы якоря не вырезались?… или сделать редирект без включенного типографа?
🍪Мы используем файлы cookie для работы сайта. Читать подробнее.