web-dev-qa-db-fra.com

Comment utiliser Views PHP pour réécrire les résultats d'un champ?

J'utilise Vues PHP pour réécrire les champs dans les vues. Je peux accéder à toutes les variables MAIS celles qui ont un mode de construction. Dans mon cas, j'ai du contenu: Node (qui peut être construit en fonction de n'importe quel affichage), qui devrait être accessible en utilisant la variable $row->nodefield. Cependant, le contenu de cette variable est toujours vide. J'ai essayé avec d'autres variables, et chaque champ avec un mode de construction ne sera pas rendu en Vues PHP .

enter image description here

Est-ce un problème de conception ou manque-t-il quelque chose?

J'utilise Drupal 7 et Views 3

[~ # ~] modifier [~ # ~]

L'utilisation de dpm () sur les valeurs disponibles renvoie les informations suivantes:

dpm ($ ligne)

enter image description here

dpm (données $)

enter image description here

7
znat

Au-dessus de la section "Code de sortie", vous devez vérifier la variable $data Dans le champ "Valeur".

Habituellement, je viens de dpm($data) pour trouver le champ dont j'ai besoin. Vous pouvez ensuite l'enregistrer dans la variable $static['myvalue'] Pour l'utiliser dans le champ "Code de sortie".

C'est déroutant, mais pour une raison quelconque, si vous essayez uniquement les variables $row->xxx Dans la section "Code de sortie", elles sont vides ou définies sur le node-id.

6
Chance G

Les éléments de variables disponibles $row Dans les vues sont en quelque sorte inutiles pour obtenir des valeurs de champ. Mais vous n'avez pas besoin d'utiliser noad_load Pour obtenir les données dont vous avez besoin. Tout d'abord, comme d'habitude, cachez la sortie du champ que vous souhaitez réécrire, puis dans le champ Code de sortie de votre champ PHP, vous pouvez utiliser $data Comme ceci:

<?php echo check_markup($data->field_field_body[0]['rendered']['#markup'], 'nitf_body'); ?>

Dans ce cas, je supprime les balises interdites et attribuées au contenu pour une utilisation dans une exportation NITF. Si vous n'êtes pas sûr de ce qu'il y a à l'intérieur de $data, Vous pouvez bien sûr print_r($data) pour y jeter un œil.

3
Scott Lahteine

Conseil supplémentaire: le tableau $ data contient en effet les données brutes du nœud et peut être imprimé. Mais pour le rendre correctement, nous devons traiter les champs avec des fonctions comme field_view_field .

1
Druvision

Essayez-vous de faire cela à l'intérieur des vues? Pourquoi ne pas simplement thématiser le modèle de vues lui-même au lieu d'utiliser le PHP global? Je ne sais pas si print_r fonctionnera à l'intérieur du champ de vue. Si c'était moi, je cliquerais simplement sur theme-- > informations, vous verrez quelque chose comme views-view-field - MyViewName.tpl.php

(modifier, clarification) Sous le dossier de thème du module de vues, copiez "views-view-field.tpl.php" puis renommez-le en "views-view-field - MyViewName.tpl.php" et placez-le dans votre dossier/templates dans votre site eux. Dans le fichier, vous verrez quelque chose comme

<?php print $output; ?> 

Vous pouvez supprimer cela et ajouter manuellement tous vos champs comme

<div class="MyPrettyTitle"><?php print $row->_field_data['nid']['entity']->title; ?></div> 
<div class="MyNodeBody">
<?php print $row->_field_data['nid']['entity']->body['und'][0]['value'];?>
</div>

etc. Ou enveloppez la sortie $ avec ce que vous voulez.

De plus, je n'ai jamais eu beaucoup de chance avec DEVEL, j'utilise toujours juste:

<?php print var_dump($row);?> 

Ensuite, regardez la source de la page pour obtenir les variables. Peut-être que j'utilise mal DEVEL, mais je trouve que je peux obtenir les variables pour chaque ligne beaucoup plus facilement avec un ancien PHP var_dump.

1
DrupalMonster

J'ai passé deux jours pour trouver la solution. Le moyen le plus simple est de mettre à jour le "Module Php Views" en 7.x-2.x-dev. Le responsable a résolu ce problème dans leur version 2.x.

Vous pouvez télécharger à partir d'ici (Assurez-vous de télécharger 7.x-2.x-dev ): https: //www.drupal .org/project/views_php

L'espoir peut aider quelqu'un.

0
jmu

Vous ne devez JAMAIS stocker PHP dans votre base de données (et avec View PHP vous le ferez). Utilisez plutôt un crochet Vues pour modifier les résultats).

0
ssibal