Как удалить поля заголовка и тела по умолчанию в типе контента Drupal, сгенерированном CCK?

StackOverflow https://stackoverflow.com/questions/89672

  •  01-07-2019
  •  | 
  •  

Вопрос

Когда вы создаете новый тип контента в Drupal с помощью Content Creation Kit, вы автоматически получаете поля «Заголовок» и «Тело» в сгенерированной форме.Есть ли способ их удалить?

Это было полезно?

Решение

Если вы не разработчик (или хотите сократить процесс разработки), другое возможное решение — использовать модуль auto_nodetitle.Auto nodetitle позволит вам создавать правила для создания заголовка узла.Это могут быть программные правила, заменяемые токены или просто статический текст.Стоит посмотреть, если не что иное.

Другие советы

Чтобы удалить тело, отредактируйте тип, разверните «Настройки формы отправки» и оставьте пустым для метки поля тела.Для заголовка вы можете переименовать его в другое текстовое поле.Если вам действительно не нужны какие-либо текстовые поля, вы можете создать собственный модуль, скажем, с именем foo, и создать функцию foo_form_alter(), которая заменяет $form['title'] на #ценить когда $form['type']['#value'] — это тип вашего узла.

Не нужно ничего устанавливать:
при редактировании типа контента нажмите «Редактировать»
(в меню Редактировать | Управление полями | Отображать поля)
нажмите на настройки формы отправки

на метке поля «Тело»:
Оставьте это поле пустым, поле «Тело» будет удалено.

Если вы не разработчик (или вы хотите проинформировать процесс разработки), другое возможное решение - использовать модуль auto_nodetitle.Auto Nodetitle позволит вам создавать правила для создания заголовка узла.Это могут быть программные правила, токены, которые заменяются, или просто статический текст.Стоит посмотреть, если ничего больше.

И добавить к Уильям О'Коннор решение...

К сожалению, модуль плохо документирован.На мой взгляд, это действительно эффективно только в том случае, если вы используете PHP.Установите флажок «Оценить PHP по шаблону» и введите в поле «Шаблон для заголовка» что-то вроде:

<?php echo $node->field_staff_email[0]['email']; ?>

или:

<?php echo $node->field_staff_name[0]['value'] . '-' . gmdate('YmdHis'); ?>

... где у меня было поле с внутренним именем «field_staff_email» и я использовал модуль электронной почты CCK - поэтому использовался тип «электронная почта».Или у меня было поле с внутренним именем «field_staff_name», и оно было обычным текстовым полем — поэтому использовался тип «значение».Вызов gmdate() в конце предназначен для обеспечения уникальности, поскольку у вас могут быть два или более сотрудников с одинаковыми именами.

Я обнаружил все это, сначала экспериментируя с:

<?php print_r($node); ?>

... что, конечно, дало сумасшедшие результаты, но, по крайней мере, я смог проанализировать выходные данные и понять, как правильно использовать здесь объект $node.

Просто обратите внимание, что если вы используете любую из этих процедур PHP, вы получите список контента в Drupal Admin, отображающий записи точно так, как вы закодировали PHP.Вот почему я не использовал просто gmdate(), потому что тогда может быть сложно найти мою запись для редактирования.

Обратите также внимание, что вы можете использовать преобразование Base-36 в gmdate(), чтобы уменьшить размер вывода, поскольку gmdate('YmdHis') довольно длинный.

Первые ответы все хороши.Как еще одна идея для заглавной части...как насчет создания собственного файла шаблона для типа узла cck.Вы должны скопировать node.tpl.php в node-TYPE.tpl.php, а затем отредактировать новый файл и удалить место, где отображается заголовок.(Не забудьте очистить кеш).

Такой подход означает, что у каждого узла по-прежнему есть заголовок, поэтому при управлении контентом у вас не останется пустых заголовков или чего-то в этом роде.

ХТХ!

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top