<?xml version="1.0" encoding="iso-8859-1"?>
<rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/">
	<channel>
		
		<title>My Geek Memos</title>
		<link>http://www.mygeekmemos.com/</link>
		<description>Appunti digitali su SAP, ABAP, HTML, Webdesign e tutto ciò che è IT</description>
		<language>it</language>
		<image>
			<title>My Geek Memos</title>
			<url>http://www.mygeekmemos.com/EXT:tt_news/ext_icon.gif</url>
			<link>http://www.mygeekmemos.com/</link>
			<width></width>
			<height></height>
			<description>Appunti digitali su SAP, ABAP, HTML, Webdesign e tutto ciò che è IT</description>
		</image>
		<generator>TYPO3 - get.content.right</generator>
		<docs>http://blogs.law.harvard.edu/tech/rss</docs>
		
		
		
		<lastBuildDate>Sat, 11 Apr 2009 08:51:00 -0400</lastBuildDate>
		
		
		<item>
			<title>Tre estensioni di TYPO3 irrinunciabili</title>
			<link>http://www.mygeekmemos.com/blog/articoli/le-tre-esten.html</link>
			<description>Per quanto completo e potente possa essere TYPO3, capita di imbattersi in qualche sua mancanza che...</description>
			<content:encoded><![CDATA[<p class="bodytext">Per quanto completo e potente possa essere TYPO3, capita di imbattersi in qualche sua mancanza che si potrebbe definire banale. Prima ancora di sviluppare soluzioni che integrino tali mancanze, è opportuno verificare se già qualcunaltro non abbia provveduto a creare una estensione che arrichisca TYPO3 della feature mancante.<br /> Una volta scovate queste preziose &quot;perle&quot; si finisce per installarle di default in ogni nuovo progetto TYPO3.<br /><br />Per gestire il layout dei siti in TYPO3 utilizzo Templavoila, vista l'estrema libertà che tale strumento mi permette di avere. Un suo grossissimo difetto però è la non immediata gestione dello <i>sliding</i> dei contenuti, ovvero la capacità, da parte di una pagina, di ereditare i contenuti di medesime <i>content area</i> dalla pagina madre. E' il caso di contenuti presenti nelle classiche colonne laterali, aree del sito utilizzate spesso per informazioni di supporto e omnipresenti.<br />La soluzione ha il nome di una sola estensione: <b>kb_tv_cont_slide</b>. Una volta installata basterà modificare la <i>Data Structure</i> del vostro template, aggiungendo un paio di righe di Typoscript per ogni campo per cui vorrete attivare lo sliding e il gioco è fatto!<br /><br />Utilizzando Templavoila, a volte capita di dover inserire degli elementi di contenuto basati su codice typoscript (ad esempio per creare dei menù) e quindi di dover prevedere già in fase di creazione del template un campo definito proprio come oggetto Typoscript. Aggiungere in un secondo momento altri oggetti Typoscript significa quasi sempre mettere mano al template.<br />Esiste invece l'estensione <b>tscobj</b>&nbsp; che permette di includere oggetti typoscript in una content area come si farebbe per un comune elemento di contenuto. L'installazione e l'utilizzo sono di una semplicità impressionante.<br /><br />Termina il terzetto un'estensione creata dall'ottimo Dmitry Dulepov, <b>dd_googlesitemap</b>, che vi permetterà di creare e &quot;dare in pasto&quot; a Google la mappa del vostro sito al fine di migliorarne l'indicizzazione.  </p>]]></content:encoded>
			<category>TYPO3</category>
			
			
			<pubDate>Sat, 11 Apr 2009 08:51:00 -0400</pubDate>
			
		</item>
		
		<item>
			<title>SAP e Unicode: field symbol con casting</title>
			<link>http://www.mygeekmemos.com/blog/articoli/sap-e-unicod.html</link>
			<description>Nelle vecchie versioni SAP gli sviluppatori erano soliti utilizzare degli array di caratteri come...</description>
			<content:encoded><![CDATA[<p class="bodytext">Nelle vecchie versioni SAP gli sviluppatori erano soliti utilizzare degli array di caratteri come contenitori per delle strutture costituite da campi con tipi di dati differenti. <br /> <div class="code tx-vjrtecodesnippets"><div style="font-family: monospace;"><ol><li class="li1"><div class="de1"><span class="kw2">DATA</span><span class="sy0">:</span> BEGIN OF struttura,</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp;    campo1<span class="br0">&#40;</span><span class="nu0">10</span><span class="br0">&#41;</span>  <span class="kw4">TYPE</span> c,</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp;    campo2<span class="br0">&#40;</span><span class="nu0">2</span><span class="br0">&#41;</span>&nbsp; <span class="kw4">TYPE</span> x,</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp;    campo3<span class="br0">&#40;</span><span class="nu0">10</span><span class="br0">&#41;</span>  <span class="kw4">TYPE</span> p,</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp;    campo4<span class="br0">&#40;</span><span class="nu0">40</span><span class="br0">&#41;</span>  <span class="kw4">TYPE</span> c,</div></li><li class="li1"><div class="de1">&nbsp; &nbsp;   END OF struttura.</div></li><li class="li1"><div class="de1">&nbsp;<span class="kw2">DATA</span><span class="sy0">:</span> stringa<span class="br0">&#40;</span><span class="nu0">500</span><span class="br0">&#41;</span> <span class="kw4">TYPE</span> c.</div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">&nbsp;<span class="me1">stringa</span> <span class="sy0">=</span> struttura. </div></li></ol></div></div><br />Nelle versioni più recenti di SAP una istruzione di assegnazione di questo genere porta ad un errore di compatibilità con lo Unicode.<br /><br />La soluzione più ovvia sarebbe passare la struttura campo per campo, aiutandosi con delle variabili buffer per poi ricrearla per intero nella stringa. Un modo più veloce di risolvere il problema fa uso dei field symbols con l'opzione <i>casting</i>. In pratica si fanno puntare due field symbols rispettivamente sulle locazioni di memoria occupate dalla struttura e dalla stringa e si compie il passaggio di dati fra field symbols.</p>
<p class="bodytext"> <div class="code tx-vjrtecodesnippets"><div style="font-family: monospace;"><ol><li class="li1"><div class="de1"><span class="kw2">FIELD-SYMBOLS</span><span class="sy0">:</span> &lt;stringa&gt;&nbsp;  <span class="kw4">TYPE</span> x,</div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp;     &lt;struttura&gt; <span class="kw4">TYPE</span> x.</div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">&nbsp;<span class="kw3">ASSIGN</span> stringa <span class="kw4">TO</span> &lt;stringa&gt; CASTING.</div></li><li class="li1"><div class="de1">&nbsp;<span class="kw3">ASSIGN</span> struttura <span class="kw4">TO</span> &lt;struttura&gt; CASTING.</div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">&nbsp;&lt;stringa&gt; <span class="sy0">=</span> &lt;struttura&gt;. </div></li></ol></div></div></p>
<p class="bodytext">Si fa presente che che i dati nella stringa contenitore non sono adatti ad essere conservati in maniera permanente nel database. Utilizzare quindi questo metodo solo se si è certi che i dati manipolati sono usati in modo temporaneo nell'Application Server.<br /> </p>]]></content:encoded>
			<category>SAP - Sviluppo</category>
			
			
			<pubDate>Sat, 04 Apr 2009 04:33:00 -0400</pubDate>
			
		</item>
		
		<item>
			<title>RealURL facile: parte 1</title>
			<link>http://www.mygeekmemos.com/blog/articoli/realurl-faci.html</link>
			<description>La gente molto spesso lamenta che RealURL sia difficile da configurare. Credo che questo...</description>
			<content:encoded><![CDATA[<p class="bodytext">La gente molto spesso&nbsp;lamenta che RealURL sia difficile da configurare. Credo che questo accada perchè il manuale di RealURL è scritto come una guida di riferimento, non come un tutorial.<br />Per questo motivo non c'è nulla da cui iniziare per un principiante. Le ultime versioni di RealURL includono una configurazione automatica, che va bene per siti web semplici. E' vero anche che non è abbastanza flessibile. Una configurazione manuale vincerebbe sempre su una automatica. Questo articolo fornisce una semplice guida per una configurazione manuale di RealURL. Non è breve,&nbsp; quindi prendiamo del tempo per leggerlo.<br /><br />L'intera guida è divisa in diverse parti. La prima parte descrive la configurazione in generale. Le altre parti descriveranno i dettagli, i tip&amp;tricks e le best practices.</p>
<h2>Basi</h2>
<p class="bodytext">Questa sezione copre i principi generali di RealURL.</p>
<h3>RealURLed URL</h3>
<p class="bodytext">Prima di partire con la configurazione, deve essere chiaro di che parti sono costituiti gli URLs di RealURL.<br /><br />Un tipico URL di RealURL consiste di diversi segmenti:<br /><img src="fileadmin/user_upload/2009/realurl-segments.png" height="161" width="470" alt=""><br /><br /></p>
<p class="bodytext">I segmenti sono (in ordine di apparizione):</p><ul><li>preVars<br />Sono anteposti al percorso della pagina. Di solito si tratta di identificatori di lingua. Non dovrebbero essere troppi lunghi.</li><li>Page path<br />Questo è un percorso che porta alla pagina. E' creato attraversando un albero di pagine dalla radice del sito web sino alla pagina di destinazione. Ci sono diversi campi che possono essere utilizzati per creare i segmenti. Di solito si tratta dei titolo della pagina, dell'alias, del sottotitolo e di un campo speciale di RealURL chiamato &quot;Path segment&quot;. </li><li>fixedPostVars<br />Sono parametri non prefissati sulla pagina. Sono molto simili al preVars ma vanno dopo la pagina. Di solito sono impostati soltanto per pagine specifiche e non per l'intero sito.</li><li>postVars<br />Sono parametri prefissati sulla pagina. Per esempio, tx_ttnews[tt_news]=5 può essere convertito in /news/test-news-item/. Qui “news” identifica tx_ttnews[tt_news] e il 5 è rimpiazzato dal titolo della news.&nbsp;</li></ul><p class="bodytext">Ogni segmento (eccetto il page path) può avere diverse variabili.</p>
<h3>Basi di configurazione</h3>
<p class="bodytext"> Normalmente la configurazione di RealURL è conservata in un file separato. Questo file è di solito incluso in typo3conf/localconf.php.<br /><br />La configurazione di RealURL è un array PHP annidato. La configurazione è creata per un singolo sito web. A rigor di logica appare come:<br /><div class="code tx-vjrtecodesnippets"><div style="font-family: monospace;"><ol><li class="li1"><div class="de1"><span class="re0">$TYPO3_CONF_VARS</span><span class="br0">&#91;</span><span class="st0">'EXTCONF'</span><span class="br0">&#93;</span><span class="br0">&#91;</span><span class="st0">'realurl'</span><span class="br0">&#93;</span> <span class="sy0">=</span> <span class="kw3">array</span><span class="br0">&#40;</span></div></li><li class="li1"><div class="de1">&nbsp; <span class="st0">'www.domain1.com'</span> <span class="sy0">=&gt;</span> <span class="kw3">array</span><span class="br0">&#40;</span></div></li><li class="li1"><div class="de1">&nbsp; &nbsp; <span class="sy0">...</span></div></li><li class="li1"><div class="de1">&nbsp; <span class="br0">&#41;</span><span class="sy0">,</span></div></li><li class="li1"><div class="de1">&nbsp; <span class="st0">'domain1.com'</span> <span class="sy0">=&gt;</span> <span class="st0">'www.domain1.com'</span><span class="sy0">,</span></div></li><li class="li1"><div class="de1">&nbsp; <span class="st0">'www.domain2.com'</span> <span class="sy0">=&gt;</span> <span class="kw3">array</span><span class="br0">&#40;</span></div></li><li class="li1"><div class="de1">&nbsp; &nbsp; <span class="sy0">...</span></div></li><li class="li1"><div class="de1">&nbsp; <span class="br0">&#41;</span><span class="sy0">,</span></div></li><li class="li1"><div class="de1">&nbsp; <span class="st0">'domain2.com'</span> <span class="sy0">=&gt;</span> <span class="st0">'www.domain1.com'</span><span class="sy0">,</span></div></li><li class="li1"><div class="de1"><span class="br0">&#41;</span><span class="sy0">;</span></div></li></ol></div></div>Ci sono due tipi di inserimenti qui. Un nome di dominio può puntare ad un altro nome di dominio o ad un array di configurazione.<br />Se un nome di dominio punta ad un altro nome di dominio, RealURL prenderà la configurazione del dominio puntato. Possono esistere diversi puntatori nella catena.<br />Se un nome di dominio punta ad un array, questo è la sua configurazione. Approfondiremo a breve.<br />Se c'è solo un dominio, non c'è bisogno di specificare il suo nome. L'intera configurazione allora può sembrare qualcosa tipo:<br /><div class="code tx-vjrtecodesnippets"><div style="font-family: monospace;"><ol><li class="li1"><div class="de1"><span class="re0">$TYPO3_CONF_VARS</span><span class="br0">&#91;</span><span class="st0">'EXTCONF'</span><span class="br0">&#93;</span><span class="br0">&#91;</span><span class="st0">'realurl'</span><span class="br0">&#93;</span> <span class="sy0">=</span> <span class="kw3">array</span><span class="br0">&#40;</span></div></li><li class="li1"><div class="de1">&nbsp; <span class="st0">'_DEFAULT'</span> <span class="sy0">=&gt;</span> <span class="kw3">array</span><span class="br0">&#40;</span></div></li><li class="li1"><div class="de1">&nbsp; &nbsp; <span class="sy0">...</span></div></li><li class="li1"><div class="de1">&nbsp; <span class="br0">&#41;</span><span class="sy0">,</span></div></li><li class="li1"><div class="de1"><span class="br0">&#41;</span><span class="sy0">;</span></div></li></ol></div></div> Questo caso è valido anche se domain.com è un alias di www.domain.com.<br /><br />L'array di configurazione per ogni dominio (or per _DEFAULT) consiste in subarray, chiamati sezioni di configurazione.</p>
<h3>Sezioni di configurazione</h3>
<p class="bodytext">Esistono sei sezioni di configurazione. Nessuna di loro è obbligatoria ma almeno due sono di solito utilizzate. Di seguito un rapido sguardo alle sezioni:</p><ul><li>init<br />Questa sezione descrive le opzioni generali di RealURL, come le cache, i valori di ritorno degli URL vuoti e delle altre opzioni.</li><li>preVars<br />Questa sezione definisci le preVars (guarda l'esempio di URL sopra!). Molto semplice.</li><li>fixedPostVars<br />Questa sezione definisce le fixedPostVars.</li><li>postVarSets<br />Questa sezione definisce le postVarsSets. Questa è la parte di configurazione più delicata.</li><li>pagePath<br />Questa sezione è di solito una sezione copia/incolla. Non cambia molto fra i diversi server. Tuttavia ha un parametro (rootpage_id), che è di fondamentale importanza nella configurazione multidominio.</li><li>fileName<br />Tale sezione permette di terminare gli URLs con qualcosa di simile a &quot;rss.xml&quot; o &quot;print.html&quot;. Anche questa è in linea di massima una sezione copia/incolla.</li></ul><h3>Creare la sezione init</h3>
<p class="bodytext">La sezione init normalmente contiene le direttive della configurazione della cache ed alcune altre utili opzioni. Di seguito un breve elenco che si dovrebbe avere nella propria configurazione:</p><ul><li>'enableCHashCache' =&gt; true<br />Utilizziamo questa se il sito web non usa nessuna estensione con parametri&nbsp; nell'URL. Dettagli circa cHash possono trovarsi <a href="http://dmitry-dulepov.com/post-details/archive/2008/may/22/linking_properly_in_your_typo3_code/" title="Opens external link in new window" class="external-link" >qui</a> e <a href="http://typo3.org/development/articles/the-mysteries-of-chash/" title="Opens external link in new window" class="external-link" >qui</a>.</li><li>'appendMissingSlash' =&gt; 'ifNotFile'<br /> Questa direttiva aggiunge uno slasj alla fine dell'URL. Appare soltanto più gradevole.</li><li>'enableUrlDecodeCache' =&gt; true<br />Permette di utilizare la veloce cache basata sul database quando un utente visita una pagina. E' un enorme miglioramento di performance rispetto a quando la cache è disabilitata.</li><li>'enableUrlEncodeCache' =&gt; false<br />Come sopra ma per la codifica. E' utilizzata quando si creano i link. Non c'è alcun motivo di disabilitare questa direttiva come quella precedente.</li></ul><p class="bodytext">Questo elenco non è completo. Possiamo trovare altre direttive nel manuale di RealURL.</p>
<h3>Creare la sezione prevars</h3>
<p class="bodytext">La sezione consiste di una o più parti. Ogni parte è essa stessa un array e definisce una singola preVar. Esempio:<br /><div class="code tx-vjrtecodesnippets"><div style="font-family: monospace;"><ol><li class="li1"><div class="de1"><span class="kw3">array</span><span class="br0">&#40;</span></div></li><li class="li1"><div class="de1">&nbsp; <span class="st0">'GETvar'</span> <span class="sy0">=&gt;</span> <span class="st0">'L'</span><span class="sy0">,</span></div></li><li class="li1"><div class="de1">&nbsp; <span class="st0">'valueMap'</span> <span class="sy0">=&gt;</span> <span class="kw3">array</span><span class="br0">&#40;</span></div></li><li class="li1"><div class="de1">&nbsp; &nbsp; <span class="st0">'en'</span> <span class="sy0">=&gt;</span> <span class="nu0">0</span><span class="sy0">,</span></div></li><li class="li1"><div class="de1">&nbsp; &nbsp; <span class="st0">'de'</span> <span class="sy0">=&gt;</span> <span class="nu0">1</span><span class="sy0">,</span></div></li><li class="li1"><div class="de1">&nbsp; <span class="br0">&#41;</span><span class="sy0">,</span></div></li><li class="li1"><div class="de1">&nbsp; <span class="st0">'noMatch'</span> <span class="sy0">=&gt;</span> <span class="st0">'bypass'</span></div></li><li class="li1"><div class="de1"><span class="br0">&#41;</span><span class="sy0">,</span></div></li></ol></div></div><br />In questo esempio, preVar è associata con il parametro di URL &quot;L&quot;. valueMap dice che L=0 è mappato con /en/, L=1 è mappato con /de/. noMatch dice che qualsiasi altro valore di L sarà ignorato silenziosamente.<br /><br />E' possibile specificare anche valori di default o fare altre conversioni. Per i dettagli si incoraggia il lettore a guardare il manuale di RealUrl.</p>
<h3>Creare la sezione fixedPostVars</h3>
<p class="bodytext">Le fixedPostVars sono molti simili alle preVars. Ci sono solo due differenze:</p><ul><li>le fixedPostVars sono piazzate nell'URL dopo il percorso della pagina.</li><li>le fixedPostVars devono avere o un page id o una keyword _DEFAULT (per tutte le pagine).</li></ul><p class="bodytext">Guardiamo l'esempio:</p>
<p class="bodytext">&nbsp;</p>
<p class="bodytext"><div class="code tx-vjrtecodesnippets"><div style="font-family: monospace;"><ol><li class="li1"><div class="de1"><span class="nu0">35</span> <span class="sy0">=&gt;</span> <span class="kw3">array</span><span class="br0">&#40;</span></div></li><li class="li1"><div class="de1">&nbsp; <span class="kw3">array</span><span class="br0">&#40;</span></div></li><li class="li1"><div class="de1">&nbsp; &nbsp; <span class="st0">'GETvar'</span> <span class="sy0">=&gt;</span> <span class="st0">'tx_myext_pi1[no_comments]'</span><span class="sy0">,</span></div></li><li class="li1"><div class="de1">&nbsp; &nbsp; <span class="st0">'valueMap'</span> <span class="sy0">=&gt;</span> <span class="kw3">array</span><span class="br0">&#40;</span></div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; <span class="st0">'no-comments'</span>  <span class="sy0">=&gt;</span> <span class="nu0">1</span></div></li><li class="li1"><div class="de1">&nbsp; &nbsp; <span class="br0">&#41;</span><span class="sy0">,</span></div></li><li class="li1"><div class="de1">&nbsp; &nbsp; <span class="st0">'noMatch'</span> <span class="sy0">=&gt;</span> <span class="st0">'bypass'</span><span class="sy0">,</span></div></li><li class="li1"><div class="de1">&nbsp; <span class="br0">&#41;</span></div></li><li class="li1"><div class="de1"><span class="br0">&#41;</span><span class="sy0">,</span></div></li></ol></div></div></p>
<p class="bodytext">C'è più di un array contenitore attorno alla vera definizione della fixedPostVar. Questo array contenitore dice che la pagina con id 35 ha questa fixedPostVar. Quindi la fixedPostVar &quot;no-comments&quot; non sarà applicata alle altre pagine (a meno che non sia aggiunta anche per loro). C'è anche un 'noMatch' per saltare completamente questa variabile quando non ha senso averla.<br />Nel caso sia necessario avere più di una fixedPostVar su questa pagina, questa seguirà la prima, come si può vedere:</p>
<p class="bodytext"><div class="code tx-vjrtecodesnippets"><div style="font-family: monospace;"><ol><li class="li1"><div class="de1"><span class="nu0">35</span> <span class="sy0">=&gt;</span> <span class="kw3">array</span><span class="br0">&#40;</span></div></li><li class="li1"><div class="de1">&nbsp; <span class="kw3">array</span><span class="br0">&#40;</span></div></li><li class="li1"><div class="de1">&nbsp; &nbsp; <span class="sy0">...</span></div></li><li class="li1"><div class="de1">&nbsp; <span class="br0">&#41;</span><span class="sy0">,</span></div></li><li class="li1"><div class="de1">&nbsp; <span class="kw3">array</span><span class="br0">&#40;</span></div></li><li class="li1"><div class="de1">&nbsp; &nbsp; <span class="sy0">...</span></div></li><li class="li1"><div class="de1">&nbsp; <span class="br0">&#41;</span></div></li><li class="li1"><div class="de1"><span class="br0">&#41;</span></div></li></ol></div></div></p>
<p class="bodytext">Le fixedPostVars appariranno nell'ordine definito. E' importante pensare bene all'ordine e mantenerlo una volta che sia definito o la decodifica non sarà fatta in maniera appropriata.</p>
<h3>Creare i set di postVars</h3>
<p class="bodytext">I postVarsSets assomigliano alle fixedPostVars ma hanno in più dei prefissi che identificano una postVar. Ciò permette di inserire delle postVars in qualsiasi ordine all'interno dell'URL. Permette anche di avere un set flessibile di postVars.<br /><br />Una postVar nell'URL può in realtà definire diversi parametri reali GET. Per esempio:<br /><div class="code tx-vjrtecodesnippets"><div style="font-family: monospace;"><ol><li class="li1"><div class="de1"><span class="st0">'_DEFAULT'</span> <span class="sy0">=&gt;</span> <span class="kw3">array</span><span class="br0">&#40;</span></div></li><li class="li1"><div class="de1">&nbsp; <span class="st0">'myparam'</span> <span class="sy0">=&gt;</span> <span class="kw3">array</span><span class="br0">&#40;</span> <span class="co1">// postVar start</span></div></li><li class="li1"><div class="de1">&nbsp; &nbsp; <span class="kw3">array</span><span class="br0">&#40;</span></div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; <span class="st0">'GETvar'</span> <span class="sy0">=&gt;</span> <span class="st0">'tx_mext_pi1[p1]'</span><span class="sy0">,</span></div></li><li class="li1"><div class="de1">&nbsp; &nbsp; <span class="br0">&#41;</span><span class="sy0">,</span></div></li><li class="li1"><div class="de1">&nbsp; &nbsp; <span class="kw3">array</span><span class="br0">&#40;</span></div></li><li class="li1"><div class="de1">&nbsp; &nbsp; &nbsp; <span class="st0">'GETvar'</span> <span class="sy0">=&gt;</span> <span class="st0">'tx_mext_pi1[p2]'</span><span class="sy0">,</span></div></li><li class="li1"><div class="de1">&nbsp; &nbsp; <span class="br0">&#41;</span><span class="sy0">,</span></div></li><li class="li1"><div class="de1">&nbsp; <span class="br0">&#41;</span><span class="sy0">,</span>&nbsp; <span class="co1">// postVar end, Other postVar definitions may follow</span></div></li><li class="li1"><div class="de1"><span class="br0">&#41;</span><span class="sy0">,</span></div></li></ol></div></div><br />Ora immaginiamo un URL non codificato come questo:<br /><br /><i>domain.com/index.php</i><br /><br />L'URL codificato apparirà come:<br /><br /><i>domain.com/page/path/myparam/12/34/</i><br /><br />E' anche possibile convertire i numeri in stringhe se si riferiscono a tabelle di database. Si può inoltre utilizzare codice Php per mappare parametri reali GET in parametri codificati e viceversa. Il sistema è estremamente flessibile e permette di fare quasi qualsiasi cosa!</p>
<h3>La sezione pagePath</h3>
<p class="bodytext">La sezione pagePath è di solito utilizzata per ampliare ulteriormente RealURL. Di default RealURL crea URL come questo:<br /><br /><i>domain.com/35/myparam/12/34/</i><br /><br />Per rimpiazzare il page id (35 nell'esempio corrente) con un percorso reale alla pagina, deve essere inserito il seguente contenuto nella sezione pagePath:<br /><div class="code tx-vjrtecodesnippets"><div style="font-family: monospace;"><ol><li class="li1"><div class="de1"><span class="st0">'type'</span> <span class="sy0">=&gt;</span> <span class="st0">'user'</span><span class="sy0">,</span></div></li><li class="li1"><div class="de1"><span class="st0">'userFunc'</span> <span class="sy0">=&gt;</span> <span class="st0">'EXT:realurl/class.tx_realurl_advanced.php:&amp;tx_realurl_advanced-&gt;main'</span><span class="sy0">,</span></div></li></ol></div></div></p>
<p class="bodytext">Esistono altre direttive. La più importante di loro è rootpage_id. Questa direttiva punta alla pagina che è radice (home page) del sito web corrente. Deve essere impostata per configurazioni multidominio e si raccomanda di impostarla anche in configurazioni monodominio (altrimenti RealURL dovrà cercarla). Dimenticare questa direttiva nelle configurazioni multidominio porta ad un comportamento non corretto di RealURL!</p>
<h3>Sezione fileName</h3>
<p class="bodytext">Saltare questa sezione nella configurazione non è pericoloso. In genere non è necessaria a meno non si voglia creare nell'URL accattivanti parti finali dei nomi file.</p>
<h2>Conclusione</h2>
<p class="bodytext">In questo articolo abbiamo passato in rassegna la configurazione di RealURL. Nel prossimo articolo mostreremo come rendere questa configurazione efficace. L'articolo mostrerà alcuni tips&amp;tricks che non sono ovvi leggendo il manuale e che si dovrebbe conoscere. Allora, guardate questo sito per il prossimo articolo!</p>
<p class="bodytext">_____________<br /><br /><i>Questo articolo è una traduzione dell'articolo <a href="http://dmitry-dulepov.com/article/realurl-made-easy-part-1.html" title="RealURl made easy: part 1" class="external-link" >RealURL made easy: part 1</a> scritto da <b>Dmitry Dulepov</b> sul suo <a href="http://dmitry-dulepov.com/" title="Dmitry Dulepov Blog" class="external-link" >blog personale</a>.<br /><br />La traduzione è stata autorizzata dall'autore ed essa come l'articolo originale non ricade sotto licenza Creative Commons al contrario della gran parte dei contenuti di <b>My Geek Memos</b>.</i> 		 	</p>]]></content:encoded>
			<category>TYPO3</category>
			
			
			<pubDate>Wed, 25 Mar 2009 11:48:00 -0400</pubDate>
			
		</item>
		
		<item>
			<title>Search Box custom per tt_news</title>
			<link>http://www.mygeekmemos.com/blog/articoli/search-box-c.html</link>
			<description>Una delle più apprezzate e potenti estensioni di TYPO3 è certamente tt_news, il gestore di news per...</description>
			<content:encoded><![CDATA[<p class="bodytext">Una delle più apprezzate e potenti estensioni di TYPO3 è certamente <a href="http://typo3.org/extensions/repository/view/tt_news/current/" title="estensione tt_news su typo3.org" class="external-link-new-window" >tt_news</a>, il gestore di news per eccellenza. Il plugin SEARCH di tt_news è quello che mostra in una pagina il form di ricerca delle news e l'elenco dei risultati. Capita a volte di avere l'esigenza di piazzare il box di ricerca delle news in altre aree del sito, che siano magari costantamente visibili come accade ad esempio in questo blog.<br />La soluzione consiste nel creare un box di ricerca custom e passare l'input che questo riceve al box di ricerca di tt_news. Vediamo passo passo come fare.<br /><br />Il box di ricerca custom verrà creato come un plugin Typoscript (che possiamo chiamare lib.mysearch), utilizzabile anche con Templavoila. Dichiariamolo come un Content Object Array renderizzato senza usare la cache (COA_INT):<br /><div class="code tx-vjrtecodesnippets"><div style="font-family: monospace;"><ol><li class="li1"><div class="de1">lib.mysearch = <span class="kw2">COA_INT</span></div></li></ol></div></div></p>
<p class="bodytext">Creiamo ora il codice html più esterno, ovvero quello relativo al tag html FORM. Per fare ciò creiamo un oggetto di tipo TEXT:<br /><div class="code tx-vjrtecodesnippets"><div style="font-family: monospace;"><ol start="2"><li class="li1"><div class="de1">lib.mysearch <span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">  <span class="nu0">10</span> = <span class="kw2">TEXT</span></div></li></ol></div></div></p>
<p class="bodytext">Costruiamo quindi l'url che valorizzerà il parametro action del tag FORM. Tale url punta alla pagina contenente il plugin SEARCH:<br /><div class="code tx-vjrtecodesnippets"><div style="font-family: monospace;"><ol start="4"><li class="li1"><div class="de1">  <span class="nu0">10</span>.<span class="kw1">typolink</span>.<span class="kw1">parameter</span> = index.php?id=<span class="nu0">8</span>&amp;amp;no_cache=<span class="nu0">1</span></div></li><li class="li1"><div class="de1">  <span class="nu0">10</span>.<span class="kw1">typolink</span>.<span class="kw1">returnLast</span> = <span class="kw1">url</span></div></li></ol></div></div><br />Imbustiamo ora il tutto nel codice HTML:<br /><div class="code tx-vjrtecodesnippets"><div style="font-family: monospace;"><ol start="6"><li class="li1"><div class="de1">  <span class="nu0">10</span>.<span class="kw1">wrap</span> = <span class="re1">&lt;div id=&quot;indexedsearchbox&quot;&gt;</span><span class="re1">&lt;form action=&quot;|&quot; <span class="kw1">method</span>=&quot;post&quot; id=&quot;indexedsearch&quot;&gt;</span><span class="re1">&lt;fieldset&gt;</span></div></li></ol></div></div><br />Completiamo quindi la codifica del form aggiungengo altri oggetti TEXT per ciascuna porzione di codice. Si sarebbe potuto aggiungere tale codice HTML al wrap dell'elemento 10 prima creato ma per una questione di ordine e leggibilità preferiamo dividere il codice in più elementi.<br /><div class="code tx-vjrtecodesnippets"><div style="font-family: monospace;"><ol start="7"><li class="li1"><div class="de1">  </div></li><li class="li1"><div class="de1">  <span class="nu0">20</span> = <span class="kw2">TEXT</span></div></li><li class="li1"><div class="de1">  <span class="nu0">20</span>.<span class="kw1">value</span> = <span class="re1">&lt;input <span class="kw1">name</span>=&quot;tx_ttnews<span class="br0">&#91;</span>swords<span class="br0">&#93;</span>&quot; class=&quot;searchbox-sword&quot; <span class="kw1">type</span>=&quot;text&quot; /&gt;</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">  <span class="nu0">30</span> = <span class="kw2">TEXT</span></div></li><li class="li1"><div class="de1">  <span class="nu0">30</span>.<span class="kw1">value</span> =  <span class="re1">&lt;input <span class="kw1">name</span>=&quot;search&quot;  <span class="kw1">value</span>=&quot;Cerca&quot; class=&quot;searchbox-button&quot; <span class="kw1">type</span>=&quot;submit&quot; /&gt;</span></div></li><li class="li1"><div class="de1">  </div></li><li class="li1"><div class="de1">  <span class="kw1">wrap</span> = | <span class="re1">&lt;/fieldset&gt;</span><span class="re1">&lt;/form&gt;</span><span class="re1">&lt;/div&gt;</span></div></li></ol></div></div><br />L'ultimo wrap imbusta l'intero array ed ha come effetto l'accodare al suo contenuto il codice di chiusura dei tag aperti per la creazione del form.<br />Come si può intuire, con l'oggetto 20 il testo inserito nel form di ricerca viene acquisito dalla variabile globale <i>tx_ttnews[swords]</i> che sarà poi letta è passata al form di ricerca standard di tt_news nella pagina dove abbiamo inserito il plugin SEARCH.<br /><br />Non resta che nascondere il search box standard di tt_news cambiato in <i>hidden</i> la tipologia dei suoi campi.<br /><br />Di seguito il codice typoscript completo:<br /><div class="code tx-vjrtecodesnippets"><div style="font-family: monospace;"><ol><li class="li1"><div class="de1">lib.mysearch = <span class="kw2">COA_INT</span></div></li><li class="li1"><div class="de1">lib.mysearch <span class="br0">&#123;</span></div></li><li class="li1"><div class="de1">  <span class="nu0">10</span> = <span class="kw2">TEXT</span></div></li><li class="li1"><div class="de1">  <span class="nu0">10</span>.<span class="kw1">typolink</span>.<span class="kw1">parameter</span> = index.php?id=<span class="nu0">8</span>&amp;amp;no_cache=<span class="nu0">1</span></div></li><li class="li1"><div class="de1">  <span class="nu0">10</span>.<span class="kw1">typolink</span>.<span class="kw1">returnLast</span> = <span class="kw1">url</span></div></li><li class="li1"><div class="de1">  <span class="nu0">10</span>.<span class="kw1">wrap</span> = <span class="re1">&lt;div id=&quot;indexedsearchbox&quot;&gt;</span><span class="re1">&lt;form action=&quot;|&quot; <span class="kw1">method</span>=&quot;post&quot; id=&quot;indexedsearch&quot;&gt;</span><span class="re1">&lt;fieldset&gt;</span></div></li><li class="li1"><div class="de1">  </div></li><li class="li1"><div class="de1">  <span class="nu0">20</span> = <span class="kw2">TEXT</span></div></li><li class="li1"><div class="de1">  <span class="nu0">20</span>.<span class="kw1">value</span> = <span class="re1">&lt;input <span class="kw1">name</span>=&quot;tx_ttnews<span class="br0">&#91;</span>swords<span class="br0">&#93;</span>&quot; class=&quot;searchbox-sword&quot; <span class="kw1">type</span>=&quot;text&quot; /&gt;</span></div></li><li class="li1"><div class="de1">&nbsp;</div></li><li class="li1"><div class="de1">  <span class="nu0">30</span> = <span class="kw2">TEXT</span></div></li><li class="li1"><div class="de1">  <span class="nu0">30</span>.<span class="kw1">value</span> =  <span class="re1">&lt;input <span class="kw1">name</span>=&quot;search&quot;  <span class="kw1">value</span>=&quot;Cerca&quot; class=&quot;searchbox-button&quot; <span class="kw1">type</span>=&quot;submit&quot; /&gt;</span></div></li><li class="li1"><div class="de1">  </div></li><li class="li1"><div class="de1">  <span class="kw1">wrap</span> = | <span class="re1">&lt;/fieldset&gt;</span><span class="re1">&lt;/form&gt;</span><span class="re1">&lt;/div&gt;</span></div></li><li class="li1"><div class="de1"><span class="br0">&#125;</span></div></li></ol></div></div></p>]]></content:encoded>
			<category>TYPO3</category>
			
			
			<pubDate>Thu, 19 Mar 2009 12:42:00 -0400</pubDate>
			
		</item>
		
		<item>
			<title>L'ennesimo blog ?</title>
			<link>http://www.mygeekmemos.com/blog/articoli/lennesimo-b.html</link>
			<description>Direi di sì, l'ennesimo blog in una rete sovraffollata di blog ma non potevo restarne fuori: devo...</description>
			<content:encoded><![CDATA[<p class="bodytext"><img src="fileadmin/user_upload/2009/logo.jpg" height="150" width="520" alt=""><br />Direi di sì, l'ennesimo blog in una rete sovraffollata di blog ma non potevo restarne fuori: devo bloggare anche io! Il prossimo passo, forse fra un paio di decadi, sarà convincere me stesso ad entrare nel &quot;magico&quot; mondo di facebook, dove tutti sono amici di tutti.<br />Battute a parte, questo blog nasce da una mia esigenza di memorizzare in maniera più strutturata e su un media facilmente raggiungibile i miei &quot;appunti&quot; di lavoro ma anche quelli inerenti una delle mie più grandi passioni, il webdesign. Scriverò quindi di SAP e del suo linguaggio principale (ABAP) ma anche di CSS, HTML, grafica, CMS (Content Management System). Per quanto concerne i CMS in realtà i miei articoli saranno, almeno inizialmente, focalizzati su TYPO3, un framework su cui è costruito questo blog e che ho deciso di utilizzare come base per i siti di mia realizzazione. Si tratta di uno strumento estremamente potente che in pochi conoscono in Italia e che è caratterizzato da una potenza e ricchezza di funzioni direttamente proporzionali alla sua complessità. Lo ritengo  il SAP del webdeveloping, e non so se questo sia un pregio o un difetto.<br />Basta quindi maree di noticine su file di testo, cartelle disordinate di tips e tutorial. Il mio obiettivo è di accentrare il tutto su questo mio blog.</p>
<h2>Non solo Geek</h2>
<p class="bodytext">In realtà è probabile che non ci saranno solo articoli di informatica ma potrei divagare toccando altre mie passioni. La tentazione ogni tanto di salire sul pulpito e partire con l'invettiva, col predicozzo (un classico di molti blogger) sarà fortissima, anche alla luce di quanto sta accadendo in Italia negli ultimi anni. Mi correggo, di quanto gli italiani stanno permettendo che accada in Italia negli ultimi anni. Eccola qui, l'invettiva che infida stava già partendo dalle mie mani veloci sulla tastiera.<br /><br />Di sicuro non scriverò dei miei affari privati, non trasformerò questo blog in un diario personale da far leggere a chiunque si trovi a passare. I diari una volta erano un qualcosa di estremamente privato, da non far leggere neanche al più caro dei conoscenti o da rendere pubblici solo verso la fine di una vita talmente (e realmente) interessante da valere la pena di essere raccontata ad altri.<br />Ora invece il morbo del Grande Fratello ha attecchito facilmente su un terreno fertile di esibizionismo e vuotezza interiore col risultato che la gente esterna la propria intimità e racconta la propria vita davanti ad estranei, avendo forse la presunzione che tutto ciò possa risultare interessante e &quot;speciale&quot;.<br />Di nuovo...l'invettiva, dannazione! Devo trattenermi o dovrò ribattezzare questo blog <i>My Geek Invective</i>.</p>]]></content:encoded>
			
			
			<pubDate>Sat, 14 Mar 2009 07:58:00 -0400</pubDate>
			
		</item>
		
	</channel>
</rss>