Автогенерация заголовка

Прислано: yasik

пт, 28/03/2008 - 15:43

Добрый день,
Может кому-то пригодится
Для автоматической генерации заголовка нужно взять модуль Automatic Nodetitles http://drupal.org/project/auto_nodetitle
он делает несколько вещей во-первых отключает обязательное заполнение заголовка, во-вторых можно сделать так чтоб поле заголовока вообще не выводился и заполнялось само и третье если поле осталось пустое заполнилось само.

Если нужно сделать так чтоб заголовок создавался автоматически и при этом был уникальный например имел какой-то буквенный индекс и номер вида АК-123 за нумерацию возьмем номер ноды. Вся загвоздка в том что на момент генерации заголовка нет еще номера у текущей ноды на drupal.org предложили брать индекс из базы и прибавлять один.

<?php
$name 
db_prefix_tables('{node}_nid');
$id db_result(db_query("SELECT id FROM {sequences} WHERE name = '%s'"$name)) + 1;
return 
$id;
?>

а если нужно перед цифрами добавить буквенный индекс

то нужно его изменить вот так

<?php
$name 
db_prefix_tables('{node}_nid');
$id db_result(db_query("SELECT id FROM {sequences} WHERE name = '%s'"$name)) + 1;
return 
"AК-".$id;
?>

хотелось сделать еще такую штуку чтоб заголовок создавался в зависимости от значения какого-то поля из формы
попробовал такой код
но он не работает может кто подскажет где ошибка

<?php 
<strong>echo "#".$node->field_lev[0]['view']."#"</strong>;
  if (
$node->field_lev[0]['view']) 
{  
$name db_prefix_tables('{node}_nid');
$id db_result(db_query("SELECT id FROM {sequences} WHERE name = '%s'"$name)) + 1;
return 
"EAK-".$id;
 } 
else { 
$name db_prefix_tables('{node}_nid');
$id db_result(db_query("SELECT id FROM {sequences} WHERE name = '%s'"$name)) + 1;
return 
"AK-".$id;

}

?>

в 2 сторке отладочный код в результате получается название таким ##AK-125 т.е на момент создание заголовка переменная не имеет значений и все происходит по ветке else
может это можно как-то из браузера вытащить ее значение

Буду благодарен за любую подсказку хоть в каком направление копать

Комментарии


Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Применить"
Опубликовано alisa в пт, 28/03/2008 - 20:28.

а по умолчанию оно заполняется само - первыми словами из текста, или нет?


Опубликовано VladSavitsky в пт, 28/03/2008 - 20:29.

Drupal CookBook - Готовить может каждый!Решение было сохранено на сайте DrupalCookBook.ru:
Автогенерация заголовка документа.
Авторы, предложившие решения, также указаны в сохранённой статье.


Опубликовано T-34 в пт, 28/03/2008 - 23:13.

Мне тоже нужно вывести взаголовок значения полей, а именно заданные при создании ноды термины.
Похоже, что средствами Automatic Nodetitles и Token это реализовать невозможно.
А нельзя ли сделать это в шаблонах?


Опубликовано yasik в сб, 29/03/2008 - 00:03.

то alisa
если оставить поле пустым он вставляет не слова из текста а тип материала page story


Опубликовано yasik в сб, 29/03/2008 - 00:20.

есть такая идея но я ее представляю теоретически так как в php не силен можно запускать скрипт время от времени который будет делать выборку по базе и переименовать ноды


Опубликовано AkeLLbl4 в пн, 06/04/2009 - 17:54.

Пишет в заголовок номер 1.
В чем проблема не пойму.
может дело в том, что у меня 6.10?
а как тут вижу для 5.х


Опубликовано Xermit в пн, 10/08/2009 - 20:14.

Возможно я не в свой огород лезу, я так понимаю нужно место где можно собрать все данные связанные с узлом, обработать их и выдать как заголовок страницы. Я думаю, что можно было бы использовать стандартные возможности функции _phptemplate_variables($hook, $vars) в template.php:

static $head_title_save;

if($hook == 'node')
{
  здесь генерируете новый заголовок для узла используя 
  соответствующие переменные из $vars

  потом сохраняете куда нить сгенеренный заголовок будь-то
  статический массив по узлам, или просто в кеш
  с помощью функций кеширования
  $head_title_save = новый($vars['title']); 
  $vars['title'] = "";
  return $vars;
}
if ($hook == 'page')
{
  здесь загружаете созданный ранее заголовок из кэша
  или статического массива

  подменяете собственно сам заголовок на свой
  $vars['head_title'] = strip_tags($head_title_save);

  return $vars;
}

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

Например, в заголовке узла можно сохранить собственно какой нить шаблон для генерации заголовка и использовать его в первой части, взяв его из $vars['title'].


Новое на сайте