Визуализация идентификатора строки представлений с использованием NID (идентификатор узла)
Я могу легко добавить NID (идентификатор узла) в качестве поля в моем представлении, а затем отобразить его как класс для строки представлений, используя шаблоны замены для класса строк неформатированного типичного представления. (См. Снимок экрана).
Однако я хотел бы отобразить NID в виде идентификатора для каждой строки для использования в некоторых специальных темах, которые я делаю. Если я использую тему разработки, я вижу, что мой шаблон views-view-unformatted.tpl.php
, поэтому я, конечно, могу скопировать этот шаблон в папку шаблонов моей темы с пользовательское имя, специфичное для моего представления, а затем его тема.
Соответствующая строка кода в шаблоне, отображающем класс строк, выглядит следующим образом:
<div<?php if ($classes_array[$id]) { print ' class="' . $classes_array[$id] .'"'; } ?>>
Если я изменю его на:
<div<?php if ($classes_array[$id]) { print ' class="' . $classes_array[$id] .'"'; } ?>
id="<?php print $fields['nid']->content ?>">
...Однако это не работает, так как я не думаю, что поля доступны на этом уровне в строке представлений.
Так что, по сути, прямо сейчас мой вывод:
<div class="views-row views-row-1 views-row-odd views-row-first mynid-63">
<div class="views-row views-row-2 views-row-even mynid-64">
... когда я хотел бы, чтобы это было
<div class="views-row views-row-1 views-row-odd views-row-first" id="mynid-63">
<div class="views-row views-row-3 views-row-even" id="mynid-64">
Мой вопрос, есть ли способ просто отобразить связанный NID там, где я хочу, как идентификатор, отличный от метода, который я пытаюсь использовать?
3 answers
В большинстве шаблонов представлений доступен весь объект $view
. Итак, предполагая, что у вас есть поле nid
в строке, вы должны иметь возможность получить к нему доступ с помощью чего-то вроде этого:
$view->result[$id]->nid
Итак, давайте
id="my-nid-is-<?php print $view->result[$id]->nid; ?>">
Попробуйте в своем шаблоне.
Если это не работает точно, print_r($view->result);
вверху шаблона даст вам представление о том, с чем вам придется работать.
Идентификатор NID добавляется через настройки формата как последний в строке класса; '$classes_array[$id]
Получить последний класс в строке класса (который является идентификатором Nid, добавленным через представления) Затем просто добавьте $last в качестве правильного идентификатора в строку после классов
Поэтому измените это на:
<div<?php if ($classes_array[$id]) { print ' class="' . $classes_array[$id] .'"'; } ?>>
Кому:
<div<?php if ($classes_array[$id]) {
$class_string = explode(' ', $classes_array[$id]);
$last = end($class_string);
print ' class="' . $classes_array[$id] .'"' . ' id="' . $last . '"';
} ?>>
Вам нужно использовать views-view-fields--[name].tpl.php
для построения div основной строки. Итак, введите свои поля "представления-представления":
<div id="<?php print $row->nid; ?>">
<?php foreach ($fields as $id => $field): ?>
<?php if (!empty($field->separator)): ?>
<?php print $field->separator; ?>
<?php endif; ?>
<?php print $field->wrapper_prefix; ?>
<?php print $field->label_html; ?>
<?php print $field->content; ?>
<?php print $field->wrapper_suffix; ?>
<?php endforeach; ?>
</div>
Основная проблема заключается в том, что у вас есть два тега <div>
. Таким образом, вы можете выбрать удаление div в views-view-unformatted.tpl.php
.