Как удалить поле "Домашняя страница" из формы добавления комментария

Странно не видеть в настройках друпала, функции, отключающей поля и кнопки в форме добавления комментариев. Например часто возникает ситуация когда поле Домашняя страница не желательно. Есть несколько способов удалить его.

Первый способ: CSS
Самый простой способ это скрыть поле с помощью CSS. Добавляем в ваш файл стилей:
#comment-form #edit-homepage-wrapper {
  display: none;
}

Минусы: роботы и особо внимательные пользователи смогут заполнить это поле, поэтому советую избавиться от него и в списке комментариев с помощью темизации файла comment.tpl.php

Второй способ: правка ядра
Открываем файл comment.module и комментируем следующий код
$form['homepage'] = array('#type' => 'textfield', '#title' => t('Homepage'), '#maxlength' => 255, '#size' => 30, '#default_value' => $edit['homepage']);

т.е исправляем на
// $form['homepage'] = array('#type' => 'textfield', '#title' => t('Homepage'), '#maxlength' => 255, '#size' => 30, '#default_value' => $edit['homepage']);

в двух местах - строчка 1351 и 1358. Не советую этот способ, так как при очередном обновлении друпала всё придётся проделывать заново.

Третий способ: создание модуля
Создаём папку comments_without_homepage в sites/all/modules. Создаём в ней два файла, comments_without_homepage.info
$Id$
name = Comments Without Homepage
description = Remove homepage input
version = 6.x-0.1
core = 6.x
и comments_without_homepage.module
function comments_without_homepage_form_alter(&$form, &$form_state, $form_id) {
  if ($form_id == 'comment_form') {
    unset($form['homepage']);
  }
}

Идём в раздел управления модулями и включаем модуль Comments Without Homepage. Ссылка на готовый модуль

Четвёртый способ: с помощью template.php и preg_replace
В папке темы создаём, если его ещё нет, файл template.php и добавляем туда функцию:
function phptemplate_form($element) {
  if ($element['#id'] == 'comment-form') {
    $element['#children'] = preg_replace('#<div class="form-item" id="edit-homepage-wrapper">.*</div>#isU', '', $element['#children']);
  }
  return theme_form($element);
}

Очищаем кэш.

Пятый способ: с помощью template.php
В папке темы создаём, если его ещё нет, файл template.php и добавляем туда две функции:
function THEMENAME_theme() {
  return array(
    'comment_form' => array(
      'arguments' => array('form' => NULL),
    ),
  );
}
 
function THEMENAME_comment_form($form) {
  unset($form['homepage']);
  return drupal_render($form);
}

Очищаем кэш. Это возможно самый правильный вариант.

По материалам drupal.org и drupal.ru

Написанное актуально для
Drupal 6
Теги:
drupal, template.php, полезняшки, работа с комментариями, темизация
Добавлено: 24 Июня 2018 07:39:42 Добавил: Андрей Ковальчук Нравится 0
Добавить
Комментарии:
Нету комментариев для вывода...