Vai al contenuto
John Petrucci Blu

PHP include nei template

Recommended Posts

John Petrucci Blu

Buongiorno,

sono a richiedere un aiuto/suggerimento riguardo un implementazione nella Skin che sto preparando per un prossimo upgrade all'Invision 3.1.3 da una versione precedente che ho attualmente attiva sul mio sito.

In sintesi voglio aggiungere un blocco alla Sidebar a comparsa nel quale far apparire le News prese da un DB del sito. Per fare questo ho inserito il codice per il recupero delle news all'interno di un file .php che intendo richiamare nel punto interessato. Ora il codice della Skin appare in questo modo:

<if test="sideBarEnabled2:|:$this->templateVars['sidebar_enabled']">
<div id='index_stats' class='right clearfix' <if test="sidebarclosed2:|:IPSCookie::get('hide_sidebar') == '1'">style='display: none'</if>>
<div class="general_box">
<h3>News</h3>
<php>include('custom_element\ticker.php');</php>
</div>
<foreach loop="side_blocks:$side_blocks as $block">
{$block}
</foreach>
</div>
</if>

Viene aggiunto correttamente il Box News in cima alla Sidebar ma l'include PHP viene eseguito in testa alla pagina! Guardando anche il codice sorgente che ne consegue vedo il codice html prodotto dallo script stampato prima dell'intestazione DOCTYPE della pagina

*MIO CODICE HTML STAMPATO DELLE NEWS*
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

Da cosa è prodotto questo errore? C'è qualche considerazione nell'uso dei PHP tags di cui non sono a conoscenza (anche perchè non ho trovato alcuna documentazione ufficiale ma solo qualche indicazione su vari forum)?

C'è un sistema diverso per includere tali informazioni?

Grazie

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti
John Petrucci Blu

E' il codice che la fa aprire, difatti il blocco aggiuntivo compare in testa.

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti
John Petrucci Blu

Mi sono spiegato male. Il Box compare correttamente nel posto in cui voglio che sia. E' il contenuto del Box (ovvero l'include PHP) che anzichè comparire dove mi aspetto, viene prodotto in alto prima di ogni cosa. Come se eseguisse il codice PHP prima di ogni cosa e lo piazzasse in testa.

L'effetto che ne consegue è che le news compaiono come se fossero dentro un contenitore DIV in absolute anzichè in relative (ovvero all'interno del Box).

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti
najaru

allora prova a creare un nuovo template, nella categorie other template.

Metti tutto il codice li.

Poi richiami quel template nel template della sidebar

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti
John Petrucci Blu

Ho trovato anche un'altra soluzione forse più pratica per risolvere il problema sopracitato. La allego per conoscenza.

E' sufficiente infatti modificare nel nostro include PHP l'output che viene fornito. Anzichè utilizzare comandi PHP come "echo" e similiari per la stampa dell'output è sufficiente mettere il tutto dentro una stringa di testo da far richiamare come variabile del forum. Ammettendo quindi che abbia un file contenuto.php fatto in questo modo:

<?
$contenuto = "questo è il testo che deve comparire e può essere ricavato da if, while, mysql_query, etc.";
?>

Nel template del forum si dovrà fare l'include in questo modo

<php>include('contenuto.php');</php>
{$contenuto}

Dove $contenuto è la variabile contenuta nell'include con l'output finale di quello che si vuole mostrare.

Modificato da John Petrucci Blu

Condividi questo messaggio


Link di questo messaggio
Condividi su altri siti

Crea un account o accedi per lasciare un commento

You need to be a member in order to leave a comment

Crea un account

Iscriviti per un nuovo account nella nostra comunità. È facile!

Registra un nuovo account

Accedi

Sei già registrato? Accedi qui.

Accedi Ora


×