Автозаполнение поля Title при создании публикации

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

Аватар пользователя bran bran 25 сентября 2007 в 12:37

Подскажите как сделать так, чтобы при создании публикации в поле Title (Название публикации) автоматически вставлялась текущая дата?

Лучший ответ

Аватар пользователя I_D I_D 27 мая 2019 в 13:03

Друзья, всем спасибо за помощь. Разобрался. Если знать - там работы на 5 минут Smile
1. создаем папку для модуля /drupal/sites/all/modules/myhook
2. в ней создаем два файла myhook.info и myhook.module
3. myhook.info:

<?php
name 
myhook
description 
Module for hooks and some functions
core 
7.x
?>

4. myhook.module:


<?php
// $Id$
/**
 * @file
 * Custom Functions
 */

//список hook тут https://api.drupal.org/api/drupal/includes%21module.inc/group/hooks/7.x

/*Этот hook (hook_form_alter) срабатывает при создании любой формы*/

function myhook_form_alter(&$form, &$form_state$form_id) {
   
// если разремить строки ниже, то при создании формы будет выведена информация о ней, необходимаюя в разработке
   //print_r('$form_id='.$form_id);
   //print '<pre>';
   //print_r($form);
   //print '</pre>';
}

/*Этот hook (hook_form_FORM_ID_alter) срабатывает  только при создании формы  journal_incoming_node_form*/
function myhook_form_journal_incoming_node_form_alter(&$form, &$form_state$form_id) {
   
// работа с базой данных тут http://xandeadx.ru/blog/drupal/88
   
$query "SELECT COUNT(*)+1 amount FROM {node} n ".
              
"WHERE n.type = :type and n.created >= :cdate";
   
$content_type 'journal_incoming'// тип контента
   
$date_begin_year date('Y-01-01'); // первый день текущего года   
   
$count_node db_query($query, array(':type' => $content_type,'cdate' => $date_begin_year))->fetch();
//   var_dump($count_node); // тип возвращаемых данных
   
$form['title']['#default_value'] = $count_node->amount .'-'date('y') ;

}

?>

5. заходим в список модулей и активируем наш

Комментарии

Аватар пользователя mlarini mlarini 25 сентября 2007 в 15:08

Два модуля могут решить проблему: auto_nodetitle и token.

Можно также решить данный конкретный вопрос при помощи легкой коррекции шаблона node.tpl.php
Туда надо вставить что-то в этом духе (точнее заменить схожий кусок кода):

<?php if ($page == 0) { ?>
  <h2 class="title"><a href="<?php print $node_url?>"><?php print $title?>  <?php print format_date($node->created, 'custom', 'd.m.Y') ?></a></h2>
<?php }; ?>

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

Аватар пользователя bran bran 25 сентября 2007 в 16:18

А Вы не подскажете есть ли в Друпале понятие - Текущая дата?

Установил эти два модуля и в настройках ввел
<?php print format_date($node->created, 'custom', 'd.m.Y') ?>

Может вместо $node->created, нужно что-то другое вставить?

Аватар пользователя I_D I_D 23 мая 2019 в 17:44

Добрый день! Вопрос схожий с этой темой, пишу тут.
Подскажите, пожалуйста, как правильно решить задачку.
Drupal 7

Делаю журнал входящей корреспонденции для деловодов. Необходимо для "Регистрационный номер" (поле Titel) рассчитать номер исходя от количества существующих записей в этом году и при создании новой записи в журнале поле уже должно быть заполнено. Так же есть поля, редактирования которых необходимо запретить (поле с датой создания записи)

Немного почитал о хуках, пока ничего не понял (где его создавать, как привязать к определенному типу) Sad Возможно для этой задачи есть другие решения.... Пока в растерянности...

Аватар пользователя ivnish ivnish 24 мая 2019 в 8:27
1

Есть модули типа auto_nodetitle, но для него всё равно нужно будет писать свой токен.

Либо нужно использовать hook alter формы создания ноды и там подставлять нужное значение

Изучение хуков начните с http://xandeadx.ru/blog/drupal/256

Аватар пользователя I_D I_D 27 мая 2019 в 13:03

Друзья, всем спасибо за помощь. Разобрался. Если знать - там работы на 5 минут Smile
1. создаем папку для модуля /drupal/sites/all/modules/myhook
2. в ней создаем два файла myhook.info и myhook.module
3. myhook.info:

<?php
name 
myhook
description 
Module for hooks and some functions
core 
7.x
?>

4. myhook.module:


<?php
// $Id$
/**
 * @file
 * Custom Functions
 */

//список hook тут https://api.drupal.org/api/drupal/includes%21module.inc/group/hooks/7.x

/*Этот hook (hook_form_alter) срабатывает при создании любой формы*/

function myhook_form_alter(&$form, &$form_state$form_id) {
   
// если разремить строки ниже, то при создании формы будет выведена информация о ней, необходимаюя в разработке
   //print_r('$form_id='.$form_id);
   //print '<pre>';
   //print_r($form);
   //print '</pre>';
}

/*Этот hook (hook_form_FORM_ID_alter) срабатывает  только при создании формы  journal_incoming_node_form*/
function myhook_form_journal_incoming_node_form_alter(&$form, &$form_state$form_id) {
   
// работа с базой данных тут http://xandeadx.ru/blog/drupal/88
   
$query "SELECT COUNT(*)+1 amount FROM {node} n ".
              
"WHERE n.type = :type and n.created >= :cdate";
   
$content_type 'journal_incoming'// тип контента
   
$date_begin_year date('Y-01-01'); // первый день текущего года   
   
$count_node db_query($query, array(':type' => $content_type,'cdate' => $date_begin_year))->fetch();
//   var_dump($count_node); // тип возвращаемых данных
   
$form['title']['#default_value'] = $count_node->amount .'-'date('y') ;

}

?>

5. заходим в список модулей и активируем наш