Luca Annuiti

il mio Blog personale su Virtualizzazione, SharePoint, Programmazione e ...

Umbraco: utilizzare i Tag

Questo righe di codice (Razor) permettono di visualizzare tutti i Tag utilizzati:

var tagList = Umbraco.TagQuery.GetAllContentTags().OrderBy(t => t.Text);

foreach (var tag in tagList)
{
<a href="#=">@tag.Text (@tag.NodeCount)</a>
}

Con queste righe invece è possibile filtrare i nodi in base ai tag utilizzati:

var pages = CurrentPage.Children.Where("Visible");   
var allNodesWithTags = pages.Where("nmyField != \"\"");

List<string> taglist = new List<string>();
foreach (var node in allNodesWithTags)
{
taglist.AddRange(node.
nmyField.ToString().Split(','));
}

taglist = taglist.OrderBy(q => q).ToList();

@foreach (string tag in taglist.Distinct())
{
<li><a href="#?tag=@tag">@tag</a></li>
}

Umbraco: loggare eventi custom

Le funzioni da utilizzare per inserire nei log di umbraco messaggi custom sono le seguenti:

LogHelper.Info(System.Type, System.Func)
LogHelper.Error(System.Type, string, System.Exception)

E' necessario include la direttiva @using Umbraco.Core.Logging nella pagina o codice sorgente.


@using Umbraco.Core.Logging

@{ // Inserimento di informazioni "custom" LogHelper.Info(this.GetType(), "Message"); //Inserimento di errori "custom" LogHelper.Error(System.Reflection.MethodBase.GetCurrentMethod().DeclaringType, "messagge2", ex); }


Umbraco: specificare la durata della cache per i contenuti statici

E' possibile specificare la durata della cache per contentuti statici specificando il percorso della cartella semplicemente aggiungende alla fine del file web.config (prima della chiurusa </configuration>) queste righe:

<location path="media">
    <system.webServer>
        <staticContent>
            <clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="7.00:00:00" />
        </staticContent>
    </system.webServer>
</location>

Il parametro path è il nome della cartella, quindi è possibile replicare l'impostazione per differenti percorsi.
Il valore cacheControlMaxAge è espresso in giorni.ore.minuti.secondi.

Umbraco: redirect 301 con querystring nel campo virtualurl

Problema: inserendo nel file UrlRewriting.config una regola dove nel campo virtualurl un indirizzo che contiene dei paramentri, questi ultimi vengono ignorati

<add name="DEMO"
virtualUrl="/demo.aspx?PageID=1110"
destinationUrl="/new-url/"
rewriteUrlParameter="IncludeQueryStringForRewrite"
ignoreCase="true"
redirect="Domain"
redirectMode="Permanent" />
La motiviazione è semplice, il "?" è una carattere riservato, quindi è necessario modifcare la stringa con una sequenza di escape in modo che sia riconosciuta:
virtualUrl="(\/demo\.aspx\?PageID=1110)"





Umbraco: gestire pagine o file con estensioni differenti da .aspx

Per gestire pagine o file con estensioni differenti da .aspx è necessario modificare il file web.config aggiungendo alla sezione system.web->httpHandlers la seguente riga (o piu righe a seconda delle estensioni da gestire):

<add name="UmbracoBaseMappingAsp" path="*.EXT" verb="*" type="umbraco.BasePages.BasePage" resourceType="Unspecified" preCondition="integratedMode" />