Simple Machines Community Forum

SMF Support => Language Specific Support => Italiano (Italian) => Topic started by: Phoenixauto on October 15, 2011, 11:55:47 AM

Title: Board di reindirizzamento in nuova scheda
Post by: Phoenixauto on October 15, 2011, 11:55:47 AM
Ciao a tutti avrei bisogno di un'aiuto per cortesia a farsì che alcune board che utilizzo come reinderizzamento verso altri mi aprisserero una nuova finestra e non utilizzassero la stessa uscendo dal forum nostro.. qualcuno sa dirmi dove inserire quel piccolo codice se non ricordo male "blanck" e qualcosa d'altro da inserire prima del link.. non so se sono riuscito a farmi capire...  ???
Title: Re: Board di reindirizzamento in nuova scheda
Post by: emanuele on October 15, 2011, 12:41:53 PM
In BoardIndex.template.php, cerca:
<a class="subject" href="', $board['href'], '" name="b', $board['id'], '">', $board['name'], '</a>';

e sostituiscilo con:
<a class="subject" ', $board['is_redirect'] ? 'target="_blank"' : '', 'href="', $board['href'], '" name="b', $board['id'], '">', $board['name'], '</a>';
Title: Re: Board di reindirizzamento in nuova scheda
Post by: Phoenixauto on October 16, 2011, 03:38:47 AM
Ciao Emanuele grazie per l'aiuto, ma non trovo quella parte del codice in quel file.. stiamo parlando di smf 2.0 vero?
Title: Re: Board di reindirizzamento in nuova scheda
Post by: emanuele on October 16, 2011, 04:23:49 AM
Sì, tema di default.
A meno che hai fatto modifiche ci deve essere.
Eventualmente, guarda nel file originale del tema di default (scarica un nuovo pacchetto se non ce l'hai più) per avere un'idea di dove si trova. ;)

Altrimenti puoi anche cercare solo per $board['href'] e vedere se trovi qualcosa di simile.
Title: Re: Board di reindirizzamento in nuova scheda
Post by: Phoenixauto on October 16, 2011, 05:21:17 AM
Potrebbe essere questo?
// Is it a redirection board?
//if ($board['is_redirect'])
//echo '<img src="', $settings['images_url'], '/redirect.png" alt="*" title="*" border="0" />';


echo '</a>
</td>
<td class="windowbg2 info">
               <b><a href="', $board['href'], '" name="b', $board['id'], '">', $board['name'], '</a></b>';


è in Boardindex.template.php
Title: Re: Board di reindirizzamento in nuova scheda
Post by: emanuele on October 16, 2011, 05:26:57 AM
Sì, è proprio l'ultima riga che hai postato. ;)
Title: Re: Board di reindirizzamento in nuova scheda
Post by: Phoenixauto on October 16, 2011, 06:09:30 AM
Mmmm c'è qualcosa in più e qualcosa in meno mi sa che faccio casini...
devo sostituire in questa maniera? da così:
<b><a href="', $board['href'], '" name="b', $board['id'], '">', $board['name'], '</a></b>';

a così?

<b>class="subject" href="', $board['href'], "', $board['href'], '" name="b', $board['id'], '">', $board['name'], '</a></b>';
scusa l'imbranataggine ma per me sto mondo è piuttosto ostile..  :D
Title: Re: Board di reindirizzamento in nuova scheda
Post by: emanuele on October 16, 2011, 06:23:41 AM
<b><a href="', $board['href'], '" name="b', $board['id'], '">', $board['name'], '</a></b>';

a così

<b><a target="_blank" href="', $board['href'], "', $board['href'], '" name="b', $board['id'], '">', $board['name'], '</a></b>';

;)
Title: Re: Board di reindirizzamento in nuova scheda
Post by: Phoenixauto on October 16, 2011, 07:02:01 AM
Non è che c'è qualche errore? perchè quando inserisco la stringa da te indicata mi cambia anche alcune stringhe sotto..
Ti trascrivo quelle sotto..
// Is it a redirection board?
//if ($board['is_redirect'])
//echo '<img src="', $settings['images_url'], '/redirect.png" alt="*" title="*" border="0" />';


echo '</a>
</td>
<td class="windowbg2 info">
               <b><a href="', $board['href'], '" name="b', $board['id'], '">', $board['name'], '</a></b>';

// Has it outstanding posts for approval?
if ($board['can_approve_posts'] && ($board['unapproved_posts'] || $board['unapproved_topics']))
echo '
<a href="', $scripturl, '?action=moderate;area=postmod;sa=', ($board['unapproved_topics'] > 0 ? 'topics' : 'posts'), ';brd=', $board['id'], ';', $context['session_var'], '=', $context['session_id'], '" title="', sprintf($txt['unapproved_posts'], $board['unapproved_topics'], $board['unapproved_posts']), '" class="moderation_link">(!)</a>';

echo '

<p>', $board['description'] , '</p>';
Title: Re: Board di reindirizzamento in nuova scheda
Post by: emanuele on October 16, 2011, 09:21:44 AM
In che senso ti cambia?
Title: Re: Board di reindirizzamento in nuova scheda
Post by: Phoenixauto on October 24, 2011, 03:06:11 PM
Ciao scusa se non mi sono più fatto sentire ma avevo parecchie cose da sistemare... tornando a noi ti post copia del file.. se provi a fare la sostituzione mi ritrovo che ad esempio la stringa // Has it outstanding posts for approval? diventa rossa da prima che era gialla e altre parole subito sotto diventano rosse da nere... scusate la niubbaggine ma non ho molta confidenza, magari non è nulla o magari c'è qualche sbaglio che mi crea questo combiamento..  :)
Title: Re: Board di reindirizzamento in nuova scheda
Post by: emanuele on October 24, 2011, 03:38:10 PM
Ah...sì, scusa c'è un errore:
<b><a target="_blank" href="', $board['href'], '" name="b', $board['id'], '">', $board['name'], '</a></b>';
avevo copiato un po' troppa roba... :)
Title: Re: Board di reindirizzamento in nuova scheda
Post by: pauless on October 17, 2013, 01:45:32 AM
ciao, ho provato anche io questa cosa, ma non mi funziona,
ho cercato la riga su BoardIndex e l'ho sostituita con quella suggerita da te,
poi continuando a leggere il topic ho notato che la riga che avevi messo
era troppo lunga e l'ho sostituita con la nuova riga che hai postato
ma non funziona lo stesso, non fa il redirect su nuova scheda.
Title: Re: Board di reindirizzamento in nuova scheda
Post by: emanuele on October 17, 2013, 05:13:56 AM
Non è che stai usando un tema che ha un boardindex custom?
In tal caso le modifiche le devi apportare al file nella directory del tuo tema.
Title: Re: Board di reindirizzamento in nuova scheda
Post by: pauless on October 17, 2013, 06:51:07 AM
E no perchè il file BoardIndex lo raggiungo
direttamente dal pannello di amministrazione del forum
andando direttamente su "Tema corrente",
che nel mio caso è Flux.
Title: Re: Board di reindirizzamento in nuova scheda
Post by: pauless on October 17, 2013, 07:04:34 AM
A no no no no, scusa,
in realtà qualcosa è cambiato, non me ne ero accorto
perchè non era il cambiamento che mi aspettavo,
ti spiego:

adesso mi si apre una scheda nuova per ogni sezione che clicco,
ma questa regola vale solo per le sezioni, non per le sottosezioni..

in realtà io pensavo che valesse solo per i link a siti esterni,
perchè ho la necessità di aprire una nuova scheda
per il reindirizzamento di una sezione a link esterno,
che sarebbe quella del Regolamento del forum..

dai un'occhiata
http://birraepatatine.altervista.org/
Title: Re: Board di reindirizzamento in nuova scheda
Post by: emanuele on October 17, 2013, 07:51:52 AM
Posta esattamente il codice come l'hai cambiato.
Title: Re: Board di reindirizzamento in nuova scheda
Post by: pauless on October 17, 2013, 08:34:25 AM
// No new posts at all! The agony!!
            else
               echo '
                     <img src="', $settings['images_url'], '/', $context['theme_variant_url'], 'off.png" alt="', $txt['old_posts'], '" title="', $txt['old_posts'], '" />';

            echo '
                  </a>
               </td>
               <td class="info windowbg6">
                <b><a target="_blank" href="', $board['href'], '" name="b', $board['id'], '">', $board['name'], '</a></b>';
Title: Re: Board di reindirizzamento in nuova scheda
Post by: emanuele on October 17, 2013, 11:43:22 AM
// No new posts at all! The agony!!
            else
               echo '
                     <img src="', $settings['images_url'], '/', $context['theme_variant_url'], 'off.png" alt="', $txt['old_posts'], '" title="', $txt['old_posts'], '" />';

            echo '
                  </a>
               </td>
               <td class="info windowbg6">
                <b><a ', $board['is_redirect'] ? 'target="_blank" ' : '', "href="', $board['href'], '" name="b', $board['id'], '">', $board['name'], '</a></b>';
Title: Re: Board di reindirizzamento in nuova scheda
Post by: pauless on October 17, 2013, 01:45:26 PM
QuoteIl file che hai tentato di salvare ha generato il seguente errore:
Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING, expecting ',' or ';' in BoardIndex.template.php on line 163
Title: Re: Board di reindirizzamento in nuova scheda
Post by: emanuele on October 18, 2013, 09:52:53 AM
// No new posts at all! The agony!!
            else
               echo '
                     <img src="', $settings['images_url'], '/', $context['theme_variant_url'], 'off.png" alt="', $txt['old_posts'], '" title="', $txt['old_posts'], '" />';

            echo '
                  </a>
               </td>
               <td class="info windowbg6">
                <b><a ', $board['is_redirect'] ? 'target="_blank" ' : '', '"href="', $board['href'], '" name="b', $board['id'], '">', $board['name'], '</a></b>';


Ehhhh....com'è pignolo php, per un apice... :P
Title: Re: Board di reindirizzamento in nuova scheda
Post by: pauless on October 18, 2013, 04:04:36 PM
Forse anche troppo pignolo! :P

Infatti non funziona, risultato:
- i collegamenti ipertestuali delle sezioni principali non funzionano
- per entrarci dentro e visualizzare le sottosezioni ho dovuto cliccare una delle sottosezioni (scritte in piccolo appena sotto) e poi risalire indietro cliccando sul percorso in alto sulla barra..
- la dimensione dei caratteri delle sezioni mi è apparsa visibilmente più piccola.

ho riportato il boardindex al suo stato primitivo
<a class="subject" href="', $board['href'], '" name="b', $board['id'], '">', $board['name'], '</a>';

ci riproviamo?  :laugh:
mi interessa solo che:
- ogni link esterno che un utente scrive in un post deve aprirsi in una nuova scheda
- il reindirizzamento a link esterno che ho fatto per la mia sezione del regolamento, se possibile, deve aprire in una nuova finestra (poichè vorrei farla popup), se possibile.. se no si può, mi accontento della nuova scheda.
http://labachecadifrankie.tk/

intanto grazie per la mano che mi stai dando!
Title: Re: Board di reindirizzamento in nuova scheda
Post by: emanuele on October 18, 2013, 05:09:50 PM
Provato localmente funziona a dovere...probabilmente il motivo è che la riga che a te interessa è solo l'ultima, mentre il resto è di un altro tema e quindi causa casino.
<b><a ', $board['is_redirect'] ? 'target="_blank" ' : '', '"href="', $board['href'], '" name="b', $board['id'], '">', $board['name'], '</a></b>';

Quote from: pauless on October 18, 2013, 04:04:36 PM
- ogni link esterno che un utente scrive in un post deve aprirsi in una nuova scheda
Di normal *ogni* link apre in una nuova finestra, quindi al massimo puoi volere che i link interni si aprano nella stessa finestra:
http://custom.simplemachines.org/mods/index.php?mod=980 dovrebbe funzionare.

Quote from: pauless on October 18, 2013, 04:04:36 PM
- il reindirizzamento a link esterno che ho fatto per la mia sezione del regolamento, se possibile, deve aprire in una nuova finestra (poichè vorrei farla popup), se possibile.. se no si può, mi accontento della nuova scheda.
Un "popup" ed una nuova finestra son potenzialmente due cose diverse e potrebbero richiedere soluzioni diverse (ad esempio se vuoi farlo usando javascript con qualcosa tipo lightbox non credo sia nemmeno necessario modificare il template).
Title: Re: Board di reindirizzamento in nuova scheda
Post by: pauless on October 19, 2013, 06:51:53 AM
ok, non avevo ancora fatto la prova dei link,
oggi ne ho messo uno in un post, e mi va su scheda nuova..
quindi come non detto!!  ;)

rimane solo la questione di aprire il redirect di una sezione su nuova finestra.
non sapevo che popup e finestra fossero cose potenzialmente differenti,
pertanto se dovessi scegliere, di sicuro opterei per la più facile delle soluzioni.

ok forse non ho le idee ben chiare su cosa sia veramente un popup,
perciò mi spiego meglio circa il risultato che vorrei ottenere,
poi se si tratta di popup o meno vedremo:

Title: Re: Board di reindirizzamento in nuova scheda
Post by: emanuele on October 20, 2013, 08:57:55 AM
Allora, da quel che descrivi vuoi un popup "vero e proprio", quindi devi  ottenerlo con javascript, a questo punto direi che modificare il template non serve (almeno non in quel modo).

Faccio la versione semplificata, dovrai adattarla tu alle tue esigenze, il link delle board dovrebbe diventare:
<a id="idboard_', $board['id'], '" "href="', $board['href'], '" name="b', $board['id'], '">', $board['name'], '</a>
in pratica devi aggiungerci un id:
id="idboard_', $board['id'], '"
Sia in board index che in message index (ti conviene farlo sia per le sezioni, sia per le sotto-sezioni, son due pezzi di codice leggermente diversi, ma vicini), quindi da qualche parte, nell'header della pagina, aggiungi del javascript per aprire il popup, prendendo un esempio tipo questo:
http://www.quirksmode.org/js/popup.html
puoi fare:

<script language="javascript" type="text/javascript">
<!--

// Quando la pagina è caricata esegue attach_popup
window.addEventListener("load", attach_popup, false);

// Attacca il popup al link desiderato
function attach_popup()
{
// idboard_3 => 3 è l'id del redirect con il regolamento
var elem = document.getElementById('idboard_3');

// Fa in modo che quando il link viene cliccato la funzione popitup venga eseguita
elem.addEventListener("click", popitup, false);
}

function popitup(event) {
// Evita che il browser segua il link
event.preventDefault();

// Crea il popup usando this.href (cioè l'url del link appena premuto) come url
newwindow=window.open(this.href,'name','height=200,width=150');

// Fa in modo che il popup sia in primo piano
if (window.focus) {newwindow.focus()}
return false;
}

// -->
</script>
Title: Re: Board di reindirizzamento in nuova scheda
Post by: pauless on October 20, 2013, 03:46:12 PM
ti ringrazio per l'aiuto, purtroppo sono tornato tardi da una festa
e non connetto molto.. domani a mente fresca lo faccio!
thanks!
;)
Title: Re: Board di reindirizzamento in nuova scheda
Post by: pauless on October 21, 2013, 06:29:06 AM
dunque ho provato a fare i primi cambiamento sul link delle board,
e spero di aver capito bene come fare..

adesso però ho un dubbio, dove attaccare lo script..
su board index, su message index, su entrambi,
oppure sull'index principale?

ad ogni modo ho già provato su tutti, ma mi dà sempre un errore di sintassi
uguale in tutti i casi, che sull'index principale mi dà sulla riga 176,
che riguarda in qualche modo la sintassi di questa parte:
// Attacca il popup al link desiderato
function attach_popup()
{
   // idboard_3 => 3 è l'id del redirect con il regolamento
   var elem = document.getElementById('idboard_3');

   // Fa in modo che quando il link viene cliccato la funzione popitup venga eseguita
   elem.addEventListener("click", popitup, false);
}


l'errore è
Parse error: syntax error, unexpected T_STRING, expecting ',' or ';' in index.template.php on line 176
Title: Re: Board di reindirizzamento in nuova scheda
Post by: emanuele on October 25, 2013, 11:45:59 AM
Pardon, ma sono un po' saltuario e non ho potuto tornare indietro prima.

Facciamo così: allega il tuo index.template.php che facciamo prima. ;)
Title: Re: Board di reindirizzamento in nuova scheda
Post by: pauless on October 25, 2013, 03:08:32 PM
eccoquas

comunque mi sono perso,
credo di aver lasciato il code incollato da qualche parte in qualche .php
Title: Re: Board di reindirizzamento in nuova scheda
Post by: emanuele on October 26, 2013, 04:29:45 PM
Adesso che ci penso meglio e sono di fronte al codice, mi chiedo perché ti ho suggerito di metterlo in index.template.php...
Non ha senso.
Per averlo in ogni pagina, aggiungilo in fondo a script.js, molto più facile e veloce, solo questo pezzo:


// Quando la pagina è caricata esegue attach_popup
window.addEventListener("load", attach_popup, false);

// Attacca il popup al link desiderato
function attach_popup()
{
// idboard_3 => 3 è l'id del redirect con il regolamento
var elem = document.getElementById('idboard_3');

// Fa in modo che quando il link viene cliccato la funzione popitup venga eseguita
if (elem != null)
elem.addEventListener("click", popitup, false);
}

function popitup(event) {
// Evita che il browser segua il link
event.preventDefault();

// Crea il popup usando this.href (cioè l'url del link appena premuto) come url
newwindow=window.open(this.href,'name','height=200,width=150');

// Fa in modo che il popup sia in primo piano
if (window.focus) {newwindow.focus()}
return false;
}

dopo di che pulisci la cache del browser e dovrebbe funzionare...credo.

Ah, il codice che ho postato qui è una leggera variazione rispetto a quello precedente. ;)
Title: Re: Board di reindirizzamento in nuova scheda
Post by: pauless on October 26, 2013, 05:41:06 PM
fammi capire un pò, ma quel 3 identifica esattamente la sezione del regolamento?
questo significa che se faccio un altro redirect di un'altra sottosezione,
posso scegliere se aprire anche quest'altra su popup o no,
semplicemente scrivendo una nuova stringa,
dove al posto del 3 ci metto il numero che identifica l'altra sottosezione?

p.s. non trovo script.js
sicuro che non si tratti di theme.js?
Title: Re: Board di reindirizzamento in nuova scheda
Post by: emanuele on October 26, 2013, 06:02:16 PM
Quote from: pauless on October 26, 2013, 05:41:06 PM
dove al posto del 3 ci metto il numero che identifica l'altra sottosezione?
mmm...ni.
C'è da cambiare un po' di più che quella singola riga, in pratica dovresti duplicare tutto il contenuto della funzione attach_popup, ma visto che duplicare codice crea solo più occasioni per introdurre errori, usa questo:

// Quando la pagina è caricata esegue attach_popup
window.addEventListener("load", attach_popup, false);

// Entry point, da qui vengono scelte le board a cui "attaccare" un popup
function attach_popup()
{
// 3 è l'id del redirect con il regolamento
attachBoardPopup(3);
}

function attachBoardPopup(board_id)
{
var elem = document.getElementById('idboard_' + board_id);

// Fa in modo che quando il link viene cliccato la funzione popitup venga eseguita
if (elem != null)
elem.addEventListener("click", popitup, false);
}

function popitup(event) {
// Evita che il browser segua il link
event.preventDefault();

// Crea il popup usando this.href (cioè l'url del link appena premuto) come url
newwindow=window.open(this.href,'name','height=200,width=150');

// Fa in modo che il popup sia in primo piano
if (window.focus) {newwindow.focus()}
return false;
}


Se vuoi aggiungere un altro popup:
function attach_popup()
{
// 3 è l'id del redirect con il regolamento
attachBoardPopup(3);

// e questo crea il popup per la board 5
attachBoardPopup(5);
}


Ovviamente sempre che il codice funzioni, non mi ricordo di averlo provato... xD

Quote from: pauless on October 26, 2013, 05:41:06 PM
p.s. non trovo script.js
sicuro che non si tratti di theme.js?
Themes/default/script
script.js è lo stesso per tutti i temi (...o almeno può esserlo, non ricordo mai, ma non è importante), quindi basta che modifichi quello del tema di default.
Title: Re: Board di reindirizzamento in nuova scheda
Post by: pauless on October 27, 2013, 03:57:52 AM
non funge..    :-\

ma siamo sicuri che al posto di 3 non ci vada 3.0??
te lo chiedo perchè quando passo il puntatore del mouse sopra ogni sezione
in basso al browser dove mi mostra il link, mi compare ../index.php?board=3.0

poi comunque ho provato su Chromium svuotando prima la cache..
Title: Re: Board di reindirizzamento in nuova scheda
Post by: emanuele on October 27, 2013, 06:47:24 AM
Suppongo tu non abbia fatto le modifiche di cui parlavo da qualche parte, quindi prova il file allegato.
Tieni conto che bisogna modificare anche MessageIndex.template.php.

ETA: rimosso il file perché non era tuo (ecco uno dei problemi di usare topic "altrui", sempre meglio aprirne di nuovi).
Allega BoardIndex.templat.ephp e MessageIndex.template.php.
Title: Re: Board di reindirizzamento in nuova scheda
Post by: pauless on October 27, 2013, 09:29:38 AM
http://www.simplemachines.org/community/index.php?topic=513309.0