Je peux facilement ajouter NID (Node ID) en tant que champ dans ma vue, puis le rendre en tant que classe pour la ligne de vues en utilisant des modèles de remplacement pour la classe de ligne d'une vue typique non formatée. (Voir capture d'écran).
Cependant, je voudrais rendre le NID sous la forme d'un ID pour chaque ligne à utiliser pour certains thèmes spéciaux que je fais. Si j'utilise devel themer, je vois que mon modèle est views-view-unformatted.tpl.php
afin que je puisse bien sûr copier ce modèle dans le dossier de modèles de mon thème avec un nom personnalisé spécifique à ma vue, puis le thème.
La ligne de code appropriée dans le modèle qui rend la classe de ligne est:
<div<?php if ($classes_array[$id]) { print ' class="' . $classes_array[$id] .'"'; } ?>>
Si je le change en:
<div<?php if ($classes_array[$id]) { print ' class="' . $classes_array[$id] .'"'; } ?>
id="<?php print $fields['nid']->content ?>">
... Cependant, cela ne fonctionne pas car je ne pense pas que les champs soient disponibles à ce niveau dans la ligne des vues.
Donc, en ce moment, ma sortie rendue est:
<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">
... quand j'aimerais que ce soit
<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">
Ma question, existe-t-il un moyen de simplement rendre le NID associé là où je le veux comme identifiant autre que la méthode que j'essaie d'utiliser?
Dans la plupart des modèles de vues, l'intégralité de l'objet $view
Est disponible. Donc, en supposant que vous avez un champ nid
dans la ligne, vous devriez pouvoir y accéder avec quelque chose comme ceci:
$view->result[$id]->nid
alors, donne
id="my-nid-is-<?php print $view->result[$id]->nid; ?>">
essayez dans votre modèle.
Si cela ne fonctionne pas exactement, une print_r($view->result);
en haut du modèle vous donnera un aperçu de ce avec quoi vous devez travailler.
Le NID est ajouté via les paramètres de format en dernier dans la chaîne de classe; '$ classes_array [$ id]
Obtenez la dernière classe dans la chaîne de classe (qui est le Nid ajouté via les vues) Ensuite, ajoutez simplement $ last comme ID approprié à la ligne après les classes
alors changez ceci en:
<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 . '"';
} ?>>