[REL] Technorati Tags per dblog 2.0

Ho visto ultimamente parecchi blog che girano con dblog, utilizzano il tagging di technorati. Ho pensato esserci in giro un plug in o qualcosa del genere, ed ho cercato in diversi siti e forum. Bene, in effetti c’è un plug in in testing, ma non si sa perchè per averlo devi fare mail, così lo si può testare etc etc…
Sinceramente per un software open source come dblog mi aspettavo di meglio… Mi aspettavo che certe cose fossero condivise, come io faccio sempre per quel poco che smanetto con il codice.

Dato che quando ci resto male mi incazzo, e dato che quando mi incazzo divento produttivo, ho sviluppato il MIO plug in per i technorati tag, supportato da dblog!
Ed io non ho nessun problema a condividerlo, anzi vi scrivo passo passo le tante modifiche…

1- Struttura database:
Questa è in parte da modificare. E’ necessario aggiungere alla tabella Articoli un nuovo campo. Chiamatelo "tags" e date come attributi una dimensione massima di 255 con campo di tipo testo.

2- Amministrazione:
Modificheremo ora l’ambiente amministrazione per aggiungere i tags ad ogni articolo. La modifica va fatta a due file: articoli_aggiungi.asp e articoli_modifica.asp entrambi presenti nella directory dblogadmin.

Ora voglio evitare di scrivere tutto passo passo, e vi quoto porzioni ragguardevoli di codice. Cercate il codice corrispondente nel file ed apportate le modifiche dovute.

– articolo_aggiungi.asp

Prima

<%
    ‘aggiunto Ftags – davidonzo 16/02/2005
    Dim SQLAggiungi, RSAggiungi, SQLCercaID, RSCercaID, SQLNomeFileTXT, RSNomeFileTXT, FilStuff, Stuff, I, NomeFileTXT, FTesto, FSezione, FAutore, FTitolo, FPodcast, Ftags, FData, FOra, FLetture, FBozza, Errore, SQLSezioneArticoli, RSSezioneArticoli
%>

Poco sotto

    If Request.QueryString("a") = "aggiungi" Then
        FTesto = SostituisciCaratteri(Request.Form("Testo"), "Si")
        FSezione = DecodeEntities(SostituisciCaratteri(DoppioApice(Request.Form("Sezione")), "No"))
        FAutore = Session("BLOGNick")
        FTitolo = DecodeEntities(SostituisciCaratteri(DoppioApice(Request.Form("Titolo")), "No"))
        FPodcast = DoppioApice(Request.Form("NomeFile"))
        ‘Aggiunto da davidonzo
        Ftags = DoppioApice(Request.Form("tags"))
        ‘Aggiunto da davidonzo FINE
        FData = DoppioApice(Request.Form("Data"))
        FOra = DoppioApice(Request.Form("Ora"))
        FLetture = DoppioApice(Request.Form("Letture"))
        FBozza = Request.Form("Bozza")

Sotto ancora

        ‘Aggiunto [tags] – davidonzo
                If Errore = False Then
            SQLAggiungi = " INSERT INTO [Articoli] ([Sezione], [Autore], [tags], [Titolo], [Podcast], [Data], [Ora], [Letture], [Bozza]) VALUES (‘"& FSezione &"’, ‘"& FAutore &"’, ‘"& Ftags &"’ , ‘"& FTitolo &"’, ‘"& FPodcast &"’, ‘"& FData &"’, ‘"& FOra &"’, ‘"& FLetture &"’, "

Ed alla fine, nella sezione dedicata ai form per l’inserimento dei dati

<!– Aggiunto da davidonzo – 16/02/2006 –>
<br><b>Technorati tags</b>(inserire tag separati dalla virgola "," )            <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="textbox" id="tags" name="tags" value="" size="50" maxlenght="255">          
<!– Fine aggiunta – 16/02/2006 –>

– articoli_modifica.asp

<%
     ‘Aggiunto Ftags – davidonzo
     Dim SQLArticolo, RSArticolo, SQLModifica, RSModifica, FID, FNomeFileTXT, FTesto, FSezione, FAutore, FTitolo, FPodcast, Ftags, FData, FOra, FLetture, FBozza, Errore, FilSezioneArticoli, SezioneArticoli, SQLSezioneArticoli, RSSezioneArticoli, FilContenutoArticolo, ContenutoArticolo, ContenutoArticoloTemp, SQLListBox, RSListBox

Poco sotto

        FPodcast = DoppioApice(Request.Form("NomeFile"))
        ‘Aggiunto da davidonzo
        Ftags = DoppioApice(Request.Form("tags"))
        ‘Aggiunto da davidonzo FINE
                FData = DoppioApice(Request.Form("Data"))

Sotto ancora

        If Errore = False Then
SQLModifica = " UPDATE [Articoli] SET Articoli.Sezione = ‘"& FSezione &"’, Articoli.Autore = ‘"& FAutore &"’, Articoli.Titolo = ‘"& FTitolo &"’, Articoli.Podcast = ‘"& FPodcast &"’, Articoli.tags = ‘"& Ftags &"’, Articoli.Data = ‘"& FData &"’, Articoli.Ora = ‘"& FOra &"’, Articoli.Letture = "& FLetture &", "
            If FBozza = "si" Then

Ed infine anche qui, nella parte dedicata ai form di inserimento dati (in questo caso meglio aggiornamento)

<!– Aggiunto da davidonzo – 16/02/2006 –>                               <br><b>Technorati tags</b>(tag serapati solo da virgola ",")
<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<input type="textbox" id="tags" name="tags" value="<% If RSArticolo("tags") <> "" AND NOT IsNull(RSArticolo("tags")) Then   Response.Write Server.HTMLEncode(RSArticolo("tags"))
End If %>" size="50" maxlenght="255">
<!– Fine aggiunta – 16/02/2006 –>


Attenzione, questa modifica è molto delicata!!! Se la sbagliate rischiate di avere un errore tutte le volte che modificate un articolo inserito prima delle modifiche che state apportando!!!

3- Front End. Visualizziamo i tag SOLO se li abbiamo inseriti
Le modifiche saranno apportate ai file default.asp e articolo.asp. Il file storico.asp non lo modifico, per cui li non si vedranno i tag, se volete fatelo da voi.

– articolo.asp

Cominciamo…

        ‘Effettuo la ricerca negli articoli per ID
        ‘Aggiunto Articoli.tags – davidonzo
        SQLArticoli = " SELECT Articoli.ID, Articoli.Sezione, Count(Commenti.ID) AS ConteggioID, Articoli.Titolo, Articoli.Autore, Articoli.Data, Articoli.Ora, Articoli.Testo, Articoli.tags, Articoli.Letture, Articoli.Podcast FROM [Commenti] RIGHT JOIN [Articoli] ON Commenti.IDArticolo = Articoli.ID WHERE Articoli.Data <= ‘"& DataToStr(Date()) &"’ AND Articoli.ID = "& FID &" AND NOT Articoli.Bozza GROUP BY Articoli.ID, Articoli.Sezione, Articoli.Titolo, Articoli.Autore, Articoli.Data, Articoli.Ora, Articoli.Testo, Articoli.tags, Articoli.Letture, Articoli.Podcast ORDER BY Articoli.Data DESC, Articoli.Ora DESC"

Ed il seguente codice che potete piazzare dove volete all’interno del corpo dell’articolo. Sopra il testo, sotto i link finali, o sopra. Insomma, inserite il codice nel Sub Contenuto() là dove volete che i tag si visualizzino.

<% If RSArticoli("tags") <> "" AND NOT IsNull(RSArticoli("tags")) Then %>
<!–#include file="inc_tags.asp"–>
<br />
<% End If %>

– default.asp

E via!

‘Cerco gli ultimi N articoli
‘Aggiunto tags – davidonzo
        SQLArticoli = "SELECT TOP "& Num_Max_Articoli &" Articoli.ID, Articoli.Sezione, Count(Commenti.ID) AS ConteggioID, Articoli.Titolo, Articoli.Autore, Articoli.Data, Articoli.Ora, Articoli.Testo, Articoli.Letture, Articoli.tags, Articoli.Podcast FROM [Commenti] RIGHT JOIN [Articoli] ON Commenti.IDArticolo = Articoli.ID WHERE Articoli.Data <= ‘"& DataToStr(Date()) &"’ AND NOT Articoli.Bozza GROUP BY Articoli.ID, Articoli.Sezione, Articoli.Titolo, Articoli.Autore, Articoli.Data, Articoli.Ora, Articoli.Testo, Articoli.Letture, Articoli.tags, Articoli.Podcast ORDER BY Articoli.Data DESC, Articoli.Ora DESC"

E come per articolo.asp

<% If RSArticoli("tags") <> "" AND NOT IsNull(RSArticoli("tags")) Then %>
<br />
<br />
<!–#include file="inc_tags.asp"–>
<% End If %>

Vi sarete accorti che includete un file che non avete vero? Allora createlo!!!
Create un nuovo file chiamato inc_tags.asp e piazzatelo nella directory dblog. Ma ovviamente prima c’è un po di codice da scrivere : - ) .

<div id="technorati">
<img src="<%=Path_Skin%>technorati.gif" alt="Technorati" />&nbsp;
<script>
        var stringa = "<%=RSArticoli("tags")%>";
        var splitted = stringa.split(",");
        for (i in splitted) {
        document.write("<a href=’http://www.technorati.com/tag/" + splitted[i] + "’>" + splitted[i] + "</a>&nbsp;");
        }
</script>
</div>

Come potete vedere lo script è un semplicissimo java che usa la funzione split per separare una stringa. Nel pannello di controllo andrete ad inserire i tag che volete scrivendoli tutti di seguito, separandoli con una virgola ",". Sarà questo componente a scomporre la stringa intera in tante parole che poi linkerà a technorati in automatico.
Lo script prevede anche la presenza di una piccola immagine di nome technorati.gif nella directory gfx del vostro template.
Ho anche inserito una classe di css arbitraria che potete aggiungere tranquillamente al vostro css per gestire la piccola zona di pagina al meglio!

Se volete scaricare i file già modificati, eccoli per voi! Ma ricordate che perderete tutte le vostre modifiche.

Dato che sono solo uno smanettore sfaticato, dato che non capisco niente di programmazione e simili, non viene rilasciata nessuna garanzia. A me ha funzionato bene, a voi potrebbe non andare allo stesso modo e non sarebbe colpa mia!.

Buona giornata!

22 thoughts on “[REL] Technorati Tags per dblog 2.0”

  1. Sono il genio del male, faccio un plug in per far creare il boockmark automatico su segnalo, e sbaglio ad installarlo sul mio blog S - (

    Corretto, sia il post su segnalo che l’automatismo del blog, thanks : - )

  2. sai ceh non ho capito benissimo come funziona questo Technorati. Escludendo la plug-in, mi sono registrato al sito Tec.. ho inserito lo script nlal home.. e ho fatto l’autenticazione. Ora quindi sono indicizzato. La plug-in a che serve? a dire a Technorati cosa c’è nell’articolo in automatico? boh. .sarà ceh è tardi e son fuso.. però.. sta cosa non mi entra proprio : - D

  3. Beh, il tagging serve per organizzare le informazioni, è un po’ come le sezioni del blog. Solo che taggando su technorati hai una visibilità enorme e quindi l’organizzazione delle informazioni sul web è gestito da chi le informazioni le produce (in questo caso i blogger) ed usufruibile da tutti.

    E’ un piccolo pezzettino di web 2.0 : - )

  4. Non si visualizza il mio blog.
    Dice. impossibile visualizzare la pagina, accesso negato, errore http 430!

  5. <%
    stringa = RSArticoli(“tags”)
    s = Split(stringa, “,”)
    FOR i=0 to UBound(s)
    Response.Write “<a href=’http://www.technorati.com/tag/” & s(i) & “‘ target=’_blank’ rel=’tag’>” & s(i) & “</a> “
    NEXT
    %>

    Com’e’ che non separa in virgole i tags.. e lascia uno spazio di troppo nella link della parola chiave? : - ( ho fatto tutto come dici!

    Invece di linkare “PAROLA”, linka “spazioPAROLA”

  6. Ho risolto per gli spazi (ora i links osono corretti), ma le parole non vengono separate dalla virgola. Grazie lo stesso comunque… 🙂

  7. Si si.. non mettevo in dubbio le tue competenze. Non uso proprio il tuo plugin nel senso che non ho scaricato lo zip e sostituito file. Ho modificato seguendo le tue indicazioni. Al momento dell’immissione dei tags separo solo con la virgola, senza spazi. Funziona, scrive le varie keyword e le linka in maniera corretta. Unica cosa: non le visualizza come KEY, KEY2, KEY3… ma come KEY KEY2 KEY3…

    Tutto qua 😉

    Magari c’è da agire sull’html, poi ci provo! ; - )

  8. Io faccio così. Non è nello zip questo codice, almeno mi pere…

    <%

    stringa = RSArticoli(“tags”)

    s = Split(stringa, “,”)

    FOR i=0 to UBound(s)-1

    %>

    <a href=”http://technorati.com/tag/<%=s(i)%>” rel=”tag”><%=Replace(s(i) , “+” , ” “)%></a>,

    <%NEXT%>

    <%

    IF i=UBound(s) then

    %>

    <a href=”http://technorati.com/tag/<%=s(i)%>” rel=”tag”><%=Replace(s(i) , “+” , ” “)%></a>

    <%END IF%>

  9. Funziona come dici te… grandissimo : - )

    Ora aspettero’ che technorati faccia il suo lavoro…so che sono lenti a prendere le tags dei post e linkarti sul loro sito..

    Ciao!

  10. Ciao davidonzo, mi sembra molto utile il tuo plugin, ma io pensavo di modificarlo. Nel senso che alla fine di technorati me ne frega ben poco! Io vorrei che chi visita il mio blog, cliccando sui vari tag, avviasse automaticamente una ricerca sul mio db degli articoli che diciamo sono correlati tra di loro grazie a quel tag.

    Nel senso che è possibile che un blog specialistico sviluppi nel tempo articoli sul medesimo argomento e con i tag riuscirei a recuperare tutti gli articoli correlati, anze se magari stanno in categorie diverse. Che ne dici è una cazzata come idea? Ho anche postato sul forum di dblog.

  11. @ Gio73: è un’ottima idea, ed è quello che io faccio nel tagcould (grazie a Paperino per l’aiuto!!!).
    Se vuoi implementarlo direttamente qui, basta cambiare la direttiva di response.write nel file inc_tags.asp

Comments are closed.