Добрый день! У меня есть несколько типов материалов и несколько форматов текста. Я не могу указать, какой будет формат текста для поля. Допустим в типе материала Блог, я хочу Full HTML, а в какой нибудь обычной странице я хочу plain text. Нужно чтобы не пользователь убирал формат текста, а я указал фиксировано.
Каким образом можно это сделать?
Заранее спасибо.
Комментарии
hook_form_alter()
Можете подсказать в чем ошибка:
<?phpfunction имятемы_form_alter(&$form, &$form_state, $form_id) {
if ($form_id('forum_comments') {
$form['body']['#format'] = 'forum';
}
}?>
Нужно для типа материал форум указать формат текста forum
$form_id == 'forum_comments'
Выведи var_dump($form), может ты просто не попадаешь в нужную ячейку.
Ну и условие конечно другое: if($form_id == 'forum_comments') {}
+ ко всему, опять таки var_dump($form_id), у меня из-за моего модуля, выводится название формы модуля.
Кстати, никто не в курсе, у меня в hook_menu для модуля лежит такая коллбек:
$items['test_auth/test_auth_form_check'] = array(что-то там);
Когда в template.php делаю hook_form_alter и вывожу $form_id, то мне постоянно выдаёт tesh_auth. Почему так? Просто ссылка в браузере уж никак не соответствует ссылке в hook_menu().
И ещё вопрос по поводу редактора CKEditor. У меня есть роли min, max. Им установлено какие типы материалов они могут создавать. В форматах текста, указаны разрешения для этих тестов. Но тем не менее, только под админской учёткой я вижу ckeditor, под другими обычный plaintext. А модуль нашёл для установления фиксированных форматов: better formats
Ввожу так, белый экран, намекает на ошибку синтаксиса:
<?phpfunction имятемы_form_alter(&$form, &$form_state, $form_id) {
if ($form_id == 'forum_comments') {
$form['body']['#format'] = 'forum';
}
}?>
<?php ТУТ ДОЛЖЕН БЫТЬ ПЕРЕНОС ИЛИ ХОТЯ БЫ ПРОБЕЛ
function имятемы_form_alter(&$form, &$form_state, $form_id) {
if ($form_id == 'forum_comments') {
$form['body']['#format'] = 'forum';
}
}?>
это здешний фильтр вставляет у меня все так:
function имятемы_form_alter(&$form, &$form_state, $form_id) {
if ($form_id == 'forum_comments') {
$form['body']['#format'] = 'forum';
}
}
не &$form, а $form. без указателя. указатель только на $form_state
так тоже не работает
function имятемы_form_alter($form, &$form_state) {
if ($form_id == 'forum_comments') {
$form['body']['#format'] = 'forum';
}
}
дак а форм id то куда удалили
все так же белый экран смерти, я вот думаю может с именем формы проблемы, фаербагом вроде смотрел, у меня стандартный форум + Advanced forum
function имятемы_form_alter($form, &$form_state, $form_id) {
if ($form_id == 'comment_form') {
$form['body']['#format'] = 'forum';
}
}
Ну пошли по порядку:
1. Название темы из которой вызывается хук.
2. Файл из которого вызывается данные хук.
3. Белый экран -- ошибки все в логе апача хранятся, хоть какого цвета и они бы стали разгадкой.
1. тема blacksea
2. template.php
3. вот последняя ошибка из журнала:
Notice: Undefined property: stdClass::$views_ajax_submission в функции ajax_comments_submit_js() (строка 299 в файле ajax_comments/ajax_comments.module).
Поищи с Warning: или Error:
Не забудьте ответить на мой вопрос) А то все занялись хуком))
а разве этот хук не указывает определенный тип материала для нужных форм, просто добавить проверку по типу
Дак, дело в том что $form_id показывает с названием формы в моём модуле, а не того что на данный момент открыто.
да не может быть - в drupal_alter все параметры передаются по ссылке , тем более здесь массив $form меняется
и 'forum' точно машинное имя формата ?
и не мешало бы добавить в функцию
drupal_set_message('This is the form id : ' .$form_id);
да и не совсем понятно что за форма - добавления комментария или ноды ?
Это форма добавления сообщения на стандартном форуме
Вопрос всё ещё актуален!
Пользователь, без админских прав не видит ckeditor. Поле получается обычное textarea. Очень важно. Дам какие надо данные, только спросите.
проверьте права) логично же admin/people/permissions раздел Filter
Там всё хорошо)