Inserire AdSense per la ricerca in pagine ASP.NET

Giorgio Borelli

inserire il box di ricerca personalizzata di Google AdSense in pagine ASP.NETGoogle AdSense per la ricerca è uno strumento molto utile sotto diversi punti di vista, non solo ti permette di avere una search box subito pronta e funzionante da inserire immediatamente sul tuo sito web, ma ti permette anche di estendere le possibilità di guadagno tramite AdSense.

Purtroppo però, per chi sviluppa con tecnologia asp.net, l'inserimento di AdSense per la ricerca nelle pagine aspx non sembra così agevole come per le altre piattaforme. Una volta creato il box di ricerca con AdSense ed acquisito il codice da inserire nelle proprie pagine aspx, questo non funziona come dovrebbe, il box compare correttamente sulla pagina ma facendo click sul bottone "cerca" non accade nulla, non si ha il classico refresh con postback della pagina.

Il problema nasce a causa di una caratteristica peculiare delle pagine aspx, il proprio form (illustreremo meglio più avanti), la soluzione però esiste, ed anche se non è propriamente agevole ed "esteticamente" elengatissima, è funzionante. Penso quindi che i vantaggi dati dall'uso di AdSense per la ricerca siano superiori al warkround che andremo ad usare per aggirare questa "limitazione" di asp.net, andiamo a scoprire come fare.

Se prendiamo un classico codice di AdSense per la ricerca questo è composto principalmente da un blocco form, per l'input della query nel box di ricerca:

...
 <form action="http://www.miosito.it/ResultSearch.aspx" id="cse-search-box">
        <div>
            <input type="hidden" name="cx" value="partner-pub-xxxxxxxxxxxxxxxx:ece92xxxxxxj" />
            <input type="hidden" name="cof" value="FORID:10" />
            <input type="hidden" name="ie" value="ISO-8859-1" />
            <input type="text" name="q" size="32" />
            <input type="submit" name="sa" value="Cerca" />
        </div>
 </form>
...

Ora il problema è proprio questo form, mentre in una normale pagina html questo sarebbe leggittimo, nelle pagine aspx un secondo form non è possibile, poichè per loro stessa architettura, le pagine asp.net sono provviste di un proprio form (con l'attributo runat="server") e questo deve essere unico per ogni pagina (sia che si faccia uso delle Master Page o meno), per questo vengono chiamate anche WebForm (in analogia con le WinForm).

La presenza del secondo form, quello dell'AdSense per la ricerca, viene praticamente ignorato e conseguentemente esso non riesce ad eseguire l'action e gestire la query tramite i parametri d'input.

Per ovviare a questo problema, dobbiamo mettere appunto un warkround che consenta di far convivere due form nella stessa pagina aspx, in modo tale che questi risultino indipendenti l'uno dall'altro, o in altre parole dobbiamo inserire una pagina html col form di AdSense per la ricerca dentro la pagina aspx, per fare questo possiamo percorrere una sola strada, ovvero ricorrere all'uso degli iFrame.

Lo so che molti di voi sentendo iFrame hanno storto subito il naso, sono deprecati e non sono apprezzatissi dai motori di ricerca, nemmeno a me piacciono molto, però come dicevo pocanzi si adattano benissimo al nostro scopo ed i vantaggi di usare la ricerca di google adsense è superiore agli svantaggi dell'uso degli iFrame stessi.

L'iFrame o inline Frame a differenza dei Frame non hanno bisogno di aver specificato un frameset, e servono appunto per inserire una pagina in linea dentro un'altra, in questo modo riusciamo ad ingannare la pagina asp.net facendogli credere che il form nella pagina è sempre e solo uno (il suo), ed effettivamente e così poichè la pagina dell'iFrame è un'altra pagina vera e propria.

 

Spieghiamo passo passo come fare:

1 - Creiamo una pagina html ed inseriamo all'interno del suo tag body lo snippet del codice rilasciatoci da AdSense per il box di ricerca, e nominiamola ad es. SearchPage.html

 

2 - All'interno della pagina aspx (o master page) dove vogliamo posizionare il box per la ricerca di Google AdSense, andiamo a specificare il codice iFrame e come sorgente (tag src) specifichiamo il file SearchPage.html creato precedentemente, in questo modo:

<iframe name="SearchFrame" frameborder="0" height="36" width="100%" src="SearchPage.htm" scrolling="no">
 <a href="SearchPage.htm">Search Page</a>
</iframe>

volendo possiamo inserire questo codice anche dentro un componente ascx e successivamente inserirlo nella pagina, ma questa è una pura scelta implementativa e nulla toglie alla funzionalità che vogliamo ottenere.

 

3 - specifichiamo il file in cui Google mostrerà i risultati delle ricerche, ed inseriamo al suo interno il secondo snippet fornitoci da AdSense durante la fase di creazione del box per la ricerca. Questo file può essere sia aspx che html, il secondo script per i risultati infatti non prevede alcun form.

 

Bene, abbiamo finito, applicando correttamente questo warkround che fà uso di un iFrame, riusciamo ad implementare in maniera funzionante AdSense per la ricerca all'interno delle pagine ASP.NET.

Nonostante siamo riusciti ad ottenere una soluzione funzionante, l'argomento resta comunque aperto, chiunque abbia sperimentato o conosca qualche altra soluzione è invitato a dire la propria, sarebbe davvero interessante aggirare il problema delle WebForm di asp.net con una soluzione diversa dall'uso degli iFrame.

Categorie: AdSense | ASP.NET

Tags:

Aggiungi Commento

biuquote
Loading