Wordpress: come scrivere un reply to comment usando jQuery

Venerdì 3 Ottobre, 2008

Recentemente Cristiano Fino ha rilasciato un utile Plugin per Wordpress in grado di aggiugere due link ad ogni commento di un post (forse ne avete uno simile installato, visto che nella directory di Wordpress.org ne ho travati un paio, tuttavia essendo un software italiano sarebbe il caso di onorare l’ottimo lavoro fatto da Cristiano). Questi Link (reply & quote) permettono di rispondere e/o quotare l’autore di un commento, eseguendo quella noiosa operazione di inserire il carattere at (@) per indicare a chi ci si rivolge. In questo tutorial voglio illustrare - per gli utenti medio-esperti - il modo di aggiugere queste due funzionalità “a mano”, senza ricorrere all’istallazione di nessun Plugin. Inoltre sfrutterò le capacità di jQuery per la parte in Javascript. La tecnica che espongo è la medesima che ho usato per introdurre questa funzionalità in questo blog.

Nota: l’uso di un plugin è la miglior soluzione per chi tende a modificare spesso il proprio template Wordpress o, al limite, ha in previsione di farlo. Questo tutorial vuole solo mostrare come eseguire interventi mirati all’interno del codice Wordpress ed è dedicato ai più curiosi.

Modifica del file comments.php

La prima modifica che apportiamo è quella di inserire i link “reply” e “quote” all’interno di ogni commento. Per fare questo editiamo il file comments.php situato nella cartella del nostro tema. Questo file contiene tutte le istruzioni che consentono di visualizzare i commenti alla fine di un post. La sezione che ci interessa (che può variare leggermente da tema a tema) è il loop di creazione dei vari commenti, riconoscibile da:

Continua a leggere… »

Post correlati

Very short trick: PHP auto echo

Giovedì 2 Ottobre, 2008

In PHP è possibile usare una forma abbreviata, o contratta, per visualizzare variabili o ritorni di funzioni:

PHP:
  1. // al posto di
  2. <?php echo $miavar ?>
  3. // è possibile scrivere
  4. <?=$miavar?>
  5. // al posto di
  6. <?php echo miaFunc() ?>
  7. // è possibile scrivere
  8. <?=miaFunc()?>

Post correlati

Very short snippet: PHP word cut

Domenica 21 Settembre, 2008

Delimita una porzione di testo per il numero di "parole":

PHP:
  1. /**
  2. * String word cut
  3. *
  4. * @private
  5. */
  6. function wordCut($c, $l){
  7.     $c= explode(' ',$c);
  8.     for($i=0; $i<$l; $i++) $r[$i] = $c[$i];
  9.     $r= implode(' ', $r).'...';
  10.     return $r;
  11. }

Post correlati

Very short snippet: inviare email in HTML con PHP

Mercoledì 27 Agosto, 2008

Il codice necessario e sufficiente per inviare una semplice email in formati HTML, tramite il comando mail() di PHP è:

PHP:
  1. // preparo l'header per indicare il formato HTML
  2. $headers = "MIME-Version: 1.0\n".
  3.     "Content-type: text/html; charset=utf-8\n".
  4.     "From: Undolog.com <info@undolog.com>\n".
  5.     "Bcc: Copia <g.fazioli@undolog.com>\n";
  6.  
  7. mail( "Destinatario <info@e-lementi.com>", "Oggetto della mail", "<p>Corpo della mail in <strong>HTML</strong></p>", $headers );

Post correlati

Considerazioni sull’evoluzione dei linguaggi di svilluppo: AS2 vs AS3

Martedì 5 Agosto, 2008

Leggendo l'articolo di Julius ActionScript 2 o ActionScript 3? Facciamo chiarezza! vorrei fare alcune considerazioni sull'evoluzione "inversa" di alcuni strumenti di sviluppo per chi, come me, viene dalla programmazione C/C++.

Una caratteristica comune - negli ultimi anni - di alcuni ambienti di sviluppo è quella di raffinare la sinstassi del proprio linguaggio con il tempo. Si parte da un linguaggio ad alto livello, come il Lingo di Macromedia Director, Actionscript 1.0 delle prime versioni di Flash o Microsoft Visual Basic 3 per arrivare ad allinearsi con il tempo alle specifiche e alle - ormai consolidate - sintassi dettate dallo standard ECMA. Anche se paragonare un Microsoft Visual Basic 3 con Javascript o Actionscript non è del tutto corretto, entrambe le situazioni denotano una chiara evoluzione "inversa" rispetto agli albori della codifica di programmazione.
Unica eccezione, forse, in questo scenario, sono soluzioni come Java o PHP, entrambi con radici fortemente orientate al C/C++.

Concentrandoci su Actionscript, è chiara la volontà della casa prodruttrice (ora Adobe) ad allineare il linguaggio di Flash allo standard ECMA. Usare ancora Actionscript 2.0 non porta nessun concreto vataggio allo sviluppatore, soprattutto a chi non possiede le conoscenze di base proprie del C/C++. Aggiungere patch a vecchi progetti, senza doverli "portare" (riscrivere) in base alle ultimi release, ha un senso in un'ottica di economia. Tuttavia sarebbe utile imparare subito, quando si presenta l'occasione, le "nuove" sintassi proposte dagli aggiornamenti degli ambienti di sviluppo. Più si attende e peggio sarà!

Apprendere Actionscript 3.0, per chi viene dal C/C++, è più come "disapprendere" (o disimparare), le vecchie "clausule", forzate e non standard, presenti nelle precendenti versioni. Stessa cosa accadrà con l'uscita di Flash CS4; evitare, quindi, di rimanere indietro.

Inoltre, lo standard, rende la portabilità del codice estremamente più fattibile e concreta. La similitudine tra PHP, Javascript e Actionscript 3.0, evita di dover rivedere pesantamente codici e algoritmi scritti in uno solo di questi linguaggi.

Post correlati

Usare i Template WordPress per creare una Sitemap

Mercoledì 16 Luglio, 2008

Esiste una funzionalità in WordPress, a volte trascurata, che lo rende davvero molto versatile, soprattutto per chi crea temi: l'uso dei Template! Un Template non è altro che un file inserito nella cartella del tema. Per identificarlo come Template basta inserire all'inizio del file un particolare commento in PHP:

PHP:
  1. /*
  2. Template Name: Sitemap
  3. */

Sfruttando questa caratteristica è possibile creare una pagina vuota, con il procedimento standard di WordPress, e collegarla al nostro template. Se create un file, ad esempio sitemap.php (aggiungendo quel commento indicato più sopra) e lo caricate all'interno della cartella del vostro tema, noterete che nell'editor WordPress durante la creazione di una pagina (non di un post) il menu Template (in basso) conterrà il nome del file template caricato. Come indicato nella sezione template:

Alcuni temi hanno dei template personalizzati da poter utilizzare per determinate pagine, che possono contenere funzionalità aggiuntive o una grafica personalizzata. [...]

Io, ad esempio, ho sfruttato questa caratteristica per creare una pagina dinamica (che esegue quindi codice PHP) in grado di mostrare una vera e propria sitemap del blog.

Creazione di una pagina Sitemap

Prima di tutto create una file sitemap.php e caricatelo all'interno della cartella del vostro tema. Dall'amministrazione di Wordpress create una nuova pagina, dategli un nome e selezionate il Template dal menu che si trova sotto l'editor! Finito!

Il template, facendo parte del tema, contiene anche tutta la struttura del tema stesso ed è quindi importante saperlo scrive in modo corretto. Tuttavia ecco uno scheletro di una sitemap che potete modificare in base al tema che avete installato:

HTML:
  1. <?php
  2. /*
  3. Template Name: Sitemap
  4. */
  5. ?>
  6. <?php get_header(); ?>
  7.     <div id="content">
  8.     <?php if (have_posts()) : while (have_posts()) : the_post(); ?>
  9.         <div class="post" id="post-<?php the_ID(); ?>">
  10.         <h2><?php the_title(); ?></h2>
  11.         <small class="date-time"><?php the_time('l j F, Y') ?></small>
  12.             <div class="entry">  
  13.                 <p><strong><a href="<?php bloginfo('url'); ?>" alt="<?php bloginfo('name'); ?>">Home</a></strong></p>
  14.                 <h4>Pagine</h4>
  15.                 <ul>
  16.                     <?php wp_list_pages('title_li='); ?>
  17.                 </ul>
  18.                 <h4>Post</h4>
  19.                 <ul>
  20.                     <?php $archive_query = new WP_Query('showposts=1000');
  21.                         while ($archive_query->have_posts()) : $archive_query->the_post(); ?>
  22.                     <li><a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title(); ?>"><?php the_title(); ?></a></li>
  23.                     <?php endwhile; ?>
  24.                 </ul>
  25.                 <h4>Archivi mensili</h4>
  26.                 <ul>
  27.                     <?php wp_get_archives('type=monthly'); ?>
  28.                 </ul>
  29.                 <h4>Categorie</h4>
  30.                 <ul>
  31.                     <?php wp_list_categories('title_li=0'); ?>
  32.                 </ul>
  33.                 <h4>Feeds RSS/FeedBurner</h4>
  34.                 <ul>
  35.                     <li><a href="<?php bloginfo('rdf_url'); ?>" alt="RDF/RSS 1.0 feed"><acronym title="Resource Description Framework">RDF</acronym>/<acronym title="Really Simple Syndication">RSS</acronym> 1.0 feed</a></li>
  36.                     <li><a href="<?php bloginfo('rss_url'); ?>" alt="RSS 0.92 feed"><acronym title="Really Simple Syndication">RSS</acronym> 0.92 feed</a></li>
  37.                     <li><a href="<?php bloginfo('rss2_url'); ?>" alt="RSS 2.0 feed"><acronym title="Really Simple Syndication">RSS</acronym> 2.0 feed</a></li>
  38.                     <li><a href="<?php bloginfo('atom_url'); ?>" alt="Atom feed">Atom feed</a></li>
  39.                 </ul>
  40.             </div>
  41.         </div>
  42.     <?php endwhile; endif; ?>
  43.     </div>
  44.     <?php get_sidebar(); get_footer(); ?>

Post correlati

Menu combo categorie in WordPress 2.5.1

Giovedì 10 Luglio, 2008

Per creare un menu/combo (tag select) senza un bottone di submit e in grado di posizionarsi sulla categoria attualmente visualizzata, si può sfruttare il seguente codice:

HTML:
  1. <select name="event-dropdown" onchange='document.location.href=this.options[this.selectedIndex].value;'>
  2. <option value="">Seleziona una categoria</option>
  3. <?php
  4. $foo = ( (is_category())?(single_cat_title('', false)):"" );
  5. $categories = get_categories('orderby=name&hierarchical=0'); $option = '';
  6. foreach ($categories as $cat) {
  7.     $option .= '<option '.( ($cat->cat_name == $foo)?"selected":"" ).' value="/category/'.$cat->category_nicename.'">';
  8.     $option .= $cat->cat_name;
  9.     $option .= ' ('.$cat->category_count.')';
  10.     $option .= '</option>';
  11. }
  12. echo $option;
  13. ?>
  14. </select>

L'evento onchange, nel tag select, permette di eliminare un eventuale bottone di submit. La funzione WordPress is_category(), invece, permette di stabilire se stiamo visualizzando un "archivio" categorie, così da ottenere il titolo/nome dell'attuale categoria visualizzata.

Post correlati

Google AJAX Language API: tutorial sul funzionamento

Martedì 13 Maggio, 2008

Rispondo, con questo post, alla richiesta di Andrea su come inserire il traduttore di Google nel proprio web. Esistono vari modi per usufruire dei servizi di traduzione automatica messi a disposizione da Google e non solo. Possiamo usare Plugin scritti da terzi, un semplice script Javascript preconfezionato da Google stessa o imparare ad usare le API, cioè una serie di funzioni richiamabili - come vedremo - in vari modi.

Plugin

Su questa soluzione non mi dilungo, in quanto credo non sia propriamente attinente alla richiesta di Andrea, se ho compreso bene. Inoltre è una soluzione sostanzialemente valida solo per i Blog e non per un uso personalizzato e generico. Posso solo segnalare, per gli utenti WordPress, Global Translator, forse il più semplice, funzionale e diffuso Plugin di questo tipo.

Script preconfezionato da Google

Il modo più semplice per tradurre il proprio sito web o il proprio Blog è quello di inserire un semplice script Javascript fornito da Google stessa. Basta andare sul sito translate.google.com e cliccare sulla scheda 'Strumenti'. Da questa pagina è possibile preimpostare le funzioni di traduzione o lasciare quelle di default. Lo script è molto semplice:

HTML:
  1. <script src="http://www.gmodules.com/ig/ifr?url=http://www.google.com/ig/modules/translatemypage.xml&amp;up_source_language=it&amp;w=160&amp;h=60&amp;title=&amp;border=&amp;output=js"></script>

e come risultato si ottiene:

Google Translate

Continua a leggere... »

Post correlati

Argomenti variabili e di default in Javascript, Actionscript e PHP

Mercoledì 7 Maggio, 2008

Chi sviluppa sa bene che una delle caratteristiche delle funzioni (function () ) è quella di avere o meno degli argomenti di input. Può capitare, a volte, di dover scrivere una funzione che, in base ai parametri di input, si comporta in modo differente (in programmazione OO troviamo questo comportamento indicato come poliformismo). I parametri variabili (varargs), introdotti già all'epoca del C e presenti di default nella classica dichiarazione del main:

CODE:
  1. int main(int argc, char *argv[]);

Continua a leggere... »

Post correlati

Snipplr code 2.0: frammenti (snipp) di codice utile

Sabato 26 Aprile, 2008

Snipplr Era da tempo che volevo segnalare questo utilissimo servizio dedicato al mondo della programmazione. Snipplr (code 2.0) è un vero e proprio aggregatore o repository di frammenti di codice utili. È possibile registrarsi gratuitamente ed inviare le proprio porzioni di codice e, soprattutto, usufruire dei tantissimi snipp già presenti su sito. I linguaggi trattati sono tantissimi (Actionscript, ASP, C#, MatLab, PHP, Rails, SVN, etc...), tutti ben ordinati e catalogati. È possibile anche installare un comodo plugin per Wordpress in grado di visualizzare sul nostro blog un snipp-code tramite il suo id univoco.

Post correlati