2009-03-21 9 views
2

Je veux imprimer un commentaire individuel en drupal basé sur son ID de commentaire. Comment puis-je faire ceci? Google et d'autres sources ne m'ont rien donné. Je vous remercie.Comment imprimer un seul commentaire dans drupal?

+0

Dans quel contexte est-ce? Voulez-vous avoir une page qui est juste un commentaire? Un bloc? Faites-en partie d'un modèle de page? Imprimer un seul commentaire dans un modèle de noeud? –

Répondre

3

suggestion Eaton est bon (sauf qu'il est {comments}, pas {comment}) si vous avez besoin pour afficher le commentaire comme base, il fait, y compris les informations provenant du nœud. Sauf l'implémentation par défaut theme_comment dans modules/comment/comment.tpl.php n'utilise pas $ node.

Cependant, je le ferais légèrement différemment, parce que si vous avez besoin d'extraire un seul commentaire, l'afficher avec le formatage de contenu normal fourni par comment.tpl.php est susceptible d'être inapproprié.

function print_comment($cid) { 
    $sql = "SELECT * FROM {comment} c WHERE c.cid = %d"; 
    if ($comment = db_fetch_object(db_rewrite_sql(db_query($sql, $cid), 'c'))) { 
    return theme('my_special_comment_formatting', $comment); 
    } 
} 

Et bien sûr, définissez cette spéciale formatage dans obtenir des commentaires hook_theme() mise en œuvre de votre module, inspiré par ce que comment.tpl.php fait.

MISE À JOUR 2014-02: notez qu'il s'agit d'une question/réponse de 2009. Dans Drupal 8, vous voulez juste ne pas accéder à la base de données SQL hypothétique sous-jacente (et ne serait pas le faire comme ça de toute façon, mais utilisez DBTNG), mais il suffit d'utiliser quelque chose comme:

if ($comment = entity_load('comment', $cid)) { 
    return entity_view($comment, $view_mode); 
} 
+0

Hah. Merci d'avoir noté la distinction commentaire/commentaire. J'avais ouvert api.drupal.org et je n'avais pas remarqué que je regardais la version D7 du code - le nom de la table est devenu singulier dans la nouvelle version de dev. – Eaton

+0

En outre, vous obtiendrez des notifications PHP s'il n'y a pas d'objet node passé - $ node-> type est utilisé pour construire des options de template possibles (comme comment-story.tpl.php) dans le phptemplate \ _processus par défaut Fonction \ _comment – Eaton

+0

'phptemplate_preprocess_comment' ne sera pas utilisé lors de l'appel du thème ('my_special_comment_formatting'). Mais bonne prise pour 'theme ('commentaire')'! Je n'avais vérifié que le modèle, pas la fonction de pré-traitement. – FGM

3
 
function print_comment($cid) { 
    $sql = "SELECT * FROM {comments} WHERE cid = %d"; 
    if ($comment = db_fetch_object(db_query($sql, $cid))) { 
    $node = node_load($comment->nid); 
    return theme('comment', $comment, $node); 
    } 
} 
2

Aucune raison d'utiliser les sql pour ce faire, deux appels de fonction drupal api est tout ce qu'il faut.

function print_comment($cid) 
{ 
    $comment = _comment_load($cid); 
    return theme('comment',$comment); 
} 
Questions connexes