CCK поле автор

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

Аватар пользователя Petro Petro 13 декабря 2009 в 18:14

Господа, только начинаю изучать Друпал и честно говоря в восторге. Многие задачи которые решить не мог в принципе на других СМС тут решаются слету. Но как и везде есть пара вопросов:
1. У меня на сайте много статей, и некоторые статьи имеют по 3-4 автора. Решил я это просто: поставил CCK и создал поле автор с типом User reference - Select List. Ну и вроде все нормально, однако хотелось бы, чтобы в этом поле по умолчанию автоматом выбирался автор (user) который создает статью. Там есть настройка Default value в котором можно вставить кусок PHP кода. Никто не подскажет этот код?
2. Как сделать, чтобы в этом поле выводился не логин пользователя а данные из дополнительных полей (Имя, Фамилия, Отчество)?

Комментарии

Аватар пользователя Petro Petro 13 декабря 2009 в 19:43

Решил. Нашел ответ на вашем же форуме.
1.

<?phpglobal $user;
return array(0=> array('uid' => $user->uid));?>

2. Модуль RealName
Но появилась еще одна задача. Как убрать вывод автора рядом с датой? Дату убирать не нужно. В настройке шаблона убирается и то и то.

Аватар пользователя Petro Petro 17 декабря 2009 в 15:07

Господа, вроде как решил задачку, но теперь ее надо усовершенствовать и опять застрял. Во-первых по поводу создателя статьи. Я создал пользователя с ролью Автор - это те кто могут создавать статьи. Когда я в CCK в Default value ввожу код

global $user;
return array(0=> array('uid' => $user->uid));

и ставлю в User roles that can be referenced: галку только на "Автор" и выключаю "зарегистрированный пользователь" чтобы выбирать можно было только из авторов а не из всех зарегестрированных он выдает ошибку: # Автор: invalid user.
# The PHP code for 'default value' returned Array ( [0] => Array ( [uid] => 1 ) ) , which is invalid.
Если в Default value ничего не ввожу, все нормально

И второй вопрос: А как сделать чтобы в поле выбора автора выводились не логин а имя и фамилия автора?

Аватар пользователя Dan Dan 17 декабря 2009 в 15:21

Попробуйте в Default value вставлять непосредственно значение (у вас же это не многозначное поле), а не массив:
<?php
return $GLOBALS['user']->uid;
?>

или простой массив
<?php
return array('uid' => $GLOBALS['user']->uid);
?>

Аватар пользователя Petro Petro 17 декабря 2009 в 15:56

Не получается пишет:

The default value PHP code returned an incorrect value.
Expected format:

return array(
  0 => array('uid' => value for uid),
  // You'll usually want to stop here. Provide more values
  // if you want your 'default value' to be multi-valued:
  1 => array('uid' => value for uid),
  2 => ...
);

Returned value: Array ( [uid] => 1 )

Аватар пользователя Petro Petro 18 декабря 2009 в 21:09

Ух-ты! Ух-ты! Ух-ты! Вот спасибо, век не забуду. Все так просто было оказывается.
Вот если бы еще сделать, чтобы вместо логина пользователя показывалось его имя и фамилия - из дополнительных полей профиля была бы вообще сказка.

Аватар пользователя Petro Petro 19 декабря 2009 в 11:23

Понял. Создал список (views) avtor:
Fields
Профиль: Имя
Профиль: Фамилия

Фильтры
Пользователь: Роли or Автор

в Live preview показывает
Иван
Петров

Семен
Иванов

когда создаю статью то список такого типа:
Иван - Петров - имя: Иван Петров
Семен - Иванов - имя: Семен Иванов
Как бы сделать, чтобы просто Семен Иванов?

Аватар пользователя Dan Dan 19 декабря 2009 в 21:11

Скрыть Имя (Exclude from display) и в фамилии нажать "Rewrite the output of this field", посмотреть "Replacement patterns" и ввести заменители фамилии и имени, например "[field_first_name] [field_second_name]"

Аватар пользователя Petro Petro 20 декабря 2009 в 9:28

Сделал, получилось Семен Иванов Имя: Семен Иванов
Но тут моя вина: у меня стоит модуль realname. Он подменяет логин на реальное имя в статьях. В CCK User reference он почему-то не захотел менять, а вот во views полез. В результате если я даже оставлю только имя, а фамилию уберу он мне показывает "Семен Имя: Семен Иванов". Я убрал "Профиль: Имя" и "Профиль: Фамилия" и поставил только "Пользователь: Имя" (т.е. логин) в результате все вышло красиво:
Иван Петров
Семен Иванов

Спасибо за помощь. Без вас я бы не разобрался во век.

Аватар пользователя Petro Petro 10 сентября 2010 в 17:50

Еще один вопрос если можно Smile
Теперь еще стала задача. Появилось еще одно поле: редактор
оно отличается от автора только тем, что по умолчанию надо подставлять пользователя, который редактирует материал а не создал.
Если ставлю этот код

global $user;
return array(0=> array('uid' => $user->uid));

то по умолчанию подставляется имя пользователя создавшего материал. А надо того кто сейчас его изменяет. Как это сделать?