Дополнительное поле автора

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

Аватар пользователя LittleDen LittleDen 17 января 2007 в 14:03

Есть ли способ указать в качестве автора story не зарегистрированного пользователя, а кого угодно, в смысле произвольный текст? Дело в том, что на моём сайте публикуются статьи из многих источников и каждого автора заводить -- никакого терпения не хватит. В мамбе это было элементарно, поле Author Alias. А тут как?

Комментарии

Аватар пользователя LittleDen LittleDen 19 января 2007 в 5:19

Просьба пошагово. Smile Я в Drupal новичок, в Content Types не нашёл такой возможности. Не там искал, видимо?
Принцип простой -- если указан Author Alias, то выводится он. Если нет -- имя юзера, разместившего заметку.

Аватар пользователя dyp@drupal.org dyp@drupal.org 19 января 2007 в 6:07

ставите модуль cck http://www.drupal.org/project/cck
добавляем новый тип контента,
добавляете нужные поля (скорее всего одно текстовое для тела статьи)
добавляем текстовое поле author
в node.tpl.php прописываем
<?php
if ($node->field_author[0]['view']):
print $node->field_author[0]['view'];
else:
print $name;
endif;
?>

если надо можно поле для источника добавить
документация по cck на русском ищите тут http://wiki.drupallers.ru/HomePage

Аватар пользователя blackvl@drupal.org blackvl@drupal.org 24 января 2007 в 23:33

А может проще завести словарь "Авторы" с возможностью free tagging и привязать к нужному типу контента? А если еще добавить active select модуль, так вообще замечательно - если автор уже есть - после ввода первых нескольких букв - появится сам.

Аватар пользователя Dan Dan 25 января 2007 в 0:01

> А если еще добавить active select модуль, ... - если автор уже есть - после ввода первых нескольких букв - появится сам.
Эта фишка не "active select", это модуль таксономии выводит список. Реализация фичи - в ядре.

Аватар пользователя dyp@drupal.org dyp@drupal.org 25 января 2007 в 3:44

Мысль. Хотя реализовать в плане темизации ИМХО сложнее будет.
Например как вывести отдельно термы для словаря tags и для словаря authors например так:

__Есть ли жизнь на марсе__
''опубликовал: Василий Пупкин''
теги: sex, drugs, rock n roll

Хотя идея заманчивая, тогда решиться проблема трекера и конфликта имен авторов зарегистрированных и не зарегистрированных.
Буду думать.

upd еще было бы не плохо сделать так, что если зарегистрированный пользователь по пьяни не ввел свое имя в поле выбора термина, он (термин совпадающий с именем) присваивался бы ему автоматически. было бы вообще шикарно

Аватар пользователя dyp@drupal.org dyp@drupal.org 25 января 2007 в 16:00

Quote:
Всё реально. Посмотри внимательно код taxonomy.module и -> вперёд! :)

Если кто не в курсе я не программист, php не знаю, казахский спец школа учился, так что не ждите от меня чуда Smile

Короче придумал, принимаются поправки

Вывод терминов из заданного словаря
<?php
$terms = taxonomy_node_get_terms_by_vocabulary($node->nid, 1); // 1 это id словаря
$links = array();
print '

  • ';
    foreach ($terms as $term) {
    $links[] = l($term->name, taxonomy_term_path($term), array('rel' => 'tag', 'title' => strip_tags($term->description)));
    }
    print implode(', ', $links);
    print '

';
?>

Как сделать автоприсвоение термина я не знаю если честно, требую помощь зала

Аватар пользователя Dan Dan 26 января 2007 в 16:47

> Если кто не в курсе я не программист, php не знаю, казахский спец школа учился, так что не ждите от меня чуда Smile
Если кто не в курсе я программист, но мне здесь не платят, так что не ждите от меня чуда Smile

> ...требую помощь зала
ну раз требуешь, то придётся помочь Smile

> еше вопрос как его упростить если мы знаем, что у нас всего 1 термин чтобы не гонять через foreach
функция array_shift достаёт из массива первый элемент:
<?php
$term = array_shift(taxonomy_node_get_terms_by_vocabulary($node->nid, 1)); // 1 это id словаря
print .l($term->name, taxonomy_term_path($term), array('rel' => 'tag', 'title' => strip_tags($term->description)));
?>

Аватар пользователя dyp@drupal.org dyp@drupal.org 26 января 2007 в 18:22

На самом деле что-бы сделать все хорошо нужно сделать следующее:
1. Автоселект для зарегистрированных пользователей, если не вводится значение. Причем скрывать это поле там где оно идеологически не нужно - на форуме и в блогах.
2. Сделать интеграцию в пользовательские профиля, что-бы можно было выводить там список всех публикаций. Т.е. должна быть связка uid => tid.
Для не социальных сайтов, в принципе без этого вполне можно обойтись.