Вы здесь

Как выполнить свой код при выводе Views?

0

Подскажите, на ваше усмотрение, какой способ наиболее кошерный. У меня есть вьюха, при посещении пользователем урла, по которому вьюха отдает контент, необходимо:

  • отправить GET на сервер (происходит редирект обратно с сервера ко мне);
  • сохранить то, что вернулось;
  • отправить POST.

По сути это REST. Уже не соображаю, как его разумно прицепить к друпаловской вьюхе, мозг плавится и предлагает сумасшедшие варианты.

Версия Drupal: 
7.x
Вопрос задан 20.02.2016 - 18:53

При чём здесь rest?

$result = drupal_http_request(...); // get
save_result($result->data); // save
$result = drupal_http_request(...); // post
Комментарий оставлен 20.02.2016 - 19:17

REST я написал, т.к. стучусь к API стороннего сервиса с REST архитектурой

drupal_http_request это не проблема, это я понимаю, с реализацией логики проблем нет (по крайней мере, пока что нет :D)

вопрос то насчет того, куда это прицеплять. прямо во вьюху не вариант, т.к. операцию необходимо провести один раз, а не на каждую выборку. в кастомном модуле не ясно какие хуки использовать, в _init не прокатывает. посоветуй, если не сильно лень, в какую сторону смотреть.

для более четкого понимания, обрисую картину. я подготовил вьюху для отображения во фрейме на ресурсе партнера, при просмотре этого фрейма (вьюхи) на сайте партнера, я планирую автоматом подтягивать данные пользователя через REST API партнера (для этого запросы) с согласия юзверя, само собой. и проблема не с написанием кода, а с подключением этого кода.

з.ы. в голове застряла мысль сделать в кастомном модуле форму и реализовать логику в конструкторе и сабмите, форму выводить в tpl темы и отправлять ее программно, но есть подозрения, что это не самый разумный выбор.

Комментарий оставлен 20.02.2016 - 23:21
function hook_views_pre_view(&$view, &$display_id, &$args) {
  if ($view->name == 'myview') {
    // логика
  }
}
Комментарий оставлен 21.02.2016 - 00:29

вот это я затупил дико, раз не сообразил про этот хук. спасибо большое!

Комментарий оставлен 21.02.2016 - 00:42

Ответы