Phpbb3: Aprire link in una nuova pagina

Pubblicato in: Phpbb3 | 22 Commenti
feb 20, 2010

Ok, il taget _blank è stato deprecato dal W3c da tempi immemori. Lo so. Quello che ancora non capisco è il motivo dello sfratto.

Credo sia stato debellato un attributo molto utile, vista la comparsa massiccia di script che lo emulano senza far imbestialire papà W3c.

Comunque.

Nel caso di phpbb3 preferisco riesumare il _blank. Voglio dire, di base phpbb3 non ha molta cura per l’igene del codice, quindi non credo si arrechi offesa a qualcuno se si introduce un ulteriore errore nel processo di validazione. Giusto? (Dopo aver detto questa cosa mi laverò la bocca col Viakal, lo prometto.)
Quindi per phpbb3 lo legalizzo nel modo più assoluto. (Oggi sto proprio bestemmiando.)

In verità, la mod che sto per presentare non è mia, l’ho ritrovata nel pc mentre lo liberavo dalla polvere, quindi onore a chi l’ha creata…anche se non mi ricordo né nome né sito.

La modifica si apporta a tre file:

include/functions.php
include/funcitions_content.php
styles/nomestile/template/bbcode.html

Apriamo il file functions.php che si trova nella cartella include del forum.
Cerchiamo:

case ‘bbcode_htm’:
return array(
‘#<!\-\- e \-\-><a href=”mailto:(.*?)”>.*?</a><!\-\- e \-\->#’,
‘#<!\-\- l \-\-><a (?:class=”[\w-]+” )?href=”(.*?)(?:(&amp;|\?)sid=[0-9a-f]{32})?”>.*?</a><!\-\- l \-\->#’,
‘#<!\-\- ([mw]) \-\-><a (?:class=”[\w-]+” )?href=”(.*?)”>.*?</a><!\-\- \1 \-\->#’,
‘#<!\-\- s(.*?) \-\-><img src=”\{SMILIES_PATH\}\/.*? \/><!\-\- s\1 \-\->#’,
‘#<!\-\- .*? \-\->#s’,
‘#<.*?>#s’,
);

E sostituiamo con:

case ‘bbcode_htm’:
return array(
‘#<!\-\- e \-\-><a href=”mailto:(.*?)”>.*?</a><!\-\- e \-\->#’,
‘#<!\-\- l \-\-><a (?:class=”[\w-]+” target=”[\w-]+” )?href=”(.*?)(?:(&amp;|\?)sid=[0-9a-f]{32})?”>.*?</a><!\-\- l \-\->#’,
‘#<!\-\- ([mw]) \-\-><a (?:class=”[\w-]+” target=”[\w-]+” )?href=”(.*?)”>.*?</a><!\-\- \1 \-\->#’,
‘#<!\-\- s(.*?) \-\-><img src=”\{SMILIES_PATH\}\/.*? \/><!\-\- s\1 \-\->#’,
‘#<!\-\- .*? \-\->#s’,
‘#<.*?>#s’,
);

Apriamo include/functions_content.php
Cerchiamo:

$html = “$whitespace<!– $tag –><a$class href=\”$url\”>$text</a><!– $tag –>$append”;

Sostituiamo con:

$html = “$whitespace<!– $tag –><a$class target=\”_blank\” href=\”$url\”>$text</a><!– $tag –>$append”;

Apriamo styles/nomestile/template/bbcode.html

Cerchiamo:

<!– BEGIN url –><a href=”{URL}” class=”postlink”>{DESCRIPTION}</a><!– END url –>

Sostituiamo con:

<!– BEGIN url –><a href=”{URL}” class=”postlink” target=”_blank”>{DESCRIPTION}</a><!– END url –>

Ovviamente vale anche per le firme con link.

Di seguito c’è lo zippetto contenente sia il txt della mod sia i file del tema Prosilver già pika-moddati. ;)

Target blank per phpbb3

Alla prossima. ;)

Ps: Ogni tanto è bello riesumare le vecchie smanettonerie. :D

22 Commenti per questo post

  1. #1
    Commento di: Francesco Caruccio
    Data: 21 feb, 2010 Ore: 11:47 am

    Per quanto riguarda il concetto del _blank, non è una mera questione di codice valido.
    Serve soprattutto, a mio parere, ai diversamente abili ( per esempio i non vedenti ) per via del fatto che quando apri una finestra in questo modo, hanno difficoltà a capire che si è aperta una pagina nuova, perdendo parte dei loro punti di riferimento.

    Il fatto che vi siano altre tecniche che fanno la stessa cosa senza “far arrabbiare” il validatore non vuol dire nulla: il validatore è un software automatico e non rileva l’anomalia, ma comunque il danno resta.

  2. #2
    Commento di: Lauryn
    Data: 21 feb, 2010 Ore: 11:57 am

    è giusto quello che dice francesco. il target blank non permette ai diversamente abili di controllare l’azione ma deve soccombere senza avere scelta.
    in realtà il _blank lo possiamo scegliere tutti quando stiamo per cliccare su un link cliccando con il tasto destro e scegliendo di aprirlo in una nuova pagina o addirittura una nuova scheda, con i nuovi browser (funzione ancora più utile).

    gli stratagemmi sono consigliati solamente quando non se ne può fare proprio a meno.
    ecco perchè è stato deprecato :)

  3. #3
    Commento di: Pikadilly
    Data: 21 feb, 2010 Ore: 12:19 pm

    Credo che phpbb3 sia ugualmente inaccessibile, anche privato del target _blank.

  4. #4
    Commento di: Joel
    Data: 22 feb, 2010 Ore: 1:59 pm

    Uhm uhm anche io uso degli artefici quando voglio aprire in un altra finestra senza far arrabbiare il W3C. Ma penso che il problema non sia del WB cattivo che crea qualcosa di poco usabile, ma della relativa poca complessità di uno screen reader.

    E’ così difficile fargli dire “we ciccio, cliccando qui apri una finestra in un altra pagina”.?

    Ok che con l’evoluzione del web (vedi le ormai onnipresenti finestre ajax) il _blank è sempre meno usato, ma rimane comunque molto importante per chi vuole rimanere ad usare layout javascript-less senza rinunciare a facilitare la navigazione all’utente.

    Prima di iniziare ad utilizzare il tasto CTRL per aprire qualsiasi link, ricordo anche io con dispiacere link che mi rimandavano a siti di terzi, costringendomi a schissare sul bottone “torna indietro”.

  5. #5
    Commento di: Pikadilly
    Data: 23 feb, 2010 Ore: 12:40 pm

    Quoto @Joel. In ogni sua parte. :)

  6. #6
    Commento di: Davide
    Data: 27 lug, 2010 Ore: 8:18 am

    @Lauryn, @Francesco,
    tutto questo parlare dei diversamente abili mi da sui nervi. Il vero problema è che i visitatori abili vengono disorientati dal _blank se manca un qualsiasi suggerimento del fatto che il sito sta per generare roba fuori dalla finestra in uso.

    Concetto di “finestra” che perde completamente significato non solamente nel caso degli screen reader di cui tutti parlano (decisamente a sproposito) quando vogliono giustificare una scelta tecnica (magari solo per intortare il cliente), ma anche nei browser mobili o in certi chioschi che non permettono di passare fra finestre diverse.

    Se il W3C non ama “_blank” possiamo: 1) fottercene perché nessuno ci obbliga a scrivere codice valido (tantomeno un ente privato); 2) usare del javascript non intrusivo che tanto ce l’hanno tutti abilitato tranne me che sono un paranoico; 3) non mettere niente e lasciare la scelta all’utente, che in ogni caso sarà (rispetto ai nostri obiettivi) quella sbagliata. :)

  7. #7
    Commento di: Giorgio
    Data: 27 lug, 2010 Ore: 3:46 pm

    Sono 3 i motivi principali per cui il W3C ed il mondo web in generale (IMHO giustamente) ha deprecato il _blank, analizziamoli.

    1) nel caso di diversamente abili (e vi posso assicurare che ne ho passate di cotte e di crude con il CNIPA sulle spalle) si perde i focus della navigazione attuale, la mia collega non vedente vi posso assicurare che ci smadonna sempre.

    2) si perde l’intera catena di navigazione del sito rendendo di fatto inutilizzabile il tasto backspace ed ad esempio la funzione history.back di .js

    3) non aiuta i motori di ricerca perchè aumente le istanze di crawling (analizzatevi i log di apache se non mi credete ;-) )

    Aggiungerei inoltre che con i browser moderni dotati di navigazione “a tab” si perde di vista il concetto di _blank e ricorderei che un window.open permette i passaggi di azioni js tra le 2 finestre, un target _blank no.
    Ritornando a PHPBB3 (di cui non sono certo un grande estimatore, specie del suo sistema di templating) direi che qui il concetto e’ proprio per non “uccidere” la history di navigazione.

    Tutto IMHO naturally e fermo restando che vista la qualita’ del codice riversato ogni giorno su web, direi che il target _blank e’ una delle ultime cose che danno fastidio. ;-)

    Saluti

  8. #8
    Commento di: Simone Economo
    Data: 27 lug, 2010 Ore: 6:20 pm

    Comunque, al di là dei discorsi sull’accessibilità, il fatto che i link si aprano in nuova finestra senza alcun tipo di preavvertimento è, di per se, un ostacolo all’usabilità del sito che purtroppo coinvolge *qualsiasi* utente.

    Molto spesso si tirano in ballo i diversamente abili, ma non sempre è il caso di scomodarli.

    Ciao!

  9. #9
    Commento di: Pikadilly
    Data: 28 lug, 2010 Ore: 9:53 am

    Qui comunque stiamo parlando di un forum phpbb, che di suo è inusabile al 100%, quindi il discorso usabilità, accessibilità e tutto quello che concerne il creare prodotti per tutti è castrato dall’inizio. ;)

    Il mio _blank in confronto al codice lercio che vive dietro phpbb è poca cosa. ;)

    Ovviamente su siti di altro tipo non lo uso da anni. ;)

  10. #10
    Commento di: Giorgio
    Data: 28 lug, 2010 Ore: 10:02 am

    @Piccadilly Appunto quello che dico io, ben poca cosa. Unico vero motivo, in questo caso, per non metterlo e’ mantenere “viva” la catena di navigazione. ;-)

  11. #11
    Commento di: Joel
    Data: 28 lug, 2010 Ore: 10:14 am

    Secondo me il _blank va usato solo quando si linkano altri siti… altrimenti l’utente scappa e non torna più.

    Ma stanno prendendo piede sistemi ancora meno accessibili. Vogliamo parlare del .load in jquery?non so come lo interpreti uno screen reader, ma di sicuro non bene.

  12. #12
    Commento di: Giorgio
    Data: 28 lug, 2010 Ore: 10:47 am

    @Joel jQuery va utilizzato con buon senso. Recentemente ho realizzato un sito (abbastanza grosso) accessibile WCAG 1.0 e parzialmente Stanca, con l’ausilio di jQuery.
    Ho utilizzato jQuery (e .load in particolare) solo come valore aggiunto sulle pagine (form di suggerimento, votazione et simila che si nasconodono alla visualizzazione), js e jQuery devono essere visti sempre come una “scorciatoia” e non come unica via.

    Esempio stupido:

    Invia ad un amico

    In questo caso puoi mettere dentro scopriForm tutti gli effettini che vuoi per farlo comparire ecc ecc.
    Nel caso di un utente con js disattivato si usa l’ancora. Problema risolto (e non ditemi che si perde di usabilita’ o accessibilita perche’ se il design e’ fatto bene non accade nulla di tragico).

    Poi se il sito e’ il tuo e non devi rispondere ad un cliente, fai quello che vuoi.

  13. #13
    Commento di: Giorgio
    Data: 28 lug, 2010 Ore: 10:47 am

    mmm il tag “code” non funziona benissimo :D

  14. #14
    Commento di: Pikadilly
    Data: 28 lug, 2010 Ore: 11:01 am

    Tra le varie migliorie che imporrò a questo blog ci sarà anche la funzione dei maledetti tag. ;)

  15. #15
    Commento di: Joel
    Data: 28 lug, 2010 Ore: 12:08 pm

    Indubbiamente non bisogna eccedere, dato che il .load funziona egregiamente ma non permette ai motori di seguire i link. Quindi va usato, come dicevi, per aprire delle cose di cui non ci interessa neanche l’indicizzazione. Fare tutto un sito usando solo il .load sarebbe un suicidio :-)

    @Pika sfaticata, forza, produrre :P

  16. #16
    Commento di: NaRu95
    Data: 22 ago, 2010 Ore: 9:11 am

    Ciao @Francesca
    Da ciò che vedo questo è un blog per ragazze. Io sono un ragazzo e ho 15 anni di origine Siciliane.
    CMQ ho fatto tutto ciò che hai descritto sul post ma l’unico risultato che ho ottenuto è che la pagina includes/functions.php mi da errore e che quindi la home page del forum che stavo creando proprio oggi mi da errore. Come faccio a risolvere?

  17. #17
    Commento di: NaRu95
    Data: 22 ago, 2010 Ore: 9:16 am

    Ciao Francesca,
    lascia perdere che ho già risolto. Ho soltanto scaricato il tuo zip e l’ho uppato sul mio hosting e adesso funge alla perfezione. Sicuramente avevo sbagliato qualcosa. Ciaooooooooo e Grazie mille!

  18. #18
    Commento di: Pikadilly
    Data: 22 ago, 2010 Ore: 3:07 pm

    NaRu95 ha scritto:

    Ciao @Francesca –
    Da ciò che vedo questo è un blog per ragazze.

    Ciao Naru,
    oddio, non è propriamente un blog per ragazze…è solo rosa. :D

    Sono arrivata tardi, hai già risolto. ;)

    In bocca al lupo. ;)

  19. #19
    Commento di: Francesco
    Data: 10 apr, 2011 Ore: 10:31 pm

    Ciao,
    mi occupo per passione di Accessibilità web e dopo anni di contrasti interni ho dovuto accettare – anche se con riserve – la regola del w3c per cui i link non devono aprorsi in nuove schede e finestre.
    Anche se a volte ritengo sia necessario, per non visualizzare il messaggio che chiede di ricaricare la pagina dinamica, inserire un link esterno, ma in quel caso bisogna:
    - indicare che si tratta di link esterno che apre in una nuova pagina o scheda,
    - non inserire un link a nuova pagina o scheda ma consigliare all’utente di aprirlo in nuova scheda (o pagina).

    PhpBB ha adesso un template accessibile (ancora racchio ma poi si vedrà) che puoi vedere in opera all’indirizzo http://www.phpbbaccessibile.4elementi.info/ e scaricare (è Gnu e free) all’indirizzo http://4elementi.info/forum/styles/accessibile.zip .

    Ciao dalla Sardegna

  20. #20
    Commento di: Francesco
    Data: 21 set, 2011 Ore: 12:29 pm

    @ Francesco Caruccio: a volte è necessario.
    PhpBB 3 utilizza un sistema di caricamento degli allegati non accessibile (sebbene abbastanza usabile) perchè utilizza Javascript.
    Nel template accessibile che ho sviluppato
    http://www.4elementi.info/phpbb_template/
    (che previene l’utilizzo della funzione prevista da PhpBB) ne ho scritto uno in Php per accedere al quale bisogna necessariamente accedere a una nuova pagina, altrimenti il tasto “indietro” del browser rimanda – a fine procedura – a una pagina di errore con la richiesta del ricaricamento (sperando che vada a buon fine).
    Naturalmente è indicato che viene aperta una nuova pagina e si fa presente che la grafica è un poco differente, per non disorientare troppo l’utente.

  21. #21
    Commento di: Pikadilly
    Data: 21 set, 2011 Ore: 3:47 pm

    Grazie di aver condiviso questa risorsa. ;)

  22. #22
    Commento di: Trinaillapype
    Data: 16 gen, 2012 Ore: 5:56 am

    Si sbaglia. Scrivere a me in PM, discuterne.

Lascia un commento

Puoi usare i tag: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Torna su