WP-ABS: aggiungere il proprio blog al search del browser

Giovedì 21 Agosto, 2008

OpenSearch è uno standard che definisce una serie di formati per la condivisione dei risultati di ricerca. Questo standard è utilizzato, ad esempio, da Social Network come Facebook, che possiedono uno proprio sistema di ricerca. Uno degli utilizzi di questo standard, per i browser che lo supportano, è la possibilità di riconoscere in automatico  e quindi aggiungere, il proprio sito web o blog alla lista dei motori di ricerca presenti nel menu a tendina del browser:

image

Se visitate (con FireFox o Flock) il motore di ricerca Divoogle, potrete inserirlo tra i motori di ricerca presenti nel menu.
Questa operazione, tuttavia, potrebbe essere svolta manualmente selezionando "Gestione motori di ricerca..." in Firefox, ad esempio. Ma oltre ad essere un'operazione particolare, ogni utente singolarmente dovrebbe svolgere. Browser di ultima generazione, come Flock, permettono grazie allo standard OpenSearch di automatizzare questa funzione, segnalando in automatico all'utente che il sito web o blog propone un suo motore di ricerca:

image

WordPress Plugin: il vostro Blog nei lista dei motori di ricerca

Il procedimento manuale, utile per attivare questa funzione dappertutto, lo vedremo più sotto. Nel frattempo, se avete un Blog Wordpress, potete installare questo semplice Plugin (wp-abs.zip) che svolge tutto il lavoro per voi. Una volta installato e attivato non dovrete configurare nulla! Caricando il vostro Blog Wordpress su Firefox o Flock, troverete magicamente il vostro Blog elencato nel menu a tendina dei motori di ricerca.
Per il sorgente fate riferimento qui.

Installazione manuale dello standard OpenSearch

Per chi volesse svolgere l'installazione dello standard OpenSearch in modo manuale può seguire il semplice tutorial di esempio esposto qui sotto e/o fare riferimento alla documentazione presente sul sito OpenSearch.

Per segnalare la presenza di un motore di ricerca al browser è sufficiente creare un file XML sul nostro sito o Blog. Eccone ad esempio il file opensearch_desc.xml di undolog.com:

XML:
  1. <?xml version="1.0"?>
  2. <OpenSearchDescription xmlns="http://a9.com/-/spec/opensearch/1.1/"
  3.         xmlns:moz="http://www.mozilla.org/2006/browser/search/">
  4.     <ShortName>Undolog</ShortName>
  5.     <Description>Open Search Undolog.com</Description>
  6.     <Image height="16" width="16" type="image/x-icon">http://www.undolog.com/favicon.ico</Image>
  7.     <Url type="text/html" method="get" template="http://www.undolog.com/?s={searchTerms}"/>
  8.     <moz:SearchForm>http://www.undolog.com/</moz:SearchForm>
  9. </OpenSearchDescription>

Come potete vedere il suo formato è abbastanza semplice. Il punto importate è la riga 7:

XML:
  1. ...
  2. <Url type="text/html" method="get" template="http://www.undolog.com/?s={searchTerms}"/>
  3. ...

Questa indica al browser dove e come effettuare la ricerca. Normalmente, come in questo caso, Wordpress usa lo standard:

CODE:
  1. http://mioblog.com/?s=stringa da cercare

Tuttavia a seconda delle esigenza, come ho fatto per Divoogle, questa parte di codice può variare. Una volta creato questo file è sufficiente inserire un tag link all'interno della sezione head della nostra home page:

HTML:
  1. <!-- opensearch -->
  2. <link rel="search" type="application/opensearchdescription+xml" href="http://www.undolog.com/opensearch_desc.xml" title="Undolog" />

Tramite l'attributo rel="search", questo link segnalerà al browser (che lo supporta) dove recuperare tutte le informazioni per aggiungere il motore di ricerca.

Blogbabel riapre! Chiuso per ferie dal 19 luglio al 2 agosto

Venerdì 18 Luglio, 2008

Blogbabel, che aveva preso un pausa qualche tempo fa, riapre con un nuovo look e tante novità. La riapertura di Blogbabel coincide proprio con la mia meritata pausa: un paio di settimane di riposo dopo due lunghi anni! Causa nascita gemelli.

Al mio ritorno ai primi di agosto, spero di poter riattivare tutti i widget per il monitoring delle statistiche Blogbabel. Ho già contattato i responsabili per verificare la disponibilità delle API; al momento in cui scrivo disabilitate apparentemente.

Per ora, quindi, pausa e un buon riposo a tutti :)

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(); ?>

Aggiornamento a WordPress 2.6

Martedì 15 Luglio, 2008

Aggiornamento eseguito! Seguendo sempre la procedura standard indicata in WordPress Italy. Questa nuova release di WordPress contiene numerosi miglioramenti e alcune importanti novità:

  • Supporto delle revisioni
    È ora possibile tenere traccia di tutte le modifiche apportate sia agli articoli che alle pagine con un sistema wiki-style. Salvando un articolo modificato, a fondo editor verranno elencate le sue versioni e sarà possibile vedere le differenze:
  • Anteprima dei temi
    Prima di installare definitivamente una tema, è possibile avere un'anteprima per decidere con tutta calma
  • Miglioramenti nell'editor
    La gestione dei media, in particolare delle immagini, è stata notevolmente migliorata, permettendo ridimensionamenti, upload e manipolazioni estremamente migliori

Tutte le altre novità le trovate elencate in WordPress Italy e/o aggiornando alla 2.6!

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.

Google AJAX Library API: una svolta per gli sviluppatori

Giovedì 29 Maggio, 2008

AJAX Libraries API Google, in quest'ultimo perdiodo, ha rilasciato una moltitudine di strumenti dedicati agli sviluppatori, aggiornando di continuo i propri rilasci. Adesso stringe un accordo con i più diffusi framework AJAX, e non solo, per centralizzare la distribuzione delle librerie jQuery, prototype, script.aculo.us, MooTools e dojo!

In pratica è possibile accedere a queste librerie sfruttando le infrastrutture e la rete Google, con notevoli vantaggi in termini di velocità e sicurezza.

La velocità, nel caricamento, è garantita dalla stessa rete Google che, oltre a fornire di per se una struttura di server distribuita, permette (di default) il caricamento compresso (gzip/minify) delle librerie. Gli hosting Google più vicini alla richiesta saranno utilizzati per inviare il codice e, in caso di non raggiungimento o down temporaneo, la rete Google garantirà comunque l'invio del codice Javascript!

Continua a leggere... »

Ottimizzare il caricamento di un sito Web

Martedì 27 Maggio, 2008

Grazie ai suggerimenti e ai consigli di Davide Salerno ho cercato di ottimizzare il caricamento di undolog.com, attività che, per questioni di "tempo", avevo sempre rimandato. In realtà non sono riuscito ad applicare tutte le preziose dritte di Davide, tuttavia sono riuscito a dare una bella "ripulita" e ridurre comunque i tempi di caricamento!

Riduzione dei Widget, Badget e Antipixel

La prima operazione che ho fatto è stata quella di ridurre il più possibile il carico prodotto dai vari Widget inseriti nel blog:

  • ho diminuito le righe visualizzate nel Widget di MyBlogLog: da 10 a 5 righe
  • ho eliminato gli antipixel dal BlogRoll
  • la biblioteca di aNoobi mostra 2 libri invece che 5

Continua a leggere... »

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

Inserire filmati Flash in Wordpress con SWFObejct 2.0

Giovedì 1 Maggio, 2008

Dopo aver eseguito negli anni svariate patch e prove per trovare il modo migliore di inserire contenuti attivi - come Flash - nel Blog, penso finalmente di aver risolto una volta per tutte il problema. Avevo già parlato del rilascio della libreria SWFObject 2.0, utilissima nella realizzazione di siti con contenuto di tipo Adobe Flash. Fortunatamente Unijimpe ha realizzato un Plugin per Wordpress in grado di sfruttare le potenzialità di SWFObject e semplificare l'inserimento all'interno dei Post. Per usarlo, infatti, basta attivare il Plugin e inserire all'interno del post:

CODE:
  1. [SWF] /wp-content/uploads/2006/05/7762.swf, 231, 132 [/SWF]

È inoltre possibile utilizzare il Plugin per inserire contenuti Flash anche all'interno del Blog stesso, come ad esempio la Sidebar:

PHP:
  1. <div id="sidebar">
  2. <?php wp_swfobject_echo("boton.swf","100","22"); ?>
  3. </div>

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.