Вы здесь

Шаблон поля views, не все поля в $row

1

Приветствую.
Строю довольно сложную вьюшку и активно использую шаблоны полей view ( views-view-field.tpl.php).
Мне нужно в одном поле вывести значение другого, с некоторыми полями я сделал это просто извлекая значение поля из массива $row, но многих полей в $row нету вообще (также не нашел в $field и $view).

В частности проблема есть с:

  • полями флагов модуля flag
  • Ссылка на удаление ноды
  • Ссылка на редактирование ноды
  • Ссылка на комментирование ноды

Как же вывести хотя бы ссылки на редактирование и удаление ноды в шаблоне поля?

P.S.
Делал ссылки в шаблоне вручную через l(), но такой вариант мне не подходит (наверное).
Они показываются всем юзерам, надо вручную контролировать доступ к ним, как это сделать ещё не разобрался, а с выводом через views они скрываются сами, если нужных прав нет.

<?php print l('<i class="delete icon"></i>Удалить', 'node/' . render($row->nid) . '/delete', array('html' => true)); ?>
Версия Drupal: 
7.x
Категория: 
Theming
Связанные проекты: 
Views
Вопрос задан 09.08.2015 - 01:13

Ответы

0

Я думаю стоит смотреть в сторону данного хука: template_preprocess_views_view_fields()

Ответ дан 09.08.2015 - 01:20
Аватар пользователя Niklan
Niklan
445

Не очень понял, чем этот хук мне может помочь, мне бы разобраться откуда рендерятся поля, которых нет в $row

Комментарий оставлен 09.08.2015 - 01:44

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

Если нет в row, значит добавьте их в представлении.

Комментарий оставлен 09.08.2015 - 11:41

Они есть в представлении, но их нет ни в $row массиве, ни в $field (по крайней мере, я их не нашел)
Вот и пытаюсь выяснить, в каком же массиве они идут.

Комментарий оставлен 12.08.2015 - 04:57


Поля в представлении есть

Полей в массиве $field не вижу

Комментарий оставлен 12.08.2015 - 05:02
0

Посмотрите https://api.drupal.org/api/views/theme%21views-view-fields.tpl.php/7 .

Сделайте dpm($fields) внутри, посмотрите как выглядит массив для вывода полей, может что подскажет.

Ответ дан 09.08.2015 - 10:19

как писал в самом вопросе - я не нашел этих полей ни в $row ни в $field (искал через dsm();), либо глаза кривы, либо из там нет...

Комментарий оставлен 12.08.2015 - 04:55
0

Разве эти адреса не стандартные?

Ссылка на удаление ноды

node/nid/delete

Ссылка на редактирование ноды

node/nid/edit

Ссылка на комментирование ноды

comment/reply/nid#comment-form

Ответ дан 09.08.2015 - 16:10

Если правильно понял, то поясню так:
Есть одна вьюшка в виде таблицы с полями "ссылка на ноду", "ссылка на редактирование ноды", "ссылка на удаление ноды".

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

Но мне не подходит вариант стандратного вывода, мне нужно сделать такой дропдаун

Единственный способ, которым у меня получилось его сделать - сверстать, в шаблоне поля views,
логично было бы вывести в шаблоне поля "редактировать", "удалить" и т.д., но в массивах данных нет этих полей!
Сейчас пункты меню выводятся с помощью функции l(), т.е. нет никакой проверки на права.

Комментарий оставлен 12.08.2015 - 04:51

Сейчас пункты меню выводятся с помощью функции l(), т.е. нет никакой проверки на права.

Ну вы можете сделать вручную проверку на права через user_access().

Комментарий оставлен 12.08.2015 - 19:06