Есть ли способ указать в качестве автора story не зарегистрированного пользователя, а кого угодно, в смысле произвольный текст? Дело в том, что на моём сайте публикуются статьи из многих источников и каждого автора заводить -- никакого терпения не хватит. В мамбе это было элементарно, поле Author Alias. А тут как?
Комментарии
в cck сделать дополнительное поле
а какой принцип работы Author Alias в мамбе?
Просьба пошагово. Я в Drupal новичок, в Content Types не нашёл такой возможности. Не там искал, видимо?
Принцип простой -- если указан Author Alias, то выводится он. Если нет -- имя юзера, разместившего заметку.
ставите модуль 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
А может проще завести словарь "Авторы" с возможностью free tagging и привязать к нужному типу контента? А если еще добавить active select модуль, так вообще замечательно - если автор уже есть - после ввода первых нескольких букв - появится сам.
> А если еще добавить active select модуль, ... - если автор уже есть - после ввода первых нескольких букв - появится сам.
Эта фишка не "active select", это модуль таксономии выводит список. Реализация фичи - в ядре.
Мысль. Хотя реализовать в плане темизации ИМХО сложнее будет.
Например как вывести отдельно термы для словаря tags и для словаря authors например так:
__Есть ли жизнь на марсе__
''опубликовал: Василий Пупкин''
теги: sex, drugs, rock n roll
Хотя идея заманчивая, тогда решиться проблема трекера и конфликта имен авторов зарегистрированных и не зарегистрированных.
Буду думать.
upd еще было бы не плохо сделать так, что если зарегистрированный пользователь по пьяни не ввел свое имя в поле выбора термина, он (термин совпадающий с именем) присваивался бы ему автоматически. было бы вообще шикарно
Всё реально. Посмотри внимательно код taxonomy.module и -> вперёд!
Если кто не в курсе я не программист, php не знаю, казахский спец школа учился, так что не ждите от меня чуда
Короче придумал, принимаются поправки
Вывод терминов из заданного словаря
<?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 '
';
?>
Как сделать автоприсвоение термина я не знаю если честно, требую помощь зала
еше вопрос как его упростить если мы знаем, что у нас всего 1 термин чтобы не гонять через foreach
реально ли сделать закладку в профиле пользователя без доп. модулей?
> Если кто не в курсе я не программист, php не знаю, казахский спец школа учился, так что не ждите от меня чуда
Если кто не в курсе я программист, но мне здесь не платят, так что не ждите от меня чуда
> ...требую помощь зала
ну раз требуешь, то придётся помочь
> еше вопрос как его упростить если мы знаем, что у нас всего 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)));
?>
безумно благодарен
На самом деле что-бы сделать все хорошо нужно сделать следующее:
1. Автоселект для зарегистрированных пользователей, если не вводится значение. Причем скрывать это поле там где оно идеологически не нужно - на форуме и в блогах.
2. Сделать интеграцию в пользовательские профиля, что-бы можно было выводить там список всех публикаций. Т.е. должна быть связка uid => tid.
Для не социальных сайтов, в принципе без этого вполне можно обойтись.