Vai al contenuto
  • 0

PHP include nei template


John Petrucci Blu

Domanda

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

Link al commento
Condividi su altri siti

9 risposte a questa domanda

Messaggi raccomandati

  • 0

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

Link al commento
Condividi su altri siti

  • 0

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

Metti tutto il codice li.

Poi richiami quel template nel template della sidebar

Link al commento
Condividi su altri siti

  • 0

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
Link al commento
Condividi su altri siti

Crea un account o accedi per lasciare un commento

Devi essere un membro per lasciare un commento

Crea un account

Iscriviti per un nuovo account nella nostra community. È facile!

Registra un nuovo account

Accedi

Sei già registrato? Accedi qui.

Accedi Ora
  • Chi sta navigando   0 utenti

    • Nessun utente registrato visualizza questa pagina.
×
×
  • Crea Nuovo...

Informazioni importanti

Abbiamo inserito dei cookies nel tuo dispositivo per aiutarti a migliorare la tua esperienza su questo sito. Puoi modificare le impostazioni dei cookie, altrimenti puoi accettarli cliccando su continua. to insert a cookie message.