Jump to content

[RISOLTO]Inserire script php nel template


danielec

Recommended Posts

Inanzitutto ciao a tutti! Ho necessità di inserire uno script php che esegue una ricerca all'interno di un file *.tpl.
Il file si chiama ricerca.tpl e lo script che esegue la query e fa il dump dei record restituiti si chiama ricerca1.php.
Leggendo il manuale ufficiale di smarty ho visto che sono possibili 2 alternative.
La prima è quella di utilizzare il tag include_php all'interno di ricerca.tpl ed infatti ho fatto in questo modo:

{include_php file="prestashop/modules/ricerca/ricerca1.php"}



Ma restituisce il seguente errore:

Warning: Smarty error: file:prestashop/modules/ricerca/ricerca1.php is not readable in C:\wamp\www\prestashop\tools\smarty\Smarty.class.php on line 1095

Warning: include() [function.include]: Filename cannot be empty in C:\wamp\www\prestashop\tools\smarty\Smarty.class.php on line 1930

Warning: include() [function.include]: Failed opening '' for inclusion (include_path='.;C:\php5\pear') in C:\wamp\www\prestashop\tools\smarty\Smarty.class.php on line 1930





La seconda strada è quella di inserire il codice php dello script nel file template, richiamando la funzione include() con il path dello script, e ho fatto in questo modo:

{php}
   include("/prestashop/modules/ricerca/ricerca1.php");
{/php}



Ma restituisce il seguente errore:

Warning: include(/prestashop/modules/ricerca/ricerca1.php) [function.include]: failed to open stream: No such file or directory in C:\wamp\www\prestashop\tools\smarty\compile\%~^7EA^7EA5212D%%ricerca.tpl.php on line 61

Warning: include() [function.include]: Failed opening '/prestashop/modules/ricerca/ricerca1.php' for inclusion (include_path='.;C:\php5\pear') in C:\wamp\www\prestashop\tools\smarty\compile\%~^7EA^7EA5212D%%ricerca.tpl.php on line 61



Dimenticavo: Prestashop 1.2.2.0.
Grazie a tutti dell'aiuto

Link to comment
Share on other sites

Scusa magari non mi sono espresso bene.
Allora ho creato un dir chiamata /ricerca (subdir di /modules) contenente 3 file: ricerca.tpl (contiene il form di inserimento dati e tramite POST invia i dati alla pagina che esegue la query. è qui che devo inserire lo script) ricerca.php (che crea la classe ricerca con relativo costruttore e fa l'hook sulla home page di PS) e ricerca1.php (che esegue la connessione al db, fa la query ed esegue il dump dei record restituiti dalla query).
Ora la mia necessità è questa: far si che l'output restituito dalla pagina ricerca1.php venga inclusa nella home page di PS.
Come ho scritto ho tentato, leggendo la docs ufficiale di smarty, le 2 strade percorribili: utilizzando il tag include_php all’interno di ricerca.tpl (vedere codice e relativo errore sopra) oppure inserire il codice php dello script in ricerca.tpl, richiamando la funzione include() con il path dello script (vedere codice e relativo errore sopra).

Grazie dell'aiuto!

Link to comment
Share on other sites

Ciao, la tua strada è giusta,
anche se non ho mai provato direttamente, ma di sicuro devi dare un path relativo (preso dalle variabili di smarty).
es: {$base_dir}

Quello però che mi sfugge in tutto quello che hai scritto:

1) crei un modulo che includa il tuo php,
2) memorizzi in una matrice il tuo risultato e lo passi a smarty
3) leghi il modulo ad un hook (es. in home)
4) nel tuo tpl cicli per vedere i risultati

questo è il metodo "classico" si prestashop, perché non dovrebbe andare nel tuo caso?

cosa cambia?

Link to comment
Share on other sites

Ho messo in pratica quello che mi hai detto.
- Ho memorizzato in una matrice i valori restituiti dalla query
- Ho assegnato il risultato a smarty
- Ho fatto l'hook sulla home
- Ho ciclato tramite il costrutto {foreach} e {/foreach} sul file tpl e ho buttato in output i risultati

Grazie davvero!

Link to comment
Share on other sites

Create an account or sign in to comment

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

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...