Modifica modulo

9 contenuti / 0 new
Ultimo contenuto
Modifica modulo

Devo creare un blocco che permetta di vedere gli ultimi articoli visti di un negozio fatto con Ubercart. Ho trovato un modulo non ufficiale che funziona, ma non completamente come mi serve http://www.ubercart.org/forum/support/4357/recently_viewed_products_list

Il modulo linkato crea un blocco in cui fa vedere titolo con link al nodo, immagine, e prezzo dei nodi visti recentemente.

A me serve mostrare solo l'immagine che linka al nodo ed ovviamente non essendo un programmatore non riesco. Ho eliminato le parti che non mi servono ma non riesco a capire cosa devo invece aggiungere...

Il codice che genera l'immagine del blocco è il seguente (già epurato):

function theme_uc_recent_products($products) {
  drupal_add_css(drupal_get_path('module', 'uc_recent_products') .'/uc_recent_products.css');
  $product_table = '<div id="recent-products">';
  foreach ($products as $nid) {
    $product = node_load($nid, NULL, TRUE);
    if (module_exists('imagecache') && isset($product->field_image_cache) && file_exists($product->field_image_cache[0]['filepath'])) {
      $imagelink = theme('imagecache', 'uc_thumbnail', $product->field_image_cache[0]['filepath'], $product->title, $product->title);
    }
    else {
      $imagelink = '';
    }
    $product_table .= '<div class="recent-product">';
    $product_table .= '<div class="recent-products-image">'. $imagelink .'</div>';
    $product_table .= "</div>";
    $count++;
  }
  $product_table .= "</div>";
  return $product_table;
}

Qualcuno potrebbe per favore aiutarmi ad aggiungere ciò che manca?

Grazie in anticipo :)

Dunque quasi ci sono. Ho modificato:

if (module_exists('imagecache') && isset($product->field_image_cache) && file_exists($product->field_image_cache[0]['filepath'])) {
      $imagelink = theme('imagecache', 'uc_thumbnail', $product->field_image_cache[0]['filepath'], $product->title, $product->title);
   }

con:

if (module_exists('imagecache') && isset($product->field_image_cache) && file_exists($product->field_image_cache[0]['filepath'])) {
      $imagelink = l(theme('imagecache', 'uc_thumbnail', $product->field_image_cache[0]['filepath'], $product->title, $product->title), "node/$nid", array() );
    }

Ora va quasi bene nel senso che l'url esce correttamente ma l'apertura del tag img < e e la chiusura > vengono trasformati in html quindi non compaiono le immagini ma il percorso di queste.

Un aiutino?

Ciao vado un po' a memoria che non ho sottomano un drupal di test.

$imagelink = theme('imagecache', 'uc_thumbnail', $product->field_image_cache[0]['filepath'], $product->title, $product->title);
$imagelink = l($imagelink,url('node/'.$product->nid),array('absolute' => true,'html' => true));

La prima riga è la tua, la seconda è quella da aggiungere.

Praticamente tu crei l'immagine, ma non la leghi. la funzione "l" ti permette di creare un link.

M.

--
Michel 'ZioBudda' Morelli -- [email protected]
Sviluppo applicazioni CMS DRUPAL e web dinamiche -- Corsi Drupal -- Amministrazione Drupal -- Hosting Drupal

Mi sembra che hai già fatto un bel lavoro. Guardando specificamente la parte che prende il nodo:

    if (module_exists('imagecache') && isset($product->field_image_cache)
        && file_exists($product->field_image_cache[0]['filepath'])) {
      $imagelink = theme('imagecache', 'uc_thumbnail',
                         $product->field_image_cache[0]['filepath'], $product->title, $product->title);
    }
    else {
      $imagelink = '';
    }

possiamo fare due modifiche. Primo mettiamo il titolo se non c'è un immagine, e poi aggiungiamo il link...
    if (module_exists('imagecache') && isset($product->field_image_cache)
        && file_exists($product->field_image_cache[0]['filepath'])) {
      $imagelink = theme('imagecache', 'uc_thumbnail',
                         $product->field_image_cache[0]['filepath'], $product->title, $product->title);
    }
    else {
      $imagelink = check_plain($product->title);
    }
    $final_link = l($imagelink, 'node/'. $product->nid, array('html' => true));
    $product_table .= '<div class="recent-product">';
    $product_table .= '<div class="recent-products-image">'. $final_link .'</div>';
    $product_table .= "</div>";

Mi sembra che ci sono troppi <div> nel output, io farei semplicemente
    $product_table .= '<div class="recent-product">'. $final_link .'</div>';

(Non testato, quindi senza garanzie)
HTH

John

Più imparo, più dubito.

Ragazzi, ma una bella e veloce vista (modulo views) no? :)

Ciao
Marco
--
My blog
Working at @agavee

Grazie a tutti!
Ho provato entrambe le soluzioni e funzionano alla grande :-)

@mavimo
La vista era la mia idea originale ma non sono riuscito a farla funzionare, ovvero non riesco a fargli prendere gli ultimi X nodi visitati.
Nel link che ho postato c'è anche una vista ma da errore di ordinamento.

hai attivato il modulo per il tracciamento delle visite?

Ciao
Marco
--
My blog
Working at @agavee

Cioè?
Oltre a tutti i componenti Views ho attivato il bonus pack come descritto nel link.

mavimo wrote:
hai attivato il modulo per il tracciamento delle visite?

Opss.. avevo letto tracciamento delle viste :-))))

Ora provo :-)