[GDRCD 5.4 | TUTORIAL] Link home page (index.php) in finestra modale
[GDRCD 5.4 | TUTORIAL] Link home page (index.php) in finestra modale postato il 17/05/2017 04:03:55 nel forum programmazione, open source e hosting e modificato da gdr-online.com il 16/11/2017 14:55:45
(hanno risolto: blancks, rematore)
EDIT: Problema risolto, modifica contenuti per renderlo tutorial.
[ GDRCD 5.4 / Altervista / Versione MySQL: 5.6 ]
ATTENZIONE: Ricordate di inserire correttamente gli apostrofi (sostituiti qui su GDR-ONLINE CON ') dopo aver copiato il codice, altrimenti non funzionerà nulla!
L'obiettivo è quello di sfruttare il sistema di finestre modali per aprire i link presenti nella home page di GDRCD (iscrizione, regolamento, ambientazione, etc.).
PRIMO PASSAGGIO:
In primo luogo devo creare una copia del file popup.php, rinominandolo ad esempio popup-est.php - sempre all'interno della cartella generale in cui avete caricato GDRCD (dove sono presenti docs, includes, layouts, etc. - insomma, il posto in cui vi trovate quando aprire la Gestione File di Altervista).
Effettuo dunque una piccola modifica al contenuto del file stesso, rimuovendo questa parte:
gdrcd_controllo_sessione();
E sostituendo questa parte:
gdrcd_load_modules(
gdrcd_filter(
'include',
__DIR__
. DIRECTORY_SEPARATOR
. 'pages'
. DIRECTORY_SEPARATOR
. $_GET['page']
. '.inc.php'
)
);
Con questa:
gdrcd_load_modules(
gdrcd_filter(
'include',
__DIR__
. DIRECTORY_SEPARATOR
. 'themes'
. DIRECTORY_SEPARATOR
. 'advanced'
. DIRECTORY_SEPARATOR
. 'home'
. DIRECTORY_SEPARATOR
. $_GET['page']
. '.php'
)
);
Il codice finale di popup-est.php dovrebbe corrispondere al seguente:
<?php
require 'header.inc.php';
echo '<div class="popup">';
if (!empty($_GET['page']))
{
gdrcd_load_modules(
gdrcd_filter(
'include',
__DIR__
. DIRECTORY_SEPARATOR
. 'themes'
. DIRECTORY_SEPARATOR
. 'advanced'
. DIRECTORY_SEPARATOR
. 'home'
. DIRECTORY_SEPARATOR
. $_GET['page']
. '.php'
)
);
}
else
{
echo $MESSAGE['interface']['layout_not_found'];
}
echo '</div>';
require 'footer.inc.php';
?>
SPIEGAZIONE:
rematore:
il file popup.php che richiami ha un controllo sulla sessione. Aprendo quel file noterai questa riga
gdrcd_controllo_sessione();
questa funzione che trovi dichiarata nel file functions.inc.php blocca l'esecuzione di un qualunque file che richiami tramite la pagina popup.php. A mio parere i programmatori che hanno scritto gdrcd 5.4 hanno pensato bene di permettere l'accesso ai singoli moduli considerando l'uso della funzione modale (con il file popup.php) solo per gli utenti collegati.
blancks:
il percorso interno del nuovo file popup deve puntare ai files della home, perché attualmente è fissato a cercare nella cartella pages.
SECONDO PASSAGGIO:
Intervengo sul file themes>advanced>home>index.php per modificare i link presenti, ovvero i seguenti:
<a href="index.php?page=index&content=iscrizione"><?php echo $MESSAGE['homepage']['registration'];?></a>
<a href="index.php?page=index&content=user_regolamento"><?php echo $MESSAGE['homepage']['rules'];?></a>
<a href="index.php?page=index&content=user_ambientazione"><?php echo $MESSAGE['homepage']['storyline'];?></a>
<a href="index.php?page=index&content=user_razze"><?php echo $MESSAGE['homepage']['races'];?></a>
Per sostituirli con:
<a href="javascript:modalWindow('scheda_iscr', 'iscrizione', 'popup-est.php?page=iscrizione')"><?php echo $MESSAGE['homepage']['registration'];?></a>
<a href="javascript:modalWindow('scheda_reg', 'regolamento', 'popup-est.php?page=user_regolamento')"><?php echo $MESSAGE['homepage']['rules'];?></a>
<a href="javascript:modalWindow('scheda_amb', 'ambientazione', 'popup-est.php?page=user_ambientazione')"><?php echo $MESSAGE['homepage']['storyline'];?></a>
<a href="javascript:modalWindow('scheda_raz', 'razze', 'popup-est.php?page=user_razze')"><?php echo $MESSAGE['homepage']['races'];?></a>
In questo modo, la modale carica correttamente il contenuto al suo interno!
Lascio segnalata qualche indicazione mezza importante nel merito delle modali - cioé, importante nel senso che non sono in grado di spiegarvi esattamente perché, ma a me hanno creato problemi:
<a href="javascript:modalWindow('IDENTIFICATIVO MODALE', 'TITOLO MODALE', 'LINK/PAGINA CHE DEVE APRIRE LA MODALE')">TESTO TESTO TESTO</a>
Attenzione all'identificativo della modale: se utilizzate la stessa dicitura per due modali differenti, succedono cose strane al suo contenuto. Credo si debba al fatto che a meno che non desideriate sostituire il primo contenuto aperto nella modale in questione con un secondo contenuto sempre all'interno della stessa modale, ogni modale deve essere nominata con un nome differente - altrimenti diventa in qualche modo la 'stessa scatola' per più contenuti. Vipregononpicchiatemisehodettounacavolata.
Qualora abbiate voglia di correggere/contribuire ulteriormente al thread vi invito a lasciare un post, provvederò poi ad aggiornare questo post di apertura.
Un sentito ringraziamento agli utenti blancks e rematore, cui si deve la risoluzione di questo problema.

Pagine → 1 2
17/05/2017 10:11:47 e modificato da rematore il 17/05/2017 10:19:28
Ciao,
il messaggio "La tua sessione è scaduta o [..]" esce perché il file popup.php che richiami ha un controllo sulla sessione. Aprendo quel file noterai questa riga
gdrcd_controllo_sessione();
questa funzione che trovi dichiarata nel file functions.inc.php blocca l'esecuzione di un qualunque file che richiami tramite la pagina popup.php. A mio parere i programmatori che hanno scritto gdrcd 5.4 hanno pensato bene di permettere l'accesso ai singoli moduli considerando l'uso della funzione modale (con il file popup.php) solo per gli utenti collegati.
Per risolvere il tuo problema, crea un secondo file popup.php, ovviamente cambia di nome rispetto a quello già esistente e togli quella riga che ti ho evidenziato. Quindi poi usa la funzione modale come hai fatto e dovrebbe andare.
Premetto che non ho testato però intanto il problema del blocco dell'esecuzione è risolto. Non so se ci sono altri blocchi...
17/05/2017 12:24:05
rematore ha scritto: Per risolvere il tuo problema, crea un secondo file popup.php, ovviamente cambia di nome rispetto a quello già esistente e togli quella riga che ti ho evidenziato. Quindi poi usa la funzione modale come hai fatto e dovrebbe andare.
Come dice rematore, aggiungendo solo che il percorso interno del nuovo file popup deve puntare ai files della home, perché attualmente è fissato a cercare nella cartella pages.
Per questo in quel file non è prevista, di base, la possibilità di lanciare pagine esterne: pages contiene solo le pagine interne del sito.
17/05/2017 14:16:21
Ringrazio sentitamente entrambi per l'intervento e per le spiegazioni, ora è un pochino meno stregoneria.
Ho dunque creato il file popup-est.php, rettificato come indicato da rematore:
<?php
require 'header.inc.php';
echo '<div class="popup">';
if (!empty($_GET['page']))
{
gdrcd_load_modules(
gdrcd_filter(
'include',
__DIR__
. DIRECTORY_SEPARATOR
. 'pages'
. DIRECTORY_SEPARATOR
. $_GET['page']
. '.inc.php'
)
);
}
else
{
echo $MESSAGE['interface']['layout_not_found'];
}
echo '</div>';
require 'footer.inc.php';
?>
Vi chiedo un ultimo aiuto nel merito del puntamento alla cartella in cui sono contenuti i file della home-page. Il mio percorso è:
themes/advanced/home
Ed immagino che la parte interessata in cui effettuare la modifica sia:
...
if (!empty($_GET['page']))
{
gdrcd_load_modules(
gdrcd_filter(
'include',
__DIR__
. DIRECTORY_SEPARATOR
. 'pages'
. DIRECTORY_SEPARATOR
. $_GET['page']
. '.inc.php'
)
);
...
Non ho un'idea nel merito della sintassi (parole a caso) corretta da inserire per indicargli il percorso giusto.
Ho provato con:
. DIRECTORY_SEPARATOR
. 'themes/advanced/home'
. DIRECTORY_SEPARATOR
. $_GET['page']
. '.inc.php'
Usando invece nel file index.php la dicitura seguente per i link:
<a href="javascript:modalWindow('scheda_iscr', 'iscrizione', 'popup-est.php?page=index&content=iscrizione')"><?php echo $MESSAGE['homepage']['registration'];?></a>
La modale si apre correttamente, ma nel merito del contenuto la risposta è stata 'modulo non trovato'.
Quanto sto cantonando da molto a vatti a nascondere?
Se la modale si apre deduco che il popup-est.php funzioni almeno in parte correttamente, altrimenti non aprirebbe un bel niente .. Credo.
Grazie ancora per il supporto.
17/05/2017 14:38:50 e modificato da blancks il 17/05/2017 14:39:19
sadly-noob ha scritto:
Non ho un'idea nel merito della sintassi (parole a caso) corretta da inserire per indicargli il percorso giusto.
Il termine è esatto :-p
Quanto sto cantonando da molto a vatti a nascondere?
Al livello prendi un biglietto per il tibet!
Scherzo :-D
gdrcd_load_modules(
gdrcd_filter(
'include',
__DIR__
. DIRECTORY_SEPARATOR
. 'themes'
. DIRECTORY_SEPARATOR
. 'advanced'
. DIRECTORY_SEPARATOR
. 'home'
. DIRECTORY_SEPARATOR
. $_GET['page']
. '.php'
)
);
in breve __DIR__ è il percorso alla cartella in cui si trova questo file popup-est.php, DIRECTORY_SEPARATOR è niente di più che lo slash usato dal sistema operativo per separare i percorsi.
Tutto l'insieme è una concatenazione di tutti questi elementi di modo che php formi il percorso giusto verso la risorsa che stai chiedendo (leggi: la famosa "pagina")
17/05/2017 16:25:32
Funziona. Funnnnziooonaawwr.
.. L'ultima accortezza da impiegare è una rettifica sulla sintassi (yee!) del link nel file index.php, come segue:
<a href="javascript:modalWindow('scheda_iscr', 'iscrizione', 'popup-est.php?page=iscrizione')"><?php echo $MESSAGE['homepage']['registration'];?></a>
Questa è la soluzione cui sono arrivata io, quindi non mi sento di garantirne l'affidabilità. Solo che la modale appare con il giusto contenuto al suo interno.
Rematore, Blancks, grazie infinite.
Al più tardi di domani provvederò a rettificare il post di apertura per renderlo un thread-tutorial.
E ALLA FACCIA TUA PHP E COSE MAGICHE CHE STANNO DIETRO AL SISTEMA.

.. Comunque tornerò presto con nuovi thread da scappati di casa.
17/05/2017 16:50:20
sadly-noob ha scritto: Rematore, Blancks, grazie infinite.
Prego :)
Al più tardi di domani provvederò a rettificare il post di apertura per renderlo un thread-tutorial.
E' bello che ogni tanto qualcuno mostri di tenere alla crescita della comunità in questo senso.
Vai così ragazza, ma non maltrattare nessun cammello, mi raccomando!
16/11/2017 14:54:16 e modificato da maclay il 16/11/2017 20:43:19
Ho seguito il tutorial e funziona tutto alla perfezione, ma ho una domanda: se uno volesse assegnare le dimensioni della modale?
Ho provato così:
<a href="javascript:modalWindow('scheda_amb', 'Ambientazione', 'popup-home.php?page=user_ambientazione', '800', '500')">Ambientazione</a>
e pur non avendo nessun errore, la modale semplicemente non si apre.
EDIT: come non detto. Funziona alla perfezione.
03/04/2018 17:15:25
Ciao a tutti. Innanzi tutto grazie per la spiegazione molto chiara!
Io però, evidentemente perché sono una scarpa, non riesco a farlo funzionare. Ho seguito le istruzioni passo passo (creato popup-est, modificato il codice al suo interno e cambiato l'href in index php)
Tuttavia, quando clicco sul link, mi dice "Errore 404 - Pagina non trovata)
Riporto il pezzo di codice che ho modificato in index
PS se volessi ottenere la stessa cosa ma con un input di tipo button, come dovrei fare?
Grazie per l'aiuto!
<a href="javascript:modalWindow('scheda_iscr', 'iscrizione', 'popup-est.php?page=iscrizione')"><?php echo $MESSAGE['homepage']['registration'];?></a>
03/04/2018 18:43:10
chernobyldisaster ha scritto: [quote]rt1978 ha scritto: Ciao a tutti. Innanzi tutto grazie per la spiegazione molto chiara!
Io però, evidentemente perché sono una scarpa, non riesco a farlo funzionare. Ho seguito le istruzioni passo passo (creato popup-est, modificato il codice al suo interno e cambiato l'href in index php)
Tuttavia, quando clicco sul link, mi dice "Errore 404 - Pagina non trovata)
Riporto il pezzo di codice che ho modificato in index
PS se volessi ottenere la stessa cosa ma con un input di tipo button, come dovrei fare?
Grazie per l'aiuto!
<a href="javascript:modalWindow('scheda_iscr', 'iscrizione', 'popup-est.php?page=iscrizione')"><?php echo $MESSAGE['homepage']['registration'];?></a>
Ciao!
Prima di tutto: nemmeno a me funziona, yuppi
Seconda cosa: per generare un pulsante che apra la modale basta fare questo, in linea teorica:
<a href="javascript:modalWindow('scheda_iscr', 'iscrizione', 'popup-est.php?page=iscrizione')"><input type="button" value="Registrazione"></a>
[/quote]Mal comune mezzo gaudio (?) :D <3
Grazie proverò !
05/04/2018 09:38:40
Sicuramente ho sbagliato qualcosa ma al momento non ho ancora scoperto cosa. Riesco (per modo di dire) a farlo funzionare con il js open.window, mentre il modal non ne vuol sapere (sarà che nella stessa pagina ho già impostato un modale di tipo differente, con altri id e class, oltre che dimensioni? Eppure non dovrebbe...)
Adesso però purtroppo, sebbene abbia modificato le dimensioni della pagina e la regola del modale nel footer, non riesco a fare in modo che la finestra si apra delle dimensioni decise da me. In ogni browser, tra l'altro, cambia allegramente dimensione. Ho provato a inserire i parametri nel call direttamente nel a href seguendo questo schema
<a href="javascript:window.open ('url', 'id', 'width,height')";>
la finestra si apre, ma appunto se ne frega delle dimensioni che le fornisco.
Ho provato anche a scrivere lo script ex novo a fondo pagina, ma quando lo faccio ottengo di aprire la modale senza il contenuto che le ho assegnato.
Mi sento un po' scema XD scusatemi. Sicuramente mi sfugge qualcosa ma non riesco a capacitarmi di cosa.
Discussione seguita da
Pagine → 1 2
Rispondi alla Discussione Segui Discussione Inoltra Discussione Forum Programmazione, Open Source e Hosting Elenco Forum
Articoli, Interviste e altre Risorse!
Fallen Gods ↗
Cafuné ↗
Hero Wars ↗
Tiles Survive ↗
Storie di Agarthi ↗
Imperion ↗
World of Tanks ↗
Neverness to Everness ↗
World of Warship ↗