News:

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

Main Menu

Board di reindirizzamento in nuova scheda

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

Previous topic - Next topic

emanuele

#20
// 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

#30
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: