liste.accomazzi.net
Sign In
Sign Up
Sign In
Sign Up
Manage this list
×
Keyboard Shortcuts
Thread View
j
: Next unread message
k
: Previous unread message
j a
: Jump to all threads
j l
: Jump to MailingList overview
2025
May
April
March
February
January
2024
December
November
October
September
August
July
June
May
April
March
February
January
2023
December
November
October
September
August
July
June
May
April
March
February
January
2022
December
November
October
September
August
July
June
May
April
March
February
January
2021
December
November
October
September
August
July
June
May
April
March
February
January
2020
December
November
October
September
August
July
June
May
April
March
February
January
2019
December
November
October
September
August
July
June
May
April
March
February
January
2018
December
November
October
September
August
July
June
May
April
March
February
January
2017
December
November
October
September
August
July
June
May
April
March
February
January
2016
December
November
October
September
August
July
June
May
April
March
February
January
2015
December
November
October
September
August
July
June
May
April
March
February
January
2014
December
November
October
September
August
July
June
May
April
March
February
January
2013
December
November
October
September
August
July
June
May
April
March
February
January
2012
December
November
October
September
August
July
June
May
April
March
February
January
2011
December
November
October
September
August
July
June
May
April
March
February
January
2010
December
November
October
September
August
July
June
May
April
March
February
January
2009
December
November
October
September
August
July
June
May
April
March
February
January
2008
December
November
October
September
August
July
June
May
April
March
February
January
2007
December
November
October
September
August
July
June
List overview
Download
Sar-at_designer
May 2014
----- 2025 -----
May 2025
April 2025
March 2025
February 2025
January 2025
----- 2024 -----
December 2024
November 2024
October 2024
September 2024
August 2024
July 2024
June 2024
May 2024
April 2024
March 2024
February 2024
January 2024
----- 2023 -----
December 2023
November 2023
October 2023
September 2023
August 2023
July 2023
June 2023
May 2023
April 2023
March 2023
February 2023
January 2023
----- 2022 -----
December 2022
November 2022
October 2022
September 2022
August 2022
July 2022
June 2022
May 2022
April 2022
March 2022
February 2022
January 2022
----- 2021 -----
December 2021
November 2021
October 2021
September 2021
August 2021
July 2021
June 2021
May 2021
April 2021
March 2021
February 2021
January 2021
----- 2020 -----
December 2020
November 2020
October 2020
September 2020
August 2020
July 2020
June 2020
May 2020
April 2020
March 2020
February 2020
January 2020
----- 2019 -----
December 2019
November 2019
October 2019
September 2019
August 2019
July 2019
June 2019
May 2019
April 2019
March 2019
February 2019
January 2019
----- 2018 -----
December 2018
November 2018
October 2018
September 2018
August 2018
July 2018
June 2018
May 2018
April 2018
March 2018
February 2018
January 2018
----- 2017 -----
December 2017
November 2017
October 2017
September 2017
August 2017
July 2017
June 2017
May 2017
April 2017
March 2017
February 2017
January 2017
----- 2016 -----
December 2016
November 2016
October 2016
September 2016
August 2016
July 2016
June 2016
May 2016
April 2016
March 2016
February 2016
January 2016
----- 2015 -----
December 2015
November 2015
October 2015
September 2015
August 2015
July 2015
June 2015
May 2015
April 2015
March 2015
February 2015
January 2015
----- 2014 -----
December 2014
November 2014
October 2014
September 2014
August 2014
July 2014
June 2014
May 2014
April 2014
March 2014
February 2014
January 2014
----- 2013 -----
December 2013
November 2013
October 2013
September 2013
August 2013
July 2013
June 2013
May 2013
April 2013
March 2013
February 2013
January 2013
----- 2012 -----
December 2012
November 2012
October 2012
September 2012
August 2012
July 2012
June 2012
May 2012
April 2012
March 2012
February 2012
January 2012
----- 2011 -----
December 2011
November 2011
October 2011
September 2011
August 2011
July 2011
June 2011
May 2011
April 2011
March 2011
February 2011
January 2011
----- 2010 -----
December 2010
November 2010
October 2010
September 2010
August 2010
July 2010
June 2010
May 2010
April 2010
March 2010
February 2010
January 2010
----- 2009 -----
December 2009
November 2009
October 2009
September 2009
August 2009
July 2009
June 2009
May 2009
April 2009
March 2009
February 2009
January 2009
----- 2008 -----
December 2008
November 2008
October 2008
September 2008
August 2008
July 2008
June 2008
May 2008
April 2008
March 2008
February 2008
January 2008
----- 2007 -----
December 2007
November 2007
October 2007
September 2007
August 2007
July 2007
June 2007
sar-at_designer@liste.accomazzi.net
1 participants
1 discussions
Start a n
N
ew thread
Accomazzi.net preannuncia Sar-At 11.0
by Luca Accomazzi
Stiamo lavorando da un po’ sulla prossima versione di Sar-At, che probabilmente verrà chiamata Sar-At 11.0, e siamo in grado di annunciare quale sarà la maggior novità che verrà introdotta nel software. Poiché si tratta di una modifica che aprirà molte nuovi possibilità ai webdesigner e agli autori di siti web, abbiamo deciso di comunicare anticipatamente di cosa si tratterà in modo da lasciare ai lettori di questo documento tutto il tempo necessario per riflettere, studiare e pianificare. Sar-At 11 introdurrà un nuovo sistema per la produzione di pagine mastro, molto più flessibile di quello usato sino ad oggi. I template grafici potranno venire arricchiti con il sistema Twig. Approccio a Twig Il primo approccio a Twig, per chi viene da Sar-At, è tranquillizzante. Ci sono differenze di sintassi ma la logica che si può applicare è la stessa. Per esempio, considerate la pagina visibile sul web come
http://www.accomazzi.it/TlibriI121.html
La sua pagina mastro sotto Sar-At 10 è fatta così: {INCLUDE al-header.ihtml} <div role="main"> <div class="contenitore"> <div class="boxSx"> {INCLUDE al-boxsx-menu.ihtml} <div class="box-center-inside"> <ul class='main-ul'> {BEGIN trova_faq_rilevanti} <li> » <a href="TfaqI{id}.html">{title}</a></li> {END trova_faq_rilevanti} </ul> </div> </div> {INCLUDE al-box-destra.ihtml} <div class="centrale"> <div class='divider'> <!-- star cnt --> <h1>{title}</h1> <div class="imgCentrale"><img alt="{title}" src="{copertina}" /></div> <div> <p>{testo}</p> {IF link}<p><a href='{link}'>Sommario dettagliato del libro</a></p>{ENDIF link} {IF editore}<p><strong>Casa editrice:</strong> {editore}.</p>{ENDIF editore} {IF prezzo}<p><strong>Prezzo e disponibilità:</strong> {prezzo}.</p>{ENDIF prezzo} </div> <!-- end cnt --> </div> </div> <!-- end centrale --> </div> <!-- end contenitore --> </div> <!-- end main --> <footer> <p>Ultima revisione: {lastMod} - © 1984-2014 Luca Accomazzi, tutti i diritti riservati</p> </footer> Ed ecco la sua versione Twig per Sar-At 11: {{ include('al-header.ihtml') }} <div role="main"> <div class="contenitore"> <div class="boxSx"> {{ include('al-boxsx-menu.ihtml') }} <div class="box-center-inside"> <ul class='main-ul'> {% for faq in trova_faq_rilevanti %} <li> » <a href="TfaqI{{ faq.id }}.html">{{ faq.title }}</a></li> {% endfor %} </ul> </div> </div> {{ include('al-box-destra.ihtml') }} <div class="centrale"> <div class='divider'> <!-- star cnt --> <h1>{{title}}</h1> <div class="imgCentrale"><img alt="{{title}}" src="{{copertina}}" /></div> <div> <p>{{testo}}</p> {% if link %}<p><a href='{{link}}'>Sommario dettagliato del libro</a></p>{% endif %} {% if editore %}<p><strong>Casa editrice:</strong> {{editore}}.</p>{% endif %} {% if prezzo %}<p><strong>Prezzo e disponibilità:</strong> {{prezzo}}.</p>{% endif %} </div> <!-- end cnt --> </div> </div> <!-- end centrale --> </div> <!-- end contenitore --> </div> <!-- end main --> <footer> <p>Ultima revisione: {{lastMod|date("d/m/Y")}} - © 1984-2014 Luca Accomazzi, tutti i diritti riservati</p> </footer> In effetti le somiglianze sono così forti che stiamo lavorando su un sistema di traduzione automatica dal vecchio formato a quello nuovo. Il quale sarà comunque opzionale: Sar-At 11 continuerà a supportare le pagine mastro vecchio stile e a consentirne la produzione di nuove. Una marcia in più Twig, il cui sito istituzionale si trova all’indirizzo
twig.sensiolabs.org
, offre molte funzionalità che non sono possibili nel contesto delle pagina mastro così come le abbiamo usate sino ad oggi. Tanto per cominciare, le pagine mastro vecchio stile di Sar-At dispongono di una istruzione IF piuttosto minimalista. Possiamo scrivere {IF stock} Questo prodotto è disponibile a magazzino {ELSE stock} Prodotto esaurito {ENDIF stock} Possiamo anche comparare il valore di un campo con una costante, ma solo in uguaglianza. Per esempio {IF colore = giallo} Questo prodotto è offerto in color giallo canarino {ENDIF colore} Twig invece offre anche la possibilità di testare anche se un valore sia diverso, maggiore, minore e di usare gli operatori booleani and, not e or. Per esempio: {% if stock < 10 %} Prodotto in esaurimento! Ordinatelo subito prima che le scorte finiscano! {% endif %} Quando usiamo una Vista in una pagina mastro, a volte sarebbe bene applicare una classe a uno degli elementi, o all’ultimo elemento, per motivi di presentazione. Con le pagine mastro tradizionali questo richiede la scrittura di una Vista ad hoc. Con Twig è possibile affidarsi al linguaggio. Possiamo contare quanti elementi sono restituiti da una Vista, per esempio: {{ nomevista|length }} Trovate un altro esempio in questo stesso documento più sotto, nel paragrafo “maggior leggibilità e maggior flessibilità”. In Twig i campi del database possono venire usati nella pagina mastro così come sono, ma anche dopo un filtraggio che assegna loro un formato. Per esempio, se volete stampare a video il valore di lastMod, ovvero la data in cui la pagina è stata aggiornata, nella pagina mastro tradizionale non avete altre scelta che indicare {lastMod} e vedere la data in forma giorno/mese/anno. Con Twig potete decidere liberamente il formato. Per esempio: {{ lastMod|date("d/m/Y" )}} oppure {{lastMod|date("d/m/Y h”:m:i)}} con anche ore minuti e secondi. Un altro esempio. Nel commercio elettronico il prezzo di un prodotto mostrato con {price} viene prodotto da Sar-At 10 così come si trova nel database. Milleduecento virgola cinquanta euro appariranno come 1200.5 In Twig, possiamo usare il filtro number_format, e scrivendo {{ price|number_format(2, ‘,’, ‘.’) }} avremo a video 1.200,50 Un esempio più complesso. La vista “ultime_cinquanta_news” estrae dalla base dati le notizie più recenti, ma noi vogliamo impaginarle raggruppandole per mese. In una pagina mastro tradizionale è un bel grattacapo. Twig mette a disposizione variabili e cicli, e la cosa diventa facilmente realizzabile: {% set mese_corrente = "Nessuno" %} {% for faq in ultime_cinquanta_news %} {% if ((faq.lastMod | date("F")) != mese_corrente) %} {% set mese_corrente = faq.lastMod | date("F") %} <h1>{{faq.lastMod | date(“F Y")}}</h1> {% endif %} <li>{{faq.lastMod | date("d/m/Y")}} <em>{{faq.title}}</em></li> {% endfor %} Le prestazioni Abbiamo sempre definito Sar-At “il più veloce dei CMS” e questa è una assoluta verità. Il principale motivo per cui il vecchio sistema delle pagine mastro ha le limitazioni che Twig supera è proprio per la ricerca di massime prestazioni che ci ha sempre contraddistinto. Dobbiamo ammettere che una pagina mastro realizzata in Twig appare a video più lentamente di una pagina mastro tradizionale se e solo se voi siete riusciti a sfruttare il meccanismo della cache di Sar-At. D’altra parte, anche Twig ha qualche buona carta da giocare. Le mastro create con Twig vengono compilate in linguaggio PHP e dispongono di una cache propria, meno efficiente di quella di Sar-At ma non drammaticamente tale. Se una vostra pagina mastro non fa uso della cache Sar-At, allora aggiornarla a Twig produrrà un aumento e non una perdita di prestazioni. Chi possiede un sito web di prima grandezza e vuole ottimizzarlo, dunque, potrà decidere di passare a Twig solo le pagine che restano fuori dalla cache Sar-At (per esempio la componente di commercio elettronico). Ricette pronte per l’uso Twig ha una nutrita comunità di sviluppatori a cui ci possiamo rivolgere per cercare soluzioni e consigli, che saranno tutti automaticamente spendibili in Sar-At. Ecco un assaggio:
http://stackoverflow.com/questions/tagged/twig?sort=votes&pageSize=15
Una ventata d’aria fresca Il passaggio a Twig ci dà anche il destro per svecchiare in alcune piccolezze l’architettura Sar-At, specialmente per quanto riguarda alcune caratteristiche introdotte con le versioni 5.0 e precedenti che, a oltre dieci anni di distanza, segnano il passo. Ecco alcuni dettagli da tenere presenti Maggior leggibilità e maggior flessibilità Immaginate di avere una sezione “automobili”, dove nel campo “azienda” avete inserito le marche di auto. Immaginate di avere una sezione “piloti”, dove nel campo “azienda” avete inserito il nome del team per cui ogni sportivo corre. Se nella pagina mastro della sezione automobili inserite una vista che recupera i nomi dei piloti, in Sar-At 10 e precedenti potreste scrivere: {BEGIN tutti_i_piloti} {title} {azienda} {END tutti_i_piloti} Chi apre la pagina mastro e la legge non vede immediatamente che stiamo recuperando l’azienda del pilota e non l’azienda dell’automobile che viene mostrata in questa pagina. Con Twig le cose si fanno più chiare. Nella pagina mastro Twig, {{ azienda }} si riferirà sempre e comunque all’azienda dell’automobile (l’azienda recuperata dal record corrente della sezione corrente). All’interno della vista, i campi sono riferiti usando la notazione vista.nomecampo, nel caso del nostro esempio avremmo: {% for sportivo in piloti %} {{ sportivo.title }} {{sportivo.azienda }}<br /> {% endfor %} Questo tra l’altro significa che, per la prima volta in Sar-At, possiamo usare dentro a una Vista tutti i campi della sezione principale e anche tutti quelli della sezione oggetto della Vista. Nel nostro esempio possiamo usare uno di fianco all’altro {{sportivo.azienda }} e {{ azienda }} Immaginate una pagina mastro della sezione “film” che mostra la scheda di un film, e in un box usando una vista mostra tutti i titoli di tutti i film in catalogo, consentendo di cloccarne uno per andare alla scheda di quel film, ma evidenziando quello che stiamo guardando nel box principale della pagina (l’id corrente) di modo che non sia possibile cliccarlo per tornare alla pagina che si sta già guardando. In Twig è banale: {% for film in catalogo %} {%if film.id = id %} <p class=‘corrente’>{{ film.title }}</p> {% else %} <a class=‘diverso’ href=‘showTwig.php?template=film&id={{ film.id }}’>{{ film.title }}</a> {% endif %} {% endfor %} Abbiamo i vettori, usiamoli Come alcuni di voi già sapranno, showPage trasforma automaticamente i vettori in stringhe. Per esempio se chiamo: showPage.php?template=x&id=1&v[]=1&v[]=2 …e se la pagina mastro vecchio stile contiene {v}, quel che ottengo a schermo è la scritta 1,2 showTwig fa affidamento sul fatto che il sistema Twig supporta i vettori e quindi avremo che al richiamo di showTwig.php?template=x&id=1&v[]=1&v[]=2 {{ v }} è un vettore. Le Viste e i vettori Immaginate di aver scritto una Vista che recupera tutti i contenuti della sezione “categorie”. In Sar-At 10 e precedenti possiamo scrivere {BEGIN tutte_categorie} {title}<br /> {END tutte_categorie} Come abbiamo accennato sopra, questa scrittura ha un perfetto equivalente in Twig e cioè {% for categoria in tutte_categorie %} {{ categoria.title }}<br /> {% endfor %} In Twig però non c’è obbligo di scandire le categorie nell’ordine. La pagina mastro può contenere: {{ tutte_categorie[3][‘title'] }} e questo mostrerà nella vostra pagina mastro il nome della terza categoria. Variabili get e post Come alcuni di voi già sapranno, showPage accetta in ingresso informazioni da GET e da POST. In altre parole, se chiamo showPage.php?template=x&id=1&masterPage=esempio.html&provincia=Milano allora all’interno della pagina mastro è possibile scrivere <p>Hai selezionato la provincia di {provincia}</p> Inoltre, le Viste che vengono chiamate in quella pagina possono usare la variabile SQL @provincia per lavorare. Tuttavia questo rende difficile validare la pagina, perché Sar-At in fase di validazione non vede il valore di “provincia” nella URL. Sino ad oggi abbiamo risolto il problema con un intervento manuale a linea di comando e cioè UPDATE sarelmasterpages SET urlParams=‘/provincia/‘; Ovviamente si tratta di una opzione molto potente, ma tutt’altro che comoda da usare per il webdesigner. Introduce anche qualche ambiguità perché chi legge la pagina mastro non ha nessun modo per capire immediatamente che il valore di “provincia” deve venire dalla URL. Passando a Twig, abbiamo scelto di inserire i valori della URL in un vettore chiamato _GET (o in alternativa, per le pagine richiamate con un form method=‘post’, nel vettore _POST). Quindi se venisse chiamata questa URL: showTwig.php?template=x&id=1&masterPage=esempio.html&provincia=Milano avremmo che {{ _GET.provincia }} vale “Milano”. sarel_userlogged e sarel_username Nelle sezioni riservate agli utenti registrati siamo abituati a infarcire le pagine mastro di righe come questa: {IF sarel_userlogged} <p>Bentornato, {sarel_username}! (Se non sei {sarel_username}, <a href='sarat/cart/forgetBuyer.php'>clicca qui</a>) {ELSE sarel_userlogged} …eccetera Nelle pagine mastro realizzate con Twig useremo in futuro: {% if saratuser.islogged %} <p>Bentornato, {{ saratuser.username }}! (Se non sei {{ saratuser.username }}, <a href='sarat/cart/forgetBuyer.php'>clicca qui</a>). {% else %} …eccetera Introduciamo cioè l’oggetto saratuser, che prende il posto della coppia sarel_userlogged e sarel_username ma aggiunge ulteriori informazioni saratuser.islogged Utente registrato (vero) o anonimo (falso) saratuser.username Nome utente saratuser.provider Metodo utilizzato per fare login (per esempio, Twitter o Facebook o Sar-At) saratuser.groupname Gruppo di utenti cui appartiene saratuser.groupid Identificatore numerico del gruppo di utenti cui appartiene Alcune accortezze In Twig maiuscole e minuscole fanno differenza, mentre nelle pagine mastro vecchio stile di Sar-At questo non è vero. Quindi e per esempio, una pagina mastro vecchio stile che contiene {ID} funzionerebbe, ma la sua trasformazione automatica a Twig produrrebbe {{ ID }} che non verrebbe riconosciuto né accettato. Con il passaggio a Twig, e limitatamente all’ambiente Twig, abbiamo deciso di terminare il supporto di alcuni plug-in incorporati di Sar-At. Essi continueranno a funzionare nelle pagine mastro vecchio stile sotto Sar-At 11, ma il loro uso non sarà possibile se la pagina mastro viene convertita o riscritta per Twig. Ecco un elenco che crediamo esaustivo nel momento in cui questo documento viene scritto ma che potrà venire rivisto in prossimità del rilascio di Sar-At 11. Plug-in Note {HEAD} Non necessario in HTML5. Il programma di trasformazione delle pagine mastro vecchio stile in formato Twig lo rimpiazzerà con: <meta charset="utf-8"> <title>{{ title }}</title> <meta name="description" content="{{ description }}" /> {sarel_username} {sarel_userlogged} Sostituiti dall’oggetto saratuser. Il programma di trasformazione delle pagine mastro vecchio stile in Twig li rimpiazzerà automaticamente. saratviews_serial sarelviews_row Non necessari in ambiente Twig, dove è possibile lavorare sugli indici dei vettori (ogni Vista è un vettore in Twig). L.A. --
Accomazzi.net
Srl Via A. Scarlatti, 3 20015 Parabiago (Mi) Tel. 02.00615556 Fax 02.700537345 Cell. 349.7680116 VoIP sip:5342716@sip.messagenet.it Skype misterakko
http://www.accomazzi.net
11 years
1
0
0
0
← Newer
1
Older →
Jump to page:
1
Results per page:
10
25
50
100
200