2011-04-12 8 views
1

Going un peu fou ici ... :)Drupal 6 - champs de profil contenu dans la page-user.tpl.php

Je suis juste essayer d'ajouter des champs de CCK à partir d'un type de contenu contenu du profil dans la page utilisateur .tpl.php (Je crée une page de profil d'utilisateur très sur le thème).

Il semble y avoir deux méthodes, qui ont tous deux un désavantage unique que je ne peux pas sembler surmonter:

méthode

'profil de contenu $.

$var = $content_profile->get_variables('profile'); 

print $var['field_last_name'][0]['safe']; 

Cela tombe bien, sauf que je ne peux pas sembler passer l'utilisateur actuellement en vue de content_profile $, et il montre donc toujours l'utilisateur connecté.

La méthode '$ content profile load'.

$account_id = arg(1); 
$account = user_load($account_id); 
$user_id = $account->uid; 

$var = content_profile_load('profile', $user_id); 

print $var->field_first_name[0]['value']; 

Très bien, mais maintenant je ne peux pas accéder aux champs pleins rendus, seules les valeurs simples (à savoir si le champ a paragraphes ils ne seront pas visibles).

Comment puis-je avoir les deux choses à la fois? En d'autres termes, comment puis-je afficher les champs relatifs à l'utilisateur actuellement visualisé (le format 'safe' dans 1)?

J'ai fait des recherches Google et googlé et je finis par tourner en rond. :(

Cheers, James

+0

Où voulez-vous les utiliser? S'il vous plaît expliquer un peu sur ce que vous essayez d'accomplir – yoavmatchulsky

Répondre

5

Votre méthode de charge de profil de contenu semble être le plus proche de ce que vous voulez.

Dans votre exemple:

$account_id = arg(1); 
$account = user_load($account_id); 
$user_id = $account->uid; 

$var = content_profile_load('profile', $user_id); 

print $var->field_first_name[0]['value']; 

Le var $ est juste un objet de nœud. Vous pouvez obtenir les "champs rendus complets" de plusieurs façons (en supposant que vous entendez votre champ avec un filtre appliqué).

La chose la plus importante à vérifier est que votre champ est configuré correctement.

Aller à: admin/contenu/nœud de type/[type de noeud]/champs/field_ [nom-champ] pour configurer votre domaine et assurez-vous que dans traitement texte que vous avez "Texte filtré" sélectionné.

Si cela ne résout pas, essayez d'appliquer ceci:

content_view_field(content_fields("field_last_name"), $var, FALSE, FALSE) 

(plus d'informations sur ce ici: http://www.trevorsimonton.com/blog/cck-field-render-node-formatter-format-output-print-echo)

à la place de celle-ci:

print $var->field_first_name[0]['value']; 

si aucun de cela aide ... essayer quelques-unes des choses que j'ai sur mon blog à propos de ce problème: http://www.trevorsimonton.com/blog/print-filtered-text-body-input-format-text-processing-node-template-field-php-drupal

+0

Bravo pour la réponse en profondeur, encore besoin de faire quelques essais, mais quelques bonnes idées ici! – james6848

1

Lorsque vous créez une page de profil d'utilisateur, il est construit dans le mécanisme pour cela. Il suffit de créer un fichier modèle utilisateur, user_profile.tpl.php.

Lorsque vous utilisez le mécanisme intégré, vous avez automatiquement accès à l'objet $ compte de l'utilisateur que vous parcourez, y compris tous les champs cck du profil utilisateur.Vous avez les champs que vous recherchez sans avoir à charger par programme l'utilisateur

I avoir un champ appelé profil_bio et je suis capable de cracher toute marque qui est en sans jamais avoir à demander le compte $.

<?php if ($account->content[Profile][profile_bio]['#value']) print "<h3>Bio</h3>".$account->content[Profile][profile_bio]['#value']; ?> 
1

J'ai essayé de thématiser des profils de contenu en affichant des champs de nœud de profil à travers la page d'utilisateur avant et il me semble toujours un peu "hacky". Ce que j'aime beaucoup, c'est simplement d'aller à la page des paramètres de profil de contenu pour ce type de nœud et de régler l'affichage sur "Afficher le contenu complet". C'est bien et dandy sauf pour le balisage stupide comme le nom de type de noeud que le profil de contenu injecte.

une solution pour cela consiste à ajouter une fonction de prétraitement pour le modèle de profil de contenu. celui qui supprimera le titre $ et supprimera le nom de type de noeud qui apparaît normalement sur le profil.

function mymodule_preprocess_content_profile_display_view(&$variables) { 
    if ($variables['type'] == 'nodetypename') { 
    unset($variables['title']); 
    } 
} 

Une fonction similaire à celle-ci devrait faire l'affaire. Maintenant, pour les profils d'utilisateur de thème, vous pouvez simplement mettre en forme vos noeuds de profil comme d'habitude.

Questions connexes