Визуализация идентификатора строки представлений с использованием NID (идентификатор узла)


Я могу легко добавить NID (идентификатор узла) в качестве поля в моем представлении, а затем отобразить его как класс для строки представлений, используя шаблоны замены для класса строк неформатированного типичного представления. (См. Снимок экрана).

enter image description here

Однако я хотел бы отобразить 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 там, где я хочу, как идентификатор, отличный от метода, который я пытаюсь использовать?

Author: Danny Englander, 2013-04-18

3 answers

В большинстве шаблонов представлений доступен весь объект $view. Итак, предполагая, что у вас есть поле nid в строке, вы должны иметь возможность получить к нему доступ с помощью чего-то вроде этого:

$view->result[$id]->nid

Итак, давайте

id="my-nid-is-<?php print $view->result[$id]->nid; ?>">

Попробуйте в своем шаблоне.

Если это не работает точно, print_r($view->result); вверху шаблона даст вам представление о том, с чем вам придется работать.

 9
Author: Jimajamma, 2013-04-18 18:18:55

Идентификатор 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 . '"';  
 } ?>>
 1
Author: jorisx, 2014-12-16 06:16:05

Вам нужно использовать 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.

 -1
Author: Daniele Napolitano, 2013-04-18 16:26:22