УрокСкрываем подсказки фильтра по редактированию
Подсказки по редактированию возле каждого поля ввода текста мешают эстетичному внешнему вида сайта. Кстати, существует небезосновательно мнение, что некая часть спам-ботов по подсказкам определяет куда надо вставлять спам. Как минимум по этим двум причинам я предпочитаю всегда избавляться от подсказок.
Метод скрытия подсказок через css-атрибут display: none; конечно работает для пользователей, но вот боты (как спамерские, так и поисковые) всё равно в коде видят их. А поисковые боты ещё и обижаются на скрытый текст, поэтому скрывать через стили я бы не рекомендовал.
Чтобы красивым образом скрыть подсказки по редактированию, добавьте в template.php следущую функцию, добавив в названии своё имя темы:
/** * Override default theme_filter_tips(). */ function ИМЯТЕМЫ_filter_tips($variables) { $tips = $variables['tips']; $long = $variables['long']; $output = ''; $multiple = count($tips) > 1; if ($multiple) { $output = '<h2>' . t('Text Formats') . '</h2>'; } if (count($tips)) { if ($multiple) { $output .= '<div class="compose-tips">'; } foreach ($tips as $name => $tiplist) { if ($multiple) { $output .= '<div class="filter-type filter-' . drupal_html_class($name) . '">'; $output .= '<h3>' . $name . '</h3>'; } if ($multiple) { $output .= '</div>'; } } if ($multiple) { $output .= '</div>'; } } return $output; }
После добавления функции очистите кэш темы.
По сути, эта функция перекрывает стандартную функцию вывода фильтров theme_filter_tips. В новой функции я убрал кусок кода, который выводит подсказки возле фильтров:
if (count($tiplist) > 0) { $output .= '<ul class="tips">'; foreach ($tiplist as $tip) { $output .= '<li' . ($long ? ' id="filter-' . str_replace("/", "-", $tip['id']) . '">' : '>') . $tip['tip'] . '</li>'; } $output .= '</ul>'; }
Чтобы убрать ссылку "Подробнее о форматировании" рядом с форматами ввода, необходимо перекрыть функцию темы theme_filter_tips_more_info, вернув пустую строку, вместо ссылки.
Итак, добавляем в template.php:
/** * Override default theme_filter_tips_more_info(). */ function ИМЯТЕМЫ_filter_tips_more_info() { return ''; }
Снова сбрасываем кэш темы и любуемся красивыми форматами ввода без лишнего хлама.
- Spleshka
- 19.10.2011
- 18948
Комментарии
Ещё вариант для той же цели - модуль better_formats
Ага, мне этот модуль кстате нравиться, есть настройка для ролей, кому показвать, а кому нет - очень удобно и делается в пару кликов
Очень пригодилась статья! Словами не передать :) Жаль, не сразу заметил. Зато мануал еще немного подучил! :))) Спасибо!
А как сделать, чтобы вообще не добавлялось поле с фильтром, если не админ? Конечно при условии, что для всех остальных разрешен только один формат.
В начале функции theme_filter_tips() вставить например такой код:
а под полем ввода текста таки добавляется пустой fieldset, и я никак не могу сообразить, какая функция его выводит :(
Чё-то не нравится он мне. Некрасиво. Доктор, помоги его убрать/вырезать/ампутировать... Пожалуйста!
написал "пустойfieldset" как тег :)
upd: не получается зачеркнуть, поэтому можно удалить это сообщение
И надо бы дать возможность поправлять собственные каляки, как раньше :)
Разобрался с fieldset(ом). Новая тема Drupalace.ru вдохновила! :)
Совсем забыл про вопрос, извиняюсь :) Если вдруг ещё пригодиться - в node.tpl.php перед выводом контента скрыть выбор фильтров:
А как для 7ки вообще убрать форматы ввода вместе с подсказками через template.php?
Скрываем подсказки фильтра по редактированию
я буду больше спать!
я буду больше спать!
Вот это правильно
Не работает. Просто ничего не меняется. Кеш очищал, название темы менял.
Друпал 7 ? Если да - то не может не меняться. Ищите ошибку у вас, т.к. я этим кодом на этом сайте скрывал подсказки.
Да, drupal 7. Но тут загадка какая-то у меня ... даже через css пытаюсь скрыть (display:none;) и все равно не скрывается! Я в шоке. Ума не приложу что может быть.
Вы точно в правильной теме всё это делаете?) А то у меня бывали случаи, что я нетуда код записывал, и долго не мог понять, почему ничего не работает.
Вы правы, спасибо огромное! Форма вызывается из темы SEVEN (создание материалов) Указанный выше код вставляю в template.php этой темы, все работает. А можно ли как-то вызвать его (код) через свою тему? (не хотелось бы что-то менять в системной)
К сожалению, нельзя. Однако можно создать свою тему, указав в качестве базовой - SEVEN. Далее положите в эту тему template.php со своими настройками и включите вашу тему в качесте темы админки.
А как убрать полоску которая расширяет экран, находится в блоке div class="grippie.
Не экран, а поле комментария
В каком Друпале?
Вот так можно убрать форматы ввода из любой формы
Если по умолчанию для гостевых комментариев стоит filtred_html с wysiwyg, то редактор работать не будет. поле комментария становится plain text
думаю не сложно дописать, что бы по умолчанию поле было filter html
Хочу сразу сказать спасибо: на вашем сайте нашла множество решений своих вопросов!
Есть еще один: после того как скрыла подсказки к форматам ввода и установила формат ввода по умолчанию (прошло какое-то время) и пропала сама форма ввода комментария!
Появляется только по ссылке "ответить".
Может подскажите, куда копать?
Модули дополнительные не устанавливали? Фильтры-то к форме комментариев имеют, на самом деле, довольно слабое отношение.
Устанавливала. Просто обнаружилась пропажа самой формы не сразу (ведь все работало, я ее и не проверяла :).
Форма комментария есть, если идти по ссылке "ответить" на уже существующий комментарий.
А если добавить свой, то между тэгами пусто.
Пыталась вернуть исходный файл .tpl (у меня комменты были темизированны), не помогло...
Что-то мне подсказывает, что вы просто в настройках типа материала поставили "Отображать форму комментариев на отдельной странице" :)
:) Это было бы слишком просто. Стоит "отображать комментарии на той же странице" :(
Буду благодарен, если ответите на несколько вопросов по теме:
1. Если скрыть филдсет с выбором формата ввода через node.tpl.php - то для формы ввода будет использован формат ввода, назначенный для роли по умолчанию?
2. Как так получается, что в шаблоне node.tpl.php реально скрыть $content['comments']['comment_form']['comment_body']['und'][0]['format'] а непосредственно если переопределять саму форму комментирования, через hook_form_ID_alter - то там вообще отсутствует этот массив с форматом.. Получается он формируется где-то раньше, т.е не вместе с формой комментов? дико интересно...
3. Подскажите пожалуйста, как можно програмно установить формат ввода по умолчанию для конкретной формы, допустим для формы комментариев? чтобы для всех ролей, в этой форме был один и тот же формат ввода, скажем plain_text . Пользуюсь ckeditor и получается ситуация, что несмотря на то, что для поля комментов по умолчанию задан формат ввода plain_text - у админа все равно показывается весь редактор с кучей кнопок..
1. Да
2. Форматирование цепляется к элементу textarea уже после обработки всей формы.
3. filter_process_format() там пример есть.
Что касательно второго вопроса, поясню, почему это важно. Просто использую модуль ajax_comments . В этом модуле, форма по кнопке ответить подгружается следующим образом:
И получается, даже не смотря на то, что в шаблоне ноды node.tpl.php я убираю филдсет с выбором формата, в генерируемой на аяксе форме, он все равно есть.
Вопрос как его убрать не правя сам модуль аякс комментариев?
Посмотрите что возвращено в $form_build, там уже должны быть записи о фильтрах
Да, все верно, там они уже есть. Но ведь это внутри модуля ajax_comments . Но ведь это не друпал вей хакать модули чужие.. Если б как-то внутри другого модуля, своего.. или теплейт.пхп..
Извините, что возможно напрягаю.
Очень красивый дизайн и великолепно сделаны коменты. Красавчик! Большая работа проделана.
Плюсую. Снимаю шляпу перед автором дизайна! Особенно понравилось оформление комментов.
Комментировать