сообщение набора drupal на странице редактирования узла отображается дважды с крючком темы
Я хочу отобразить значение поля, к которому у пользователя нет доступа в dsm, когда пользователь редактирует страницу. dsm отображается после сохранения узла, и, хотя это нормально (я бы даже счел это функцией), он показывает значение узла до редактирования.
Я полагаю, что столкнулся с этой проблемой , но, похоже, ее нелегко решить. Вот посмотрите на функцию template.php
.
function themename_form_vakature_node_form_alter(&$form){
if(isset($form['#node']->field_vacature_scheduled_for_unp)){
if($form['#node']->field_vacature_scheduled_for_unp['und'][0]['value']){
$expirydate = date("F j Y",$form['#node']->field_unpublish_date['und'][0]['value']);
if($form['#node']->field_unpublish_date['und'][0]['value'] < time()){
drupal_set_message(t("This vacature has expired."),'status',FALSE);
}
else{
drupal_set_message(t("This vacature will expire at: ").$expirydate,'status',FALSE);
}
}
}
}
В основном, сообщение, отображаемое на странице редактирования, выглядит следующим образом повторяется после сохранения. Мне нужно, чтобы он либо не повторялся, либо показывал правильную обновленную информацию.
1 answers
Изменение формы изменяет форму, когда она создается для отображения.
Если вы хотите использовать значение на узле после обновления, используйте крючок, подобный
Вместо этого.
Чтобы настроить фрагмент кода, что-то вроде:
/**
* Implements hook_node_presave
*/
function mymodule_node_presave($node){
if ($items = field_get_items('node', $node, 'field_vacature_scheduled_for_unp')) {
$vacature = reset($items); // Use first field item value
$expirydate = date("F j Y", $vacature['value']);
$items = field_get_items('node', $node, 'field_unpublish_date')
$unpublish = reset($items); // Use first field value
if ($unpublish['value'] < time()) {
drupal_set_message(t("This vacature has expired."), 'status', FALSE);
}
else{
drupal_set_message(t("This vacature will expire at: "). $expirydate, 'status', FALSE);
}
}
}