mercoledì 22 novembre 2017

Selezionare Path multipli in una webpart

Al momento le webpart non supportano l'utilizzo di Path multipli, ma possiamo ottenere un risultato simile utilizzando il campo WHERE.

Ad esempio, nel caso in cui volessimo mostrare queste due pagine all'interno di un Universal Viewer:

  • Prodotti
    • Categoria
      • Sezione 1
        • Prodotto A
        • Prodotto B
      • Sezione 2
        • Prodotto C
        • Prodotto D
      • Prodotto E

potremmo inserire nel campo PATH:

/Prodotti/Categoria/%


per poi restringere la selezione con WHERE:

NodeAliasPath like '/Prodotti/Categoria/Sezione 2
OR NodeAliasPath like '/Prodotti/Categoria/Prodotto E'


Ovviamente ci sono molte soluzioni diverse per ottenere un risultato simile; questo esempio vuol solo fornire un'altra freccia al nostro arco.

martedì 31 ottobre 2017

Inserire l'attributo lang nel tag HTML

E' sufficiente inserire nella master page il seguente codice:

<script runat="server">
protected void Page_Load(object sender, EventArgs e)
{
    if (CurrentDocument != null)
    {          
        CMS.UIControls.ContentPage page= this.Page as CMS.UIControls.ContentPage;
        if (page != null)
        {
            string lang= CMS.Localization.LocalizationContext.CurrentCulture.CultureCode;
            page.XmlNamespace += " lang=\"" + lang + "\"";
        }
    }
}
</script>


Fonte: https://devnet.kentico.com/questions/kentico-9-how-to-define-language-in-html

mercoledì 26 luglio 2017

Visualizzare tutti i contenuti indicizzati di una pagina di ricerca come default della pagina stessa

Se si utilizza un componente SmartSearchResults per visualizzare i risultati di un indice tramite una ricerca di tipo SmartSearchFilter come default la lista dei risultati è vuota.

Solo con l'inserimento di una chiave di ricerca si visualizzeranno dei risultati.

Per invertire questa situazione ed avere come default tutti i risultati visualizzati e poi solo quelli filtrati è necessario utilizzare questa chiave di web.config

< add key="CMSSearchOnlyWhenContentPresent" value="false" />

lunedì 17 luglio 2017

Importare una custom table generando anche i task di tutte le righe dei contenuti

Quando si importa una custom table presa da un altro website non vengono generati i task per la creazione e l'inserimento delle singole righe della tabella.

Questo comporta che non si riesce a passare la tabella importata negli altri ambienti.

Ma si può risolvere così:
  1. Importare la tabella inclusa dei contenuti
  2. Duplicare la tabella stessa con un nuovo nome
  3. Cancellare la tabella importata
  4. Spostare un riga di contenuto della nuova tabella e riportarlo al suo posto
Questo genererà tutti gli staging task necessari per creazione e popolamento della custom table.
Nel caso ci fosserà ancora delle mancanze si puà utilizzare il tasto [ Run Subtree Sync ] dalla sezione Data del Content Staging per forzare l'allineamento dei contenuti.

martedì 4 luglio 2017

Come agire sul contenuto dei campi all'interno di una transformation

Quando si prendono dei campi da un page type e si stampano in una trasformation questi vengono stampati esattamente come conservanti nel database.

Ad esempio per i valori di una multiselect vengono salvati e stampati così:

valore1|valore2|valore3

Per poter lavorare su questo aspetto è possibile appendere in fondo al comando di Eval una o più elaborazioni:

 <%# Eval("JobWorkplace").ToString().Replace("|"," / ") %>

Con questo comando l'output sarà:

valore1 / valore2 / valore3

Si possono usare anche altri tipi di elaborazioni come:
 <%#  Eval("Location").ToString().Trim() %>

Altri esempi qui:
https://gist.github.com/greggnakamura/817caeda46d2c7ad1660


Nel caso si stia lavorando con dei risultati di ricerca SmartSearchResults per richiamare i campi del page type dei risultati trovati è necessario usare:

<%# GetSearchValue("JobWorkplace") %>

martedì 20 giugno 2017

Creare un sistema per invalidare la client cache di risorse CSS e Javascript (ma un po di tutto in realtà)

Per invalidare la client cache di risorse linkate nel codice HTML è necessario modificare la chiamata alla risorsa così che il browser si accorga che il file è stato modificato.

E' prassi inserire un falso parametro in GET così che il file, senza cambiare nome, viene percepito come nuovo e quindi scaricato.

Kentico non ha un sistema per automatizzare questo comportamento ma possiamo costruire qualcosa di simile con gli strumenti a nostra disposizione nel backend.

Si tratta di:
  • Creare una custom setting numerica o alfanumerica
  • Impostare una macro nel codice della chiamata della risorsa

Per impostare il custom setting si utilizza Modules, quindi si seleziona Custom settings e si crea una nuova Setting Key



Si imposta la chiave in modo che sia un numero intero incrementale




Una volta salvato questo è il risultato nei Settings del sito web:



A questo punto possiamo utilizzare questo numero come variabile per invalidare le attuali risorse cachate

<link href="~/CMSPages/GetCSS.aspx?stylesheetname=ie8fix&amp;v={%Settings.cache_invalidator#%}" type="text/css" rel="stylesheet" />



Fonti: