Ciao a tutti,
ho la necessita di inserire in una vista un link "aggiungi commento" per ogni articolo presente.
Ho visto che nella news come campi c'è "add comment link".
La mia vista è completamente personalizzata e per recuperare il campo ho fatto <?php print $fields['comments_link']->content; ?>
Fin qui tutto bene solo che mi restituisce
<ul class="links inline">
<li class="comment_add first last">
<a title="Aggiungi un nuovo commento a questa pagina." href="/comment/reply/10#comment-form">Aggiungi un commento</a>
</li>
</ul>
Ma a me serve solo l'elemento poichè devo già inserirlo in una lista esistente...
Qualcuno conosce un rimedio?
Ho pensato anche di utilizzare l'opzione "Rewrite the output of this field" o "Output this field as a link" ma o non funziona o non ho capito come funziona...
Mi basterebbe anche solo capire come pulire il codice.
Grazie!
Ciao!
Il link per aggiungere commenti viene creato dalla funzione
comment_link
inmodules/comment/comment.module
riga 406 - Drupal 6, usandogrep -rn "comment_add" *
Per la vista, viene creato (usando
comment_link
) dalla funzionerender
insites/all/modules/views/modules/comment/views_handler_field_comment_node_link.inc
riga 56 - Drupal 6, usandogrep -rn "comment_link" *
Quest'ultimo chiama
Allora, la funzione (base - protrebb'essere sovrascritto dalla tua tema)
theme_links
si trova inincludes/theme.inc
riga 1144.Adesso hai 'solo' da aggiungi il risultato di
comment_link
(un array) all'array dei tuoi links, poi chiamare la funzionatheme
per convertire il tutto in HTML.Questo se hai l'array dei links, ovvio. E' qui non ho capito bene; se "devo già inserirlo in una lista esistente" referisci ad un array PHP siamo a posto, se invece referisci ad una lista HTML, allora devi tornare indietro un passo all'array PHP - un pò come abbiamo fatto qui per rintracciare 'il colpevole' del HTML che avevi descritto.
HTH
John
Più imparo, più dubito.
Ciao e grazie per la risposta!
si paricamente ho una cosa del genere...
<ul id="tools">
<li class="add_comment"><?php print $fields['comments_link']->content; ?></li>
<li class="rss_feed"><a href="blog/rss">Rss Feeds</a></li>
</ul>
A questo punto, suggerisco usare la tecnica di Views - in questo caso non è ottimale, ma dovrebbe funzionare...
$tools_links = comment_link('node', $node, $teaser); // links per commenti
$tools_links['rss_feed'] = array( // aggiungere link RSS feeds...
'title' => t('RSS Feeds'),
'href' => "blog/rss",
'attributes' => array(
'class' => 'rss_feed',
),
);
theme('links', $tools_links, array('id' => 'tools')); // converte il tutto in HTML
Non ho testato questo codice, ma credo che dovrebbe funzionare...più o meno
John
Più imparo, più dubito.
Mh... non funziona...
mi crea un array ma con all'interno solo gli rss:
Array (
[rss_feed] => Array (
[title] => RSS Feeds
[href] => blog/rss
[attributes] => Array (
[class] => rss_feed
)
)
)
Non dovrebbe esserci dentro anche il link "aggiungi commento"?
Ho fatto una prova, usando Garland ma non importa, in
node.tpl.php
ho aggiunto (riga 31):Con ottimo risultati. Il
dsm()
mi da:... (Array, 2 elements)
comment_add (Array, 4 elements)
title (String, 20 characters ) Aggiungi un commento
href (String, 17 characters ) comment/reply/251
attributes (Array, 1 element)
title (String, 43 characters ) Aggiungi un nuovo commento a questa pagina.
fragment (String, 12 characters ) comment-form
rss_feed (Array, 3 elements)
title (String, 9 characters ) RSS Feeds
href (String, 8 characters ) blog/rss
attributes (Array, 1 element)
class (String, 8 characters ) rss_feed
E l'HTML viene fouri così (ho ripulito un pò per vedere l'annidamento):
<ul id="tools">
<li class="comment_add first">
<a href="/comment/reply/251#comment-form" title="Aggiungi un nuovo commento a questa pagina.">
Aggiungi un commento
</a>
</li>
<li class="rss_feed last">
<a href="/blog/rss" class="rss_feed">RSS Feeds</a>
</li>
</ul>
Come dice il sito http://www.sisal.it - ritenta sarai più fortunato...
John
Più imparo, più dubito.
Il problema è che io non devo inserirlo in un nodo ma in una vista (es. views-view-fields--blog--block.tpl.php)
mi restituisce questo:
<ul id="tools">
<li class="rss_feed first last">
<a class="rss_feed" href="/__CUTLER/drupal/blog/rss">RSS Feeds</a>
</li>
</ul>
quindi manca tutta la parte del commento...
Allora bisogna usare più o meno lo stesso codice che usa Views stesso, citato sopra.
In realtà, manca il
$node
. Non ho capito cosa c'è dentro$fields
nel tuo codice, ma devi trovare ilnid
del node, e poi costruire il$node
. Fatto quello, dovrebbe andare...Più imparo, più dubito.
Forse mi sto complicando la vita...
Ma trovare semplicemente il link al post relativo e aggiungerci un ancor? (nodo#comments) ?
alla fine ho fatto
<a href="node/<?php print $node->nid; ?>#contact-form">Aggiungi contatto</a>
e ho tagliato la testa al toro anche se è poco bello perchè l'url non usera gli aliasurl.
Ciao e grazie
Per usare gli alias, puoi usare la funzione l()
Odiosi spam
http://www.chromeos.eu