Link "aggiungi commento" [RISOLTO]

12 contenuti / 0 new
Ultimo contenuto
Link "aggiungi commento" [RISOLTO]

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 in modules/comment/comment.module riga 406 - Drupal 6, usando grep -rn "comment_add" *
Per la vista, viene creato (usando comment_link) dalla funzione render in sites/all/modules/views/modules/comment/views_handler_field_comment_node_link.inc riga 56 - Drupal 6, usando grep -rn "comment_link" *
Quest'ultimo chiama

<?php
 theme
('links', $links, array('class' => 'links inline'));
?>
per creare l'HTML che vedi tu.
Allora, la funzione (base - protrebb'essere sovrascritto dalla tua tema) theme_links si trova in includes/theme.inc riga 1144.

Adesso hai 'solo' da aggiungi il risultato di comment_link (un array) all'array dei tuoi links, poi chiamare la funziona theme 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):

<?php
  $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',
    ),
  );
 
dsm($tools_links); // solo se hai Devel modulo abilitato...
 
print theme('links', $tools_links, array('id' => 'tools')); // converte il tutto in HTML
?>

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...

yoris00 wrote:
Il problema è che io non devo inserirlo in un nodo ma in una vista (es. views-view-fields--blog--block.tpl.php)

Allora bisogna usare più o meno lo stesso codice che usa Views stesso, citato sopra.
yoris00 wrote:
...quindi manca tutta la parte del commento...

In realtà, manca il $node. Non ho capito cosa c'è dentro $fields nel tuo codice, ma devi trovare il nid 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