Open source (linux, ubuntu, wordpress, firefox), homebrew e altro.
 Open source (linux, ubuntu, wordpress, firefox), homebrew e altro.

Bloggr

WordPress come CMS: mini loop e thumbnail

In questo post voglio illustrare le funzioni che ho usato per modificare la home page di gratisinlinea.it rendendola più statica, come abbiamo visto nella prima parte WordPress come CMS: spostare il Blog.

In particolare illustrerò le funzioni PHP di WordPress che ho usato, senza entrare nel merito del tema e degli stili CSS perché tutti i temi sono differenti e non si può generalizzare, tuttavia se sapete come è fatto il vostro tema dovreste essere in grado di apportare le modifiche descritte.

Questi sono i punti principali delle modifiche:

  • aggiungere un mini loop per mostrare l’ultimo post in formato “big”
  • aggiungere un mini loop nella colonna di sinistra per i 5 post successivi al “big”
  • aggiungere un mini loop nella colonna di destra per mostrare dei post presi da una particolare categoria nascosta
  • aggiungere delle miniature (thumbnail) nei vari mini loop

L’ultimo punto, l’aggiunta delle miniature, è facoltativo e dipende dalle vostre abitudini. Se infatti non inserite mai immagini o inserite nei post immagini piccole non ci sono problemi di formattazione. Se diversamente avete creato dei post pensando all’impaginazione a tutta pagina, quindi con immagini di 400 o 500 pixel, queste immagini, anche se “non mostrate” nella parte eccedente, non sono belle da vedere in una colonna da 250 / 300 pixel di larghezza.

La soluzione che vedremo, o meglio le soluzioni che ho usato io, sono l’uso della funzione thumbnail di WordPress per inserire una delle immagini del post (o di altri post) in formato ridotto, e l’inserimento del testo tramite le funzioni the_excerpt e the_content_rss al posto della funzione the_content. Infatti solo quest’ultima funzione preleva anche le immagini dal post, le altre 2 no. Inoltre the_content_rss permette di settare il “taglio” del testo dopo un certo numero di parole.

Loop Regolare

Nella pagina page-index.php del tema, dobbiamo individuare il loop originale e farlo sparire.
Dovrebbe presentarsi come qualcosa del genere:

<?php if ($posts) : foreach ($posts as $post) : start_wp(); ?>
// Contenuto
<?php endforeach; else: ?>
<p><?php _e('Nessun articolo trovato.'); ?></p>
<?php endif; ?>

La prima riga è l’inizio del Loop, al posto di // Contenuto troverete codice vario del vostro tema, e la terza e quinta riga sono la fine del Loop. Questo codice va eliminato tutto, se dopo l’eliminazione, visualizzando la pagina non ricevete errori PHP avete rimosso la giusta porzione di codice.

Per saperne di più sul Loop potete dare un’occhiata a questa pagina su WordPress.org.

Mini Loop

Il Loop di WordPress serve a far ripetere ciclicamente lo stesso codice per un certo numero di volte, per mostrare gli ultimi 10 post il Loop verrà ripetuto 10 volte.

Il mini Loop che ho usato è molto più flessibile di quello originale (naturalmente l’ho trovato con Google, io non sarei capace di scrivere una sola riga di PHP).

Potendo ripetere questo mini Loop tutte le volte che si vuole all’interno della nostra nuova pagina, non ci sono limiti agli utilizzi. Nel mio caso ho ripetuto il mini-loop 3 volte con delle varianti.

L’unica controindicazione di questo mini-loop è stata (nel mio caso) il non riconoscimento del taglio degli articoli che venivano quindi mostrati interamente con tutte le immagini a dimensione reale, ma questo problema l’ho risolto con un po’ di smanettamento:

<?php query_posts('cat=0&showposts=1'); ?>
<?php while (have_posts()) : the_post(); ?>
<h1><a href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title(); ?>"><?php the_title(); ?></a></h1>
<small><em><?php the_excerpt(); ?></em></small>
<img src="<?php echo get_post_meta( $post->ID, 'thumbnail', true ); ?>" alt="" height="80" />
<?php the_content_rss('', FALSE, '', 65); ?><a href="<?php the_permalink() ?>" rel="bookmark" title="<?php the_title(); ?>">leggi il resto...</a>
<?php endwhile; ?>

Attenzione: la numerazione delle righe che segue è in base a come mostrate sopra, nella realtà le righe sono solo 7.
Le prime 2 righe sono l’inizio del Loop, nella prima riga potete specificare il numero dei post da mostrare (showposts=1), ma sopratutto è possibile scegliere una o più categorie da dove prelevare i post, escludere una o più categorie, pescare uno specifico post o una singola pagina.
La terza e quarta riga mostrano il titolo del post, naturalmente questo codice potete modificarlo a vostro piacere.
La quinta riga estrae il riassunto del post (facoltativo).
Sesta e settima riga servono per visualizzare l’immagine che comunque ci dovremo ricordare di impostare in ogni singolo post (istruzioni sotto). L’anteprima è impostata a 80 pixel in altezza mentre nelle 2 colonne sotto l’ho impostata quadrata a 60×60 pixel.

Ottava e nona riga aggiungono il contenuto del post prelevato tramite Feed RSS, quindi senza formattazione (Il numero 65 indica le parole da mostare, nei post nelle mini colonne ho usato un valore di 40).

Esempi:
cat=0 (post da tutte le categorie)
cat=-1,-2,-3 (post da tutte le categorie tranne la 1, la 2 e la 3)
p=5 (mostra il post con ID 5)
page_id=7 (mostra la pagina con ID 7)
cat=0&showposts=5&offset=1 (nella colonna di sinistra, per evitare di mostrare l’ultimo post 2 volte visto che viene mostrato in alto, si aggiunge offset=1 per mostrare a partire dal penultimo. Se naturalmente in alto mostriamo gli ultimi 3 post dovremo impostare offset=3.

Scegliere l’immagine da mostrare come miniatura

Questa è la parte meno piacevole, perché in ogni singolo post vi dovrete ricordare di impostare un’immagine da mostrare come miniatura. Di buono c’è che potete scegliere una qualsiasi delle immagini del post, e non per forza la prima.

Dopo aver effettuato questa operazione la prima volta, dal secondo post troverete la voce Thumbnail nel menù a tendina, dovrete solo aggiungere l’indirizzo dell’immagine nel campo Valore.

Questo è il tema di Gratisinlinea oggi. Naturalmente nulla impedisce di aggiungere altra “roba” nella home page: ultimi commenti, post più votati, post più visitati, statistiche del blog etc.

link → http://codex.wordpress.org/Template_Tags/query_posts

  • Se ti è piaciuto l'articolo WordPress come CMS: mini loop e thumbnail lo puoi condividere inserendo questo codice:

    <a href="https://www.pietrodigiorgio.it/775/wordpress-come-cms-mini-loop-e-thumbnail/">WordPress come CMS: mini loop e thumbnail</a>

8 Commenti

  1. manu

    grandissimo tutorial… tralaltro mi ha risolto anche il problema dei loop nei template… come? copiando il miniloop sopra…
    grazie cmq davvero insegna molto nella costruzione dei temi…
    salutoni

    manu

  2. pi3tr0

    @ dockside

    premesso che non idea di come è fatto geekissimo, puoi usare le istruzioni di questo stesso post.

    fermo restando che per impaginazione e fogli di stile devi sbrigartela da solo (o con google), imposta il primo mini loop con 4 post usando il codice “the_content” standard del tuo tema
    quindi

    <?php query_posts(‘cat=0&showposts=4‘); ?>
    <?php while (have_posts()) : the_post(); ?>
    … content standard del tuo tema
    <?php endwhile; ?>

    colonna sinistra:

    <?php query_posts(‘cat=0&showposts=6&offset=4‘); ?>
    <?php while (have_posts()) : the_post(); ?>

    con un contenuto tipo questo
    <h1><a href=”<?php the_permalink() ?>” rel=”bookmark” title=”<?php the_title(); ?>”><?php the_title(); ?></a></h1>
    <?php the_excerpt(); ?><a href=”<?php the_permalink() ?>” rel=”bookmark” title=”<?php the_title(); ?>”>leggi il resto…</a>

    <?php endwhile; ?>

    colonna destra:

    <?php query_posts(‘cat=0&showposts=6&offset=10‘); ?>
    <?php while (have_posts()) : the_post(); ?>

    contenuto tipo sinistra

    <?php endwhile; ?>

  3. pi3tr0

    nell’esempio hai 4 post standard, a sinistra 6 post impostati a partire dal quint’ultimo (&offset=4) e a destra altri 6 sfalsati di 10 (i 4 big + i 6 di sinistra)

  4. pi3tr0

    @ dockside

    :-) non è questione di pappa pronta, il problema è che le funzioni di wordpress sono standard e quindi applicabili sempre, mentre layout e fogli di stile sono differenti da sito a sito e di conseguenza ognuno si deve arrangiare da solo

    in alternativa si può cercare un tema “free” che già implementi un certo layout e poi personalizzarlo, hai provato a dare un’occhiata a questi temi: http://www.pietrodigiorgio.it/bloggar/653-14-temi-gratuiti-per-wordpress/

    forse qualcuno della sezione “magazine” potrebbe offrirti qualche spunto

  5. Franco

    Ciao, un bell’articolo! E’ proprio quello che vogli fare al mio blog, soprattutto per avere la minatura ad inizio post..Solo che pare che ho fatto tutto alla lettera comedici e non mi dà segno di cambiamento..Io ho sostituito il codice che mi hai suggerito all’interno della pagina “page.php” del tema, in origine era così:


    <h1 id=”post-“>

    <?php the_content(‘continue’); ?>


    <?php link_pages(‘Pages: ‘, ”, ‘number’); ?>


    Dove sbaglio? Grazie! ciao

  6. pi3tr0

    @ Franco
    se vuoi modificare la home page è più semplice apportare le modifiche direttamente al file index.php

    se vuoi farlo con il file page.php devi modificare le impostazioni di wordpress dal pannello, come suggerito nel link ad inizio post

  7. Franco

    Ok ti ringrazio e vedo di smanettare un pò. Al momento non riesce proprio, sarà dal tipo di tema che ho scelto!! Grazie ancora

  8. Sabato

    Ho provato e riprovato senza riuscire nell’intento, forse la differenza del template è sostanziale aggiunto alla mia inesperienza in php basta a non risolvere l’oera preffissata, chiedo è possibile ricevere un aiuto, magari in pvt, pubblicando il mio sorgente della mia index.php?
    Grazie Sabato

Commenti chiusi

Open source (linux, ubuntu, wordpress, firefox), homebrew e altro.



pietrodigiorgio.it è un blog personale dove di tanto in tanto tratto temi che mi interessano.


Sei libero di: copiare, modificare ed esibire gli articoli in pubblico, a condizione di attribuirne la paternità sempre e comunque al sito pietrodigiorgio.it, indicando nome e URL.