Как сделать поле Имя(Автор) в комментариях обязательным, для заполнения, анонимным пользователям? Смотрел в типах материалов, там поле автор нельзя изменить или удалить, что делать?
Аналогичный вопрос. Нужно сделать обязательным поле Title в комментариях.
Ну, хотя бы, поставить звёздочку.
Через comment-wrapper.tpl.php не получилось.
Строка <?phpprint render($content['comment_form']); ?> весь блок.
для меня самое простое - через hook_form_alter при необходимых условиях ставите required для нужного поля, пример от балды
<?php
function НАЗВАНИЕ_МОДУЛЯ_form_alter(&$form, &$form_state, $form_id){
if($form_id == "НАЗВАНИЕ_ФОРМЫ"){
global $user;
$form['ИМЯ_НЕОБХОДИМОГО_ЭЛЕМЕНТА_ФОРМЫ']['#required'] = ($user->uid === 0);//И не забывайте про филдсеты(если есть)
}
}
?>
Если необходимо более интересное извращение, например, поле обязательно только при определенном значении другого поля, то нужно через этот хук добавить свой валидатор к форме и сделать уже в нем все необходимые проверки.
Что бы узнать названия форм, полей и прочего, имеет смысл поставить модуль devel, станут доступны функции dsm() dprint_r(), с ними просто гораздо удобнее, если кодинг этим куском не ограничится.
Сразу не заметил, но есть один тонкий момент: "$user->uid (String, 1 characters )", так происходит из-за того, что данные из БД возвращаются обычно в виде строк, т.е. Вы выполняете жесткое сравнение является ли строка "0" равна цифре 0(как бы 0x30 === 0), в этом случае логическое выражение всегда будет возвращать false, используйте относительное сравнение "==" вместо жесткого "===", тогда будут сравниваться только сами значения, без учета типов переменных, а можно вообще использовать логическое !$user->uid вместо сравнения.
Чтоб поле Имя для анонимного комментария стало обязательным, нужно:
Structure -> Content types -> Edit на нужном типе контента -> Comment settings
В поле Anonymous commenting ставим значение Anonymous must leave their contact information
Комментарии
Тогда другой вопрос, как организовать гостевую книгу с отзывами, например с помощью webform и views?
Аналогичный вопрос. Нужно сделать обязательным поле Title в комментариях.
Ну, хотя бы, поставить звёздочку.
Через comment-wrapper.tpl.php не получилось.
Строка
<?php print render($content['comment_form']); ?>
весь блок.для меня самое простое - через hook_form_alter при необходимых условиях ставите required для нужного поля, пример от балды
<?php
function НАЗВАНИЕ_МОДУЛЯ_form_alter(&$form, &$form_state, $form_id){
if($form_id == "НАЗВАНИЕ_ФОРМЫ"){
global $user;
$form['ИМЯ_НЕОБХОДИМОГО_ЭЛЕМЕНТА_ФОРМЫ']['#required'] = ($user->uid === 0);//И не забывайте про филдсеты(если есть)
}
}
?>
Если необходимо более интересное извращение, например, поле обязательно только при определенном значении другого поля, то нужно через этот хук добавить свой валидатор к форме и сделать уже в нем все необходимые проверки.
Что бы узнать названия форм, полей и прочего, имеет смысл поставить модуль devel, станут доступны функции dsm() dprint_r(), с ними просто гораздо удобнее, если кодинг этим куском не ограничится.
Подставляю id формы добавления комментариев comment-form, вставляют название поля Имя (name), но изменений никаких. Что не так делаю?
if($form_id == "comment-form"){
global $user;
$form['name']['#required'] = ($user->uid === 0);
}
}
module - это так называется Ваш модуль?(вообще довольно странное название, прямо как автомобиль марки машина)
если да, то проверьте form_id
ах да, еще бывает полезно чистить кэш после введения(или наоборот) различных хуков.
form_id впорядке, кэш чистил
Сразу не заметил, но есть один тонкий момент: "$user->uid (String, 1 characters )", так происходит из-за того, что данные из БД возвращаются обычно в виде строк, т.е. Вы выполняете жесткое сравнение является ли строка "0" равна цифре 0(как бы 0x30 === 0), в этом случае логическое выражение всегда будет возвращать false, используйте относительное сравнение "==" вместо жесткого "===", тогда будут сравниваться только сами значения, без учета типов переменных, а можно вообще использовать логическое !$user->uid вместо сравнения.
что-то все равно ничего не получается
функция с хуком вообще срабатывает? как называется модуль? как называется файл, в котором находится эта функция?
я хочу сделать поле "Ваше имя" в комментариях обязательным к заполнению. Модуль правильно называется. Не первый раз кастомные модули использую
Чтоб поле Имя для анонимного комментария стало обязательным, нужно:
Structure -> Content types -> Edit на нужном типе контента -> Comment settings
В поле Anonymous commenting ставим значение Anonymous must leave their contact information
<?php
function НАЗВАНИЕ_МОДУЛЯ_form_alter(&$form, &$form_state, $form_id){
if($form_id == "НАЗВАНИЕ_ФОРМЫ"){//для статей comment_node_article_form
global $user;
$form['author']['name']['#required'] = ($user->uid === 0);
}
}
?>