У меня есть тип документа "заявка на отель", в заявке есть поле CCK Reference в котормо выбирается на какой отель делается заявка. Задача вывести владельцу отеля все заявки на его отель. Я для этого создаю view в котором выводятся все материалы с типом "заявка на отель" и в качестве аргумента передаю id отеля. Как я представляю решение. Я пишу ПХП код которые выбирает из базы id отеля принадлежащие залогиненному пользователю. Вопрос заключается в чем, можно ли передавть во views через PHP несколько id ?
Комментарии
Фильтры чем не устраивают?
Ну этот вью в виде блока и видет только пользователю на чьи отели сделаны заявки. А фильтр попробую, но мне кажется что это будет плюс клик по выбору отеля.
Фильтры пока не устроили, у меня не получилось сделать вывод фильтра при display:block у view и в фильтре выводятся все отели, а мне нужно чтобы пользователь выбирал только из своих отелей. Я придумал громоздкое решение, если никто не подскажет как передать несколько аргументов.
Я прочитал что нужно возвращать массив аргументов
http://drupal.org/node/70145
Я не программист подскажиет плс где ошибка.
<?php$type = 'hotel';
$sql = "SELECT n.nid FROM node n WHERE n.uid = ";
$sql.=arg(1);
$sql.=" AND n.type = '";
$sql .= $type;
$sql .= "'";
$nids = db_result(db_query($sql));
return $nids;?>
<?php
$type = 'hotel';
$arg = arg(1); $sql = db_query("SELECT n.nid FROM node n WHERE n.uid = %d AND n.type = '%s'", $arg, $type);
while($nid = db_fetch_object($sql)){
$array[] = $nid->nid;
}
return $array;
?>
Пробуй так.
если $arg верен, то вернется массив nid.
P.S.
Если $type = 'hotel';, постоянная величина, то можно так.
<?php$sql = db_query("SELECT n.nid FROM node n WHERE n.uid = %d AND n.type = 'hotel'", $arg);?>
Чет ничего не понятно..
Есть материалы(Заявки) с полем NodeReference, ссылающимся на одно ноду(Отель)
Надо выбрать все Заявки на конкретный отель.
Проблема передать вьюсу ид отеля?
Можно экспозед-фильтрами... можно через ссылку для вьюся с аргументом , например: site_name.ru/hotels/123
(адрес для вьюса будет site_name.ru/hotels/%, где 123 - ид отеля)
iHappy, спасибо, но похоже что массив не принимает, несмотря на написанное в статье. я делал
<?php $array = array(10,5);
return $array;?>
и он пишет ошибку
warning: html_entity_decode() expects parameter 1 to be string, array given in /home/u5193/domains/minihotels.org.ua/sites/all/modules/views/handlers/views_handler_field.inc on line 706.
Буду делать как сказал orion76, это немного сложней для пользователя и работать будет.
Спасибо за помощь! Теперь я смог сформулировать суть моего вопроса
Как передать несколько аргументов вьюсу в блок не используя урл? Попробую на орге спросить.
выводите вьюслм материал "Заявки"
Добавляете связь(Relationships) c Отелем по ид-отеля=значение поля связи
Добавляете фильтр : Автор Отеля - текущий пользователь.
как-то так...
выведуться все заявки отеля принадлежащего текущему пользователю.
orion76 спасибо! я не до конца понимаю relationships поэтому практически не использую