• Welcome to Simple Machines Community Forum. Please login or sign up.
December 06, 2021, 04:46:35 AM

News:

Bored?  Looking to kill some time?  Want to chat with other SMF users?  Join us in IRC chat or Discord


Board di reindirizzamento in nuova scheda

Started by Phoenixauto, October 15, 2011, 11:55:47 AM

Previous topic - Next topic

Phoenixauto

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...  ???

emanuele

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>';


Take a peek at what I'm doing! ;D




Hai bisogno di supporto in Italiano?

Aiutateci ad aiutarvi: spiegate bene il vostro problema: no, "non funziona" non è una spiegazione!!
1) Cosa fai,
2) cosa ti aspetti,
3) cosa ottieni.

Phoenixauto

Ciao Emanuele grazie per l'aiuto, ma non trovo quella parte del codice in quel file.. stiamo parlando di smf 2.0 vero?

emanuele

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.


Take a peek at what I'm doing! ;D




Hai bisogno di supporto in Italiano?

Aiutateci ad aiutarvi: spiegate bene il vostro problema: no, "non funziona" non è una spiegazione!!
1) Cosa fai,
2) cosa ti aspetti,
3) cosa ottieni.

Phoenixauto

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

emanuele

Sì, è proprio l'ultima riga che hai postato. ;)


Take a peek at what I'm doing! ;D




Hai bisogno di supporto in Italiano?

Aiutateci ad aiutarvi: spiegate bene il vostro problema: no, "non funziona" non è una spiegazione!!
1) Cosa fai,
2) cosa ti aspetti,
3) cosa ottieni.

Phoenixauto

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

emanuele

<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>';

;)


Take a peek at what I'm doing! ;D




Hai bisogno di supporto in Italiano?

Aiutateci ad aiutarvi: spiegate bene il vostro problema: no, "non funziona" non è una spiegazione!!
1) Cosa fai,
2) cosa ti aspetti,
3) cosa ottieni.

Phoenixauto

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>';

emanuele



Take a peek at what I'm doing! ;D




Hai bisogno di supporto in Italiano?

Aiutateci ad aiutarvi: spiegate bene il vostro problema: no, "non funziona" non è una spiegazione!!
1) Cosa fai,
2) cosa ti aspetti,
3) cosa ottieni.

Phoenixauto

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..  :)

emanuele

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... :)


Take a peek at what I'm doing! ;D




Hai bisogno di supporto in Italiano?

Aiutateci ad aiutarvi: spiegate bene il vostro problema: no, "non funziona" non è una spiegazione!!
1) Cosa fai,
2) cosa ti aspetti,
3) cosa ottieni.

pauless

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.

emanuele

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.


Take a peek at what I'm doing! ;D




Hai bisogno di supporto in Italiano?

Aiutateci ad aiutarvi: spiegate bene il vostro problema: no, "non funziona" non è una spiegazione!!
1) Cosa fai,
2) cosa ti aspetti,
3) cosa ottieni.

pauless

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.

pauless

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/

emanuele

Posta esattamente il codice come l'hai cambiato.


Take a peek at what I'm doing! ;D




Hai bisogno di supporto in Italiano?

Aiutateci ad aiutarvi: spiegate bene il vostro problema: no, "non funziona" non è una spiegazione!!
1) Cosa fai,
2) cosa ti aspetti,
3) cosa ottieni.

pauless

// 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>';

emanuele

// 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>';


Take a peek at what I'm doing! ;D




Hai bisogno di supporto in Italiano?

Aiutateci ad aiutarvi: spiegate bene il vostro problema: no, "non funziona" non è una spiegazione!!
1) Cosa fai,
2) cosa ti aspetti,
3) cosa ottieni.

pauless

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

emanuele

October 18, 2013, 09:52:53 AM #20 Last Edit: October 18, 2013, 04:44:18 PM by emanuele
// 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


Take a peek at what I'm doing! ;D




Hai bisogno di supporto in Italiano?

Aiutateci ad aiutarvi: spiegate bene il vostro problema: no, "non funziona" non è una spiegazione!!
1) Cosa fai,
2) cosa ti aspetti,
3) cosa ottieni.

pauless

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!

emanuele

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).


Take a peek at what I'm doing! ;D




Hai bisogno di supporto in Italiano?

Aiutateci ad aiutarvi: spiegate bene il vostro problema: no, "non funziona" non è una spiegazione!!
1) Cosa fai,
2) cosa ti aspetti,
3) cosa ottieni.

pauless

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:


  • vorrei che, cliccando sulla sezione "regolamento",
    mi si apra la pagina html che ho già linkato, su di una nuova finestra.
  • vorrei che questa finestra sia più piccola del solito,
    tale da non coprire totalmente la pagina del forum.
  • vorrei che tale pagina non disponga ne di strumenti di navigazione
    ne di barra degli indirizzi, ma solo del classico bottone X per la chiusura.

emanuele

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>


Take a peek at what I'm doing! ;D




Hai bisogno di supporto in Italiano?

Aiutateci ad aiutarvi: spiegate bene il vostro problema: no, "non funziona" non è una spiegazione!!
1) Cosa fai,
2) cosa ti aspetti,
3) cosa ottieni.

pauless

ti ringrazio per l'aiuto, purtroppo sono tornato tardi da una festa
e non connetto molto.. domani a mente fresca lo faccio!
thanks!
;)

pauless

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

emanuele

Pardon, ma sono un po' saltuario e non ho potuto tornare indietro prima.

Facciamo così: allega il tuo index.template.php che facciamo prima. ;)


Take a peek at what I'm doing! ;D




Hai bisogno di supporto in Italiano?

Aiutateci ad aiutarvi: spiegate bene il vostro problema: no, "non funziona" non è una spiegazione!!
1) Cosa fai,
2) cosa ti aspetti,
3) cosa ottieni.

pauless

eccoquas

comunque mi sono perso,
credo di aver lasciato il code incollato da qualche parte in qualche .php

emanuele

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. ;)


Take a peek at what I'm doing! ;D




Hai bisogno di supporto in Italiano?

Aiutateci ad aiutarvi: spiegate bene il vostro problema: no, "non funziona" non è una spiegazione!!
1) Cosa fai,
2) cosa ti aspetti,
3) cosa ottieni.

pauless

October 26, 2013, 05:41:06 PM #30 Last Edit: October 26, 2013, 05:51:12 PM by pauless
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?

emanuele

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.


Take a peek at what I'm doing! ;D




Hai bisogno di supporto in Italiano?

Aiutateci ad aiutarvi: spiegate bene il vostro problema: no, "non funziona" non è una spiegazione!!
1) Cosa fai,
2) cosa ti aspetti,
3) cosa ottieni.

pauless

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..

emanuele

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.


Take a peek at what I'm doing! ;D




Hai bisogno di supporto in Italiano?

Aiutateci ad aiutarvi: spiegate bene il vostro problema: no, "non funziona" non è una spiegazione!!
1) Cosa fai,
2) cosa ti aspetti,
3) cosa ottieni.


Advertisement: