giapippo wrote:dimenticavo
dove inserisco questo codice ?
site:
www.overgroup.eu
Code:
<meta name="title" content="{title}"/>
{content assign=pagecontent}
<meta name="description" content="{$pagecontent|strip_tags|truncate:250}">
caro giapippo hai la tendenza U.C.A.S. (ufficio complicazioni affari semplici)
allora, ricapitoliamo...
tu hai due problemi:
– l'indicizzazione di google che riporti correttamente titolo e descrizione del contenuto di pagina principale;
– coerenza dei link sui social network relativamente alle stesse cose e all'immagine di riferimento di quel contenuto.
Per entrambi i problemi il contenuto principale può essere una pagina statica del cms oppure una news che ha caratteristiche dinamiche, cioè appartiene ad una pagina statica, ma presenta contenuti diversi a seconda della chiamata del modulo News.
Nel caso di una pagina statica (nel tuo sito, ad esempio, "Profilo Aziendale", "I nostri servizi", etc...), per definire i metatag nell'head che risolvono i tuoi problemi devi utilizzare i dati del tag {title} e del tag {content}...
nel caso di una pagina dinamica ottenuta da una news, per definire i metatag nell'head che risolvono i tuoi problemi devi utilizzare i dati dell'oggetto {$entry} restituito dal modulo News con il template di dettaglio dell'articolo.
In entrambe le situazioni, per ottenere il metatag open graph che ti serve per indicare il percorso all'immagine da utilizzare però, mentre titolo e descrizione li recuperi come abbiamo visto sopra, qui sei costretto a creare un UDT, cioè, come ti ha spiegato Jo Morg, un tag personalizzato che facendo una sorta di parsing del contenuto di {content} nel caso di pagina statica o di {$entry->content} nel caso di news, restituisca il primo percorso utile della prima immagine presente.
Sotto Estensioni-> tag definiti dall'utente definisci l'UDT e lo chiami "srcpath" (l'esempio considera di restituire solo immagini .jpg o .gif… se volessi, ad esempio, anche .png, andrebbe inserita nell'UDT l'ulteriore clausola "elseif" conseguente)
Code: Select all
$content = $params['content'];
$srcstart = strpos($content, 'src="');
if(substr_count($content, '.jpg" ')!=0) {
$srcend = strpos($content, '.jpg" ');
}elseif(substr_count($content, '.gif" ')!=0) {
$srcend = strpos($content, '.gif" ');
}
$srcpath = substr($content, $srcstart+5, $srcend+4-($srcstart+5));
echo $srcpath;
Questo UDT lo utilizzerai passandogli il parametro relativo al {content} della pagina statica o di {$entry->content} nel caso di News quando avrai necessità di ottenere il percorso della prima immagine contenuta in esso.
PAGINA STATICA
Jo Morg suggerisce di assegnare alla variabile che chiameremo {$pagecontent} il valore del tag {content} subito dopo il tag {process_data}…
Code: Select all
{strip}
{process_pagedata}
{content assign=pagecontent}
per il problema di google, nell'area "<head>" dell'html vanno quindi inseriti:
Code: Select all
<meta name="title" content="{title}"/>
<meta name="description" content="{$pagecontent|strip_tags|truncate:250}">
per il problema dei social network devi inserire i metatag open graph sempre nell'area "<head>" dell'html, però, mentre titolo e descrizione lo fai similmente a quanto descritto sopra, per il tag "og:image" devi richiamare l'UDT spiegato prima:
Code: Select all
<meta property="og:title" content="{title}" />
<meta property="og:description" content="{$pagecontent|strip_tags|truncate:250}" />
<meta property="og:image" content="{srcpath content=$pagecontent}" />
PAGINA NEWS
qui, come si è detto, non si può più utilizzare il tag {content}, ma si deve utilizzare l'oggetto {$entry} restituito richiamando il dettaglio del modulo News. Siccome nella pagina il modulo News potrebbe essere richiamato più volte, per aver sicurezza che il valore di {$entry} è esattamente quello del dettaglio che ci interessa (se il richiamo di dettaglio di News non è l'ultima chiamata di quel modulo avremmo un valore di {$entry} che si riferisce ad un'altra news che non è quella che ci interessa), dobbiamo valorizzare nel template di dettaglio di News il valore di {$entry} all'interno di una variabile ad hoc che chiameremo {$taghead}
Quindi nel template di dettaglio di News metteremo:
Code: Select all
{assign var="taghead" value=$entry}
ora, come per quanto previsto per le pagine statiche, possiamo definire i metatag che ci interessano.
per il problema di google, nell'area "<head>" dell'html vanno quindi inseriti:
Code: Select all
<meta name="title" content="{$taghead->title|cms_escape:htmlall}"/>
<meta name="description" content="{$taghead->content|strip_tags|truncate:250}">
per il problema dei social network devi inserire i metatag open graph sempre nell'area "<head>" dell'html, però, mentre titolo e descrizione lo fai similmente a quanto descritto sopra, per il tag "og:image" devi richiamare l'UDT spiegato prima:
Code: Select all
<meta property="og:title" content="{$taghead->title|cms_escape:htmlall}" />
<meta property="og:description" content="{$taghead->content|strip_tags|truncate:250}" />
<meta property="og:image" content="{srcpath content=$taghead->content}" />
ovvio, che ne caso di News, assegnare il valore di {content} ad una nuova variabile {$pagecontent} non è necessario.