Come generare un file xml per Google Shopping

by WebInfinity 15. luglio 2011 10:51

Da ormai alcuni mesi BigG ha messo a disposizione dei suoi utenti la possibilità di ricerca prodotti tramite il canale dedicato di Shopping. La finalità è dare la possibilità ai commercianti di rendere disponibile online i loro prodotti così da rendere più semplice la vita all'utente che vuole acquistare online. Google ha messo a disposizione le norme per creare un file xml adeguato al suo flusso dati, ora analizzeremo come creare il file xml.

Per prima cosa analizziamo il codice utile per la creazione del nostro file xml:

Imports System.Xml
Imports System.Text
Importiamo le classi che ci servono.

Response.ContentType = "text/xml"

Dim writer As New XmlTextWriter(Server.MapPath("~/nomefile.xml"), Encoding.UTF8)

writer.Formatting = Formatting.Indented

Prepariamo così il file e lo formattiamo come xml.

writer.WriteStartDocument()
writer.WriteStartElement("rss")
writer.WriteAttributeString("version", "2.0")
writer.WriteAttributeString("xmlns:g", "http://base.google.com/ns/1.0")
writer.WriteStartElement("channel")

writer.WriteElementString("title", "valore")
writer.WriteElementString("link", "valore")
writer.WriteElementString("description", "valore")

A questo punto abbiamo inizializzato la procedura di creazione del testo vero e proprio con le caratteristiche specificate da Google. Infatti se notate c'è la dicitura "http://base.google.com/ns/1.0"

writer.WriteStartElement("item")

writer.WriteElementString("g:id", "valore")

Ora procediamo attribuendo ad ogni chiave richiesta nelle specifiche da google il valore corrispondente che sarà preso come meglio credete, da un DB o da un File Xml, per la creazione di tutti i parametri.

writer.WriteEndElement()
writer.WriteEndElement()
writer.WriteEndDocument()
writer.Close()

ed in fine chiudiamo il file xml.

Google richiede diversi parametri per un buon posizionamento dei vostri prodotti nel suo canale shopping. Tali parametri li trovate qui

Va detto che Google per elabora i dati, qualora siano conformi con gli standard richiesti, impiega anche 2/3 settiamane. Sicuramento non un tempo breve ma tutto sommato corretto.

 

Tags: , ,

Asp.Net

Form mail in asp.net

by WebInfinity 27. giugno 2011 11:47

Oggi vediamo come si crea un form mail in asp.net per l'invio di un'email direttamente da sito web.

Innnanzi tutto dobbiamo creare i controlli sulla pagina aspx e per fare questo possiamo utilizzare i textbox forniti da visual studio 2010

Scelta TextBox in visual studio 2010

così da avere vari controlli per la compilazione della notra form.

A questo punto andiamo ad inserire un button in fondo al form così da poter associarvi un azione. Di seguito trovate il codice:

 

Protected Sub obInvia_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles obInvia.Click
            Dim mailObj As New MailMessage()
            mailObj.From = New MailAddress(otbMail.Text.ToString())
            mailObj.To.Add(New MailAddress("info@tuodominio.it"))
            mailObj.Subject = otbObject.Text.ToString()
            Dim RealMail As String = getHtml(Server.MapPath("TemplateMail/MailGenerica.htm"))
            mailObj.Body = RealMail
            mailObj.Body = mailObj.Body.Replace("<% uNome %>", otbNome.Text.ToString())
            mailObj.Body = mailObj.Body.Replace("<% uAzienda %>", otbAzienda.Text.ToString())
            mailObj.Body = mailObj.Body.Replace("<% uTelefono %>", otbTel.Text.ToString())
            mailObj.Body = mailObj.Body.Replace("<% uCorpo %>", otbMessage.Text.ToString())
            mailObj.Body = mailObj.Body.Replace("<% uAnno %>", Date.Now.Year.ToString())
            mailObj.IsBodyHtml = True
            Dim oSmtp1 As New SmtpClient("mail.tuodominio.it", 587)
            Dim oCredential1 As New NetworkCredential("info@tuodominio.it", "password")
            oSmtp1.DeliveryMethod = SmtpDeliveryMethod.Network
            oSmtp1.UseDefaultCredentials = False
            oSmtp1.Credentials = oCredential1
            oSmtp1.Send(mailObj)
            Session("Nome1") = otbNome.Text.ToString() & " " & otbNome.Text.ToString()
            Session("Mail1") = otbMail.Text.ToString()
            Response.Redirect("pagina-cortesia-mail.html")
End Sub

 

come si vede la mail viene preformattata su un file html il cui codice lo trovate di seguito:

 

<body>
    <div align="center">
        
        <table align="center" cellpadding="4" cellspacing="4" class="style1">
            <tr>
                <td align="left" bgcolor="#C90606">
                    <img alt="" src="http://www.tuodominio.it/Immagini/LogoMail.jpg" /></td>
            </tr>
            <tr>
                <td align="left" style="font-size: small;">
                    <b><% uNome %></b>
                </td>
            </tr>
            <tr>
                <td align="left" style="font-size: small;">
                    <b><% uAzienda %></b>
                </td>
            </tr>
            <tr>
                <td align="left" style="font-size: small;">
                    <b><% uTelefono %></b>
                </td>
            </tr>
            <tr>
                <td align="left" style="font-size: small;">
                    <% uCorpo %>
                </td>
            </tr>
            <tr>
                <td align="center" style="font-size: xx-small; color: #C90606;">
                    <p>© <% uAnno %> Dati azienda o sito per footer</p>
                </td>
            </tr>
        </table>
        
    </div>
</body>

 

In questo modo possiamo avere una mail formattata in html che è sicuramente più gradevole e meglio strutturata.

Noterete alla fine del codice vb un redirect ad una pagina di cortesia che serve per ringraziare il visitatore che ci ha inviato la mail, io ho usato la session ma ci sono altri modi per inviare i dati, vedete voi qual'è quello che preferite.

A questo punto il nostro form è perfettamente funzionante, ora potete modificarlo come meglio credete aggiungendo dropdownlist, radiobutton o quello che più vi interessa.

Tags: , ,

Asp.Net

Globalization in ASP.Net

by WebInfinity 16. giugno 2011 10:06

Spesso abbiamo l'esigenza di creare siti web multilingua e in questo caso asp.net ci viene incontro con le risorse globali e locali. Detto questo per avere un sito con la possibilità di scelta lingua il passo è breve.

Di norma io non utilizzo la funzione di culture settata in auto nel web.config, il motivo è che spesso i motori di ricerca potrebbero indicizzare solo il sito in inglese soprattutto se il dominio non è .com in quanto google fa una scelta per il linguaggio legata al dominio, tipo .it sarà per google in italiano.

A questo punto la scelta più corretta a mio avviso e introdurre nel global.asax un controllo che faccia un check su di un particolare cookie così da avere la lingua settata correttamente su richiesta del visitatore.

Il codice da mettere nel global.asax è:

Protected Sub Application_BeginRequest(ByVal sender As Object, ByVal e As EventArgs)
        Dim cookie As HttpCookie = Request.Cookies("CultureInfo")

        If cookie IsNot Nothing AndAlso cookie.Value IsNot Nothing Then
            Thread.CurrentThread.CurrentUICulture = New CultureInfo(cookie.Value)
            Thread.CurrentThread.CurrentCulture = New CultureInfo(cookie.Value)
        Else
            Thread.CurrentThread.CurrentUICulture = New CultureInfo("it-IT")
            Thread.CurrentThread.CurrentCulture = New CultureInfo("it-IT")
        End If
    End Sub

Fatto questo andremo ad impostare sul controllo che vogliamo il codice per impostare il cookie in questo modo:

Dim cookie As New HttpCookie("CultureInfo")
cookie.Value = "en-US"
Response.Cookies.Add(cookie)

Thread.CurrentThread.CurrentCulture = New CultureInfo("en-US")
Thread.CurrentThread.CurrentUICulture = New CultureInfo("en-US")
Server.Transfer(Request.Path)
Ora il nostro sito web è pronto per il multilanguage.

Tags: , ,

Asp.Net

UrlRewriting e Asp.Net

by WebInfinity 14. giugno 2011 16:16

Tutti i siti web con pagine dinamiche hanno difficoltà ad essere indicizzati sui motori di ricerca, questo perchè google non ama link tipo:

details.aspx?Cat=Libri&Type=Fanatscienza

ma sarebbe meglio

/Libri/Fantascienza

In Asp.Net ci sono diversi metodi per integrare la riscrittura dell'url.

Oggi prendiamo in considerazione urlrewriter.net che è un ottimo compromesso per l'url rewriting.

Il primo passo da fare è andare nel web.config e modificare la sezione httpmodules come mostrato di seguito:

 

<?xml version="1.0"?>

<configuration>

  <configSections>
    <section name="rewriter"  
             requirePermission="false" 
             type="Intelligencia.UrlRewriter.Configuration.RewriterConfigurationSectionHandler, Intelligencia.UrlRewriter" />
  </configSections>
  
  <system.web>
      
    <httpModules>
      <add name="UrlRewriter" type="Intelligencia.UrlRewriter.RewriterHttpModule, Intelligencia.UrlRewriter"/>
    </httpModules>
    
  </system.web>

  <rewriter>
    <rewrite url="~/products/books.aspx" to="~/products.aspx?category=books" />
    <rewrite url="~/products/CDs.aspx" to="~/products.aspx?category=CDs" />
    <rewrite url="~/products/DVDs.aspx" to="~/products.aspx?category=DVDs" />
  </rewriter>  
  
</configuration>

 

A questo punto il rewrite è già abilitato però per evitare che in fase di postback i nostri url "impazziscano" aggiungeremo nella cartella App_Code e App_Browsers due file come nella foto

I file li trovate a questo indirizzo: urlrewriting

Questo post è stato estrapolato dal blog di ScottGu quindi per approfondimenti andate a visitarlo.

Tags: , , ,

Asp.Net

Chi siamo

WebInfinity è una web agency che si occupa di realizzazione siti web in Asp.Net e XHTML, posizionamento sui motori di ricerca e hosting.

Lista mensile