Внимание! Форум временно закрыт. Все вопросы вы можете задать на странице MaxSite CMS в Github

Если вам не нравится, как система работает с тегами в тексте

Наиболее частые вопросы по MaxSite CMS.
Аватар пользователя
Wave
Сообщений: 1218
Зарегистрирован: 01 фев 2009, 17:38

Если вам не нравится, как система работает с тегами в тексте

Сообщение Wave » 15 июн 2009, 14:04

В MaxSite CMS существует механизм автобалансировки тегов в тексте.
Этот вопрос регулярно поднимается, например, здесь или здесь.
1. Визуальное форматирование выполняет браузер. Причем каждый браузер выполняет его по своему. Чтобы как-то «сгладить» все несоответствия, некоторые визуальные редакторы сами подправляют код.

2. После того, как вы нажали кнопку «Сохранить», текст попадает в базу данных. Система не вносит никаких корректив в текст, кроме как замена переноса строки на <br />. Почему? Потому что перенос строки в html не работает. И если пользователь нажал Enter, то это равно <br />. Кстати, FireFox форматирует текст без единого /n - всё в одной строчке.
4. Вывод текста на сайте выполняется так: вначале получается текст из базы, потом прогонятеся несколькими хуками, функции которых выполняют авторасстановку тэгов, исправляют ошибочное форматирование и т.д. Тут, безусловно, могут быть ошибки, особено при сложном html. Полностью исправить в авторежиме не получается, поэтому в mso_balance_tags() я ввел несколько «ручных» замен, которые исправляют ошибочное форматирование. Если у вас есть html (сформированный визуальным редактором), который неверно форматируется, то приводите его, я внесу соответствующую корректировку. Обращаю внимание, что это должен быть стандартный визуальный редактор.
Однако если вы используете не родной редактор системы или ещё в силу каких-то особенностей, то подобрая авторасстановка может вам мешать.
Например, у меня недавно на одном сайте нужно было постить стихи, где каждая строчка от предыдущей не должна улетать, и статьи, где абзацы друг от друга визуально отделяться должны.
Существует несколько выходов из положения.
  • Например, вы можете обрамить какой-то текст bb-кодом [html]html-код[/html] — теги внутри этого кода не будут трогаться.
  • Почти то же самое — [volkman] — от этого кода и до конца текста теги не будут трогаться.
  • можно убрать автобалансировку тегов. Как это сделать, читаем далее.
в index.php шаблона:

Код: Выбрать все

mso_remove_hook('content_auto_tag', 'mso_auto_tag');
mso_remove_hook('content_balance_tags', 'mso_balance_tags');
Это уберёт хуки автобалансировки. Грубо говоря, это аналог такого действия
в файле
\application\maxsite\common\page.php
закомментировать строки
$content = mso_hook('content_auto_tag', $content);
$content = mso_hook('content_balance_tags', $content);
Естественно, рекомендуется предыдущий вариант.

К этому действию остаётся замена переводов строки на <br> в визуальном редакторе. Если очень уж мешает, например, при использовании TinyMCE, то
в файлах
\application\maxsite\admin\plugins\admin_page\new.php
\application\maxsite\admin\plugins\admin_page\edit.php
закомментировать строки
$f_content = str_replace(chr(10), "<br />", $f_content);
$f_content = str_replace(chr(13), "", $f_content);

mixar
Модератор
Сообщений: 333
Зарегистрирован: 14 окт 2009, 11:09

Re: Если вам не нравится, как система работает с тегами в тексте

Сообщение mixar » 08 ноя 2009, 17:53

Написал плагин Edit Tune, он позволяет управлять этими опциями из админки. И не надо править никаких файлов. Проверил на Editor Dumb, все работает как часы ;)
Последний раз редактировалось mixar 20 апр 2010, 11:34, всего редактировалось 1 раз.
[url=http://www.codeigniter.ru]CodeIgniter по-русски[/url] | [url=http://freebsd.pro]FreeBSD Community[/url]

Аватар пользователя
Wave
Сообщений: 1218
Зарегистрирован: 01 фев 2009, 17:38

Re: Если вам не нравится, как система работает с тегами в тексте

Сообщение Wave » 08 ноя 2009, 19:42

Первое: это стоило бы объявить в плагинах и шаблонах.
Второе: что означает следующий кусок?

Код: Выбрать все

    if (isset($options['content_replace_chr10_br']) && $options['content_replace_chr10_br'] === '0')
        mso_hook_add('content_replace_chr10_br', 'editor_nobr_go'); 

Почему предыдущие два хука mso_remove_hook, а здесь mso_hook_add?
Третье: 'plugin_url' => 'http://www.codeigniter.me/',
стоило бы ссылочку поставить на конкретный топик плагина, ну, там, на будущее.
Впрочем, это так, мелочь и придирка.
И напоследок, четвёртое, моё любимое: локализация. По хорошему, даже если вы не хотите переводить ни на один язык, всё равно, вывод строк на экран желателен через функцию t();
В системе уже есть переводы на украинский и английский. В случае чего и…

mixar
Модератор
Сообщений: 333
Зарегистрирован: 14 окт 2009, 11:09

Re: Если вам не нравится, как система работает с тегами в тексте

Сообщение mixar » 08 ноя 2009, 22:22

Wave писал(а):Первое: это стоило бы объявить в плагинах и шаблонах.
Второе: что означает следующий кусок?

Код: Выбрать все

    if (isset($options['content_replace_chr10_br']) && $options['content_replace_chr10_br'] === '0')
        mso_hook_add('content_replace_chr10_br', 'editor_nobr_go'); 

Почему предыдущие два хука mso_remove_hook, а здесь mso_hook_add?
Третье: 'plugin_url' => 'http://www.codeigniter.me/',
стоило бы ссылочку поставить на конкретный топик плагина, ну, там, на будущее.
Впрочем, это так, мелочь и придирка.
И напоследок, четвёртое, моё любимое: локализация. По хорошему, даже если вы не хотите переводить ни на один язык, всё равно, вывод строк на экран желателен через функцию t();
В системе уже есть переводы на украинский и английский. В случае чего и…


По поводу t() я так понял речь про настройки? Это поправлю. Я как форум на максайте доделаю, передалаю сайт на кодигнитере, соответственно ссылка поменяется. А mso_hook_add, потому что там в коде у Макса проверяется, что если хук существует, то не делать переносы, если хука нет, то делать замену...
[url=http://www.codeigniter.ru]CodeIgniter по-русски[/url] | [url=http://freebsd.pro]FreeBSD Community[/url]

Аватар пользователя
vovans
Модератор
Сообщений: 323
Зарегистрирован: 09 апр 2009, 13:28

Re: Если вам не нравится, как система работает с тегами в тексте

Сообщение vovans » 17 ноя 2011, 08:24

Интересно, а почему не отключать эту дурацкую автобалансировку при включении невизуального редактора? ((((

Пипец. Даже в визуальном редакторе стих правильно не запостить (((

Если не с включением визаульного редактора отключать, то хорошо бы иметь возможность в админке это делать. Или плагин добавить в дистрибутив.

mixar
Модератор
Сообщений: 333
Зарегистрирован: 14 окт 2009, 11:09

Re: Если вам не нравится, как система работает с тегами в тексте

Сообщение mixar » 17 ноя 2011, 10:44

vovans писал(а):Интересно, а почему не отключать эту дурацкую автобалансировку при включении невизуального редактора? ((((

Пипец. Даже в визуальном редакторе стих правильно не запостить (((

Если не с включением визаульного редактора отключать, то хорошо бы иметь возможность в админке это делать. Или плагин добавить в дистрибутив.


Ставь мой плагин Editor Tune и будет тебе счастье!

Аватар пользователя
MAX
Администратор
Сообщений: 3179
Зарегистрирован: 31 янв 2009, 19:02

Re: Если вам не нравится, как система работает с тегами в тексте

Сообщение MAX » 17 ноя 2011, 10:47

Ну да, все только стихи и постят. :lol:

Аватар пользователя
vovans
Модератор
Сообщений: 323
Зарегистрирован: 09 апр 2009, 13:28

Re: Если вам не нравится, как система работает с тегами в тексте

Сообщение vovans » 28 ноя 2011, 11:02

Да все или не все, но бывает что нужно что-то подобное, и задолбёшься пока получишь нужный результат (( Стихи - это лишь как присер. Хотя, движок-то блоговый? Почему и нет?

Ставь мой плагин Editor Tune и будет тебе счастье!


Да постивил, конечно :) Жаль, что его нет в "стандартной поставке" :( А ещё лучше, если бы можно было в админке включать-выключать эту балансировку без плагинов. А то сам же Макс рекомендует избегать использование визуальных редакторов и в то же время балансировка включена по умолчанию + прибита гвоздями :(

mixar
Модератор
Сообщений: 333
Зарегистрирован: 14 окт 2009, 11:09

Re: Если вам не нравится, как система работает с тегами в тексте

Сообщение mixar » 28 ноя 2011, 12:54

vovans писал(а):Да все или не все, но бывает что нужно что-то подобное, и задолбёшься пока получишь нужный результат (( Стихи - это лишь как присер. Хотя, движок-то блоговый? Почему и нет?

Ставь мой плагин Editor Tune и будет тебе счастье!


Да постивил, конечно :) Жаль, что его нет в "стандартной поставке" :( А ещё лучше, если бы можно было в админке включать-выключать эту балансировку без плагинов. А то сам же Макс рекомендует избегать использование визуальных редакторов и в то же время балансировка включена по умолчанию + прибита гвоздями :(


Я использую свои плаги editor tune и tinymce plugin, очень удобно и журналисты не жалуются, так что незнаю почему Макс советует избегать виз. редакторы, в tiny главное конфиг нормальный прописать и тогда все пучком;)

PS: Насчет балансировки у нас был давний спор, но Макс считает что так лучше, а мне главное что хуки есть, которые ее отключают, можешь посмотреть код плагина, он оч. простой;)

Аватар пользователя
vovans
Модератор
Сообщений: 323
Зарегистрирован: 09 апр 2009, 13:28

Re: Если вам не нравится, как система работает с тегами в тексте

Сообщение vovans » 28 ноя 2011, 14:44

Да считать как лучше любой вправе )) другое дело, что у каждого это "лчше" своё :) И хорошо бы иметь настройки в админке.

Но хорошо хоть плагин есть, уже радует :)


Вернуться в «FAQ»

Кто сейчас на форуме

Пользователь просматривает форум: нет зарегистрированных пользователей