Автогенерация заголовка
Прислано: 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
может это можно как-то из браузера вытащить ее значение
Буду благодарен за любую подсказку хоть в каком направление копать
- yasik's blog
- Для комментирования войдите или зарегистрируйтесь
а по умолчанию оно заполняется само - первыми словами из текста, или нет?
- Для комментирования войдите или зарегистрируйтесь
Решение было сохранено на сайте DrupalCookBook.ru:
Автогенерация заголовка документа.
Авторы, предложившие решения, также указаны в сохранённой статье.
- Для комментирования войдите или зарегистрируйтесь
Мне тоже нужно вывести взаголовок значения полей, а именно заданные при создании ноды термины.
Похоже, что средствами Automatic Nodetitles и Token это реализовать невозможно.
А нельзя ли сделать это в шаблонах?
- Для комментирования войдите или зарегистрируйтесь
то alisa
если оставить поле пустым он вставляет не слова из текста а тип материала page story
- Для комментирования войдите или зарегистрируйтесь
есть такая идея но я ее представляю теоретически так как в php не силен можно запускать скрипт время от времени который будет делать выборку по базе и переименовать ноды
- Для комментирования войдите или зарегистрируйтесь
Пишет в заголовок номер 1.
В чем проблема не пойму.
может дело в том, что у меня 6.10?
а как тут вижу для 5.х
- Для комментирования войдите или зарегистрируйтесь
Возможно я не в свой огород лезу, я так понимаю нужно место где можно собрать все данные связанные с узлом, обработать их и выдать как заголовок страницы. Я думаю, что можно было бы использовать стандартные возможности функции _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'].
- Для комментирования войдите или зарегистрируйтесь



Комментарии