На время проведения реконструкции сайт переведён в режим "ТОЛЬКО ЧТЕНИЕ" (Read only). Приносим свои извинения!
MaxHub
Полезности по Maxsite CMS

Как разрешить html теги в комментариях?

Вопросы-ответы / 29 августа 2014

Нужно для внедрения визуального редактора в форму комментирования. Благодарю.

P. S. Если интересно, напишу статью об этом у себя на блоге.

Незрячий человек, занимающийся созданием, анализом и продвижением сайтов. Помимо этого, играю на гитаре и пою, пишу стихи и фантастику, интересуюсь идеей родовых поместий, жизни на природе.

Сайт

Комментариев: 8
  1. Сперва поучительная хрень о том, как надо задавать вопросы немного оффтопика. Что значит разрешить html-тэги? Почему вы не описываете суть и описание вашей проблемы? Почему постоянно надо гадать что у вас там стряслось?? Вам бы было интересно получить развёрнутый ответ? Ну так и отвечающим интересно прочитать подробный вопрос. Неужели так сложно набрать чуть больше букв? mad
    А теперь по сути вопроса как я его телепатическим образом понял.

    Html-тэги и сейчас разрешены. Но только ограниченный набор. Это сделано в целях безопасности. Однако, вы вполне можете переопределить набор фильтрации тэгов. Для этого вам нужно обработать хук mso_get_new_comment_args - принять массив аргументов $args и передать его по цепочке обработчиков хука дальше. Но перед передачей $args дальше вам нужно изменить значение ключа массива tags. Сейчас значение элемента массива $args с этим ключом по-умолчанию принимает значение -

    # разрешенные тэги
    if ( !isset($args['tags']) ) $args['tags'] = '<p><blockquote><br><span><strong><strong><em><i><b><u><s><рre><codе>';

    Процитированный код вы можете увидеть в файле \application\maxsite\common\comments.php в строке 360. Там как раз описывается функция mso_get_new_comment, которая занимается обработкой новых комментариев.

    В общем, вам нужно расширить это значение. Это можно сделать через плагин (написать плагин, который навешивается на указанный хук) или попробовать настроить связку ushki_to_hook и ushki - в принципе, вполне реальный вариант.

    Чтобы развить ваши телепатические способности приводить вариант решения пока не буду wink Да, сегодня я сама отзывчивость и доброта smile

    ЗЫ: Писать или не писать статью - решать вам самому. Не нужно идти на поводу у аудитории, когда у вас прёт творческая энергия cheese

  2. Я написал статью в редакторе. Опубликовав комментарий, я увидел, что теги параграфа отображаются в списке комментариев. Вот поэтому я и задался вопросом расширения количества допустимых html тегов.

    P. S. Посмотрю в указанном файле.

  3. Итак. Добавил в common/comments.php другие теги, но по-прежнему заголовки отображаются, как параграфы, а последующие абзацы - с тегами. Причём, если аписать сделать 2 абзаца, теги будут показываться вокруг каждого из них.

    Буду благодарен за ответ: искать проблему в движке или в редакторе? Если в движке, то где может блокироваться написание второго абзаца в комментариях и вывод заголовков?

  4. Разместил редактор в админке в поле ввода текста и в полях настроек главной страницы - там всё нормально, значит проблема в движке.

  5. Добавил в common/comments.php другие теги, но по-прежнему заголовки отображаются, как параграфы, а последующие абзацы - с тегами. Причём, если аписать сделать 2 абзаца, теги будут показываться вокруг каждого из них.

    Обычно такой фигнёй страдают именно редакторы. Сами посудите - зачем движку обрамлять параграфами абзацы без особой надобности? Ведь сейчас стандартный редактор в админке не добавляет параграфы к тексту, так? А вот именно для вашего редактора движок старается, добавляет. Странно, не находите?

    Разместил редактор в админке в поле ввода текста и в полях настроек главной страницы - там всё нормально, значит проблема в движке.

    Я бы не был так категоричен, ибо для полной уверенности в вашей логике нужно проверять не результат сохранения в базе, а распечатки переменной $_POST на входе в движок.

    Сделайте проверку. Добавьте в нужных местах код типа такого:

    pr($_POST);

    И посмотрите, что движку передаёт на обработку ваш редактор.

  6. Правильно я понял, что надо этот код вставить в текст в режиме html?

  7. Нет. Неверно. Функция pr() - стандартная функция движка, помогающая в отладке. Её нужно вставлять в php файлах движка в нужных местах, где вы хотите узнать содержимое какой-либо переменной. Например, её можно вставить в упомянутую выше функцию mso_get_new_comment (в самом её начале).

  8. А. Благодарю.