Формат текста для CKEditor, для разных типов материалов

Главные вкладки

Аватар пользователя voodoo_dn voodoo_dn 12 декабря 2013 в 13:18

Добрый день! У меня есть несколько типов материалов и несколько форматов текста. Я не могу указать, какой будет формат текста для поля. Допустим в типе материала Блог, я хочу Full HTML, а в какой нибудь обычной странице я хочу plain text. Нужно чтобы не пользователь убирал формат текста, а я указал фиксировано.
Каким образом можно это сделать?

Заранее спасибо.

Комментарии

Аватар пользователя -NIK- -NIK- 12 декабря 2013 в 16:38

"Niklan" wrote:
hook_form_alter()

Можете подсказать в чем ошибка:

<?phpfunction имятемы_form_alter(&$form, &$form_state, $form_id) {
  if ($form_id('forum_comments') {
    $form['body']['#format'] = 'forum';
  }
}?>

Нужно для типа материал форум указать формат текста forum

Аватар пользователя voodoo_dn voodoo_dn 12 декабря 2013 в 17:25

Выведи 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().

Аватар пользователя voodoo_dn voodoo_dn 12 декабря 2013 в 17:27

И ещё вопрос по поводу редактора CKEditor. У меня есть роли min, max. Им установлено какие типы материалов они могут создавать. В форматах текста, указаны разрешения для этих тестов. Но тем не менее, только под админской учёткой я вижу ckeditor, под другими обычный plaintext. А модуль нашёл для установления фиксированных форматов: better formats

Аватар пользователя -NIK- -NIK- 12 декабря 2013 в 17:31

Ввожу так, белый экран, намекает на ошибку синтаксиса:

<?phpfunction имятемы_form_alter(&$form, &$form_state, $form_id) {
  if ($form_id == 'forum_comments') {
    $form['body']['#format'] = 'forum';
  }
}?>
Аватар пользователя voodoo_dn voodoo_dn 12 декабря 2013 в 17:35

<?php ТУТ ДОЛЖЕН БЫТЬ ПЕРЕНОС ИЛИ ХОТЯ БЫ ПРОБЕЛ
function имятемы_form_alter(&$form, &$form_state$form_id) {
  if (
$form_id == 'forum_comments') {
    
$form['body']['#format'] = 'forum';
  }
}
?>
Аватар пользователя -NIK- -NIK- 12 декабря 2013 в 17:49

это здешний фильтр вставляет у меня все так:

function имятемы_form_alter(&$form, &$form_state, $form_id) {
if ($form_id == 'forum_comments') {
$form['body']['#format'] = 'forum';
}
}

Аватар пользователя -NIK- -NIK- 12 декабря 2013 в 19:14

"voodoo_dn" wrote:
не &$form, а $form. без указателя. указатель только на $form_state

так тоже не работает

function имятемы_form_alter($form, &$form_state) {
if ($form_id == 'forum_comments') {
$form['body']['#format'] = 'forum';
}
}

Аватар пользователя -NIK- -NIK- 12 декабря 2013 в 19:55

все так же белый экран смерти, я вот думаю может с именем формы проблемы, фаербагом вроде смотрел, у меня стандартный форум + Advanced forum

function имятемы_form_alter($form, &$form_state, $form_id) {
if ($form_id == 'comment_form') {
$form['body']['#format'] = 'forum';
}
}

Аватар пользователя Niklan Niklan 12 декабря 2013 в 19:57

Ну пошли по порядку:

1. Название темы из которой вызывается хук.
2. Файл из которого вызывается данные хук.
3. Белый экран -- ошибки все в логе апача хранятся, хоть какого цвета и они бы стали разгадкой.

Аватар пользователя -NIK- -NIK- 12 декабря 2013 в 20:07

"Niklan" wrote:
Ну пошли по порядку:
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).

Аватар пользователя -NIK- -NIK- 12 декабря 2013 в 20:42

"voodoo_dn" wrote:
Не забудьте ответить на мой вопрос) А то все занялись хуком))

а разве этот хук не указывает определенный тип материала для нужных форм, просто добавить проверку по типу

Аватар пользователя voodoo_dn voodoo_dn 13 декабря 2013 в 12:08

Дак, дело в том что $form_id показывает с названием формы в моём модуле, а не того что на данный момент открыто.

Аватар пользователя drupby drupby 13 декабря 2013 в 13:44

"voodoo_dn" wrote:
не &$form, а $form. без указателя. указатель только на $form_state

да не может быть - в drupal_alter все параметры передаются по ссылке , тем более здесь массив $form меняется

и 'forum' точно машинное имя формата ?
и не мешало бы добавить в функцию
drupal_set_message('This is the form id : ' .$form_id);
да и не совсем понятно что за форма - добавления комментария или ноды ?

Аватар пользователя -NIK- -NIK- 13 декабря 2013 в 15:51

"drupby" wrote:
да и не совсем понятно что за форма - добавления комментария или ноды ?

Это форма добавления сообщения на стандартном форуме

Аватар пользователя voodoo_dn voodoo_dn 13 декабря 2013 в 17:09

Вопрос всё ещё актуален!

Пользователь, без админских прав не видит ckeditor. Поле получается обычное textarea. Очень важно. Дам какие надо данные, только спросите.