26/08/2014, 19:27:32
okay
c'est ton premier site avec cmsms non ?
il est impossible d'insérer du code php dans le template. On passe par des balises utilisateurs (UDT) forcement ou des balises smarty si la logique métier le permet
Dans ton cas tu as la solution suivante :
UDT : tu créé ton UDT nommée randomBg par exemple.
Son code SANS <?php ?>
tu l'appel dans ton gabarit : {randomBg} sans le $ devant (caractéristique de l'UDT) et ensuite tu profites de la nouvelle variable smarty disponible : {$monUrlRandomSmarty.bg} et {$monUrlRandomSmarty.url} avec un $ devant cette fois ci : ce sont des variables.
ce qui te donne :
C'est propre, c'est dynamique et c'est smarty qui s'occupera de compiler du code PHP + mise en cache afin de rendre ton code super rapide![Wink Wink](https://forum.cmsmadesimple.fr/images/smilies/wink.png)
PS : le code est écrit sans test, je t'assure pas d'avoir laissé une bourde.
c'est ton premier site avec cmsms non ?
il est impossible d'insérer du code php dans le template. On passe par des balises utilisateurs (UDT) forcement ou des balises smarty si la logique métier le permet
Dans ton cas tu as la solution suivante :
UDT : tu créé ton UDT nommée randomBg par exemple.
Son code SANS <?php ?>
Code :
//Double tableau imbriqué, une liste comportant une série de liste avec clé : bg et url
// Il suffit d'ajouter une ligne à la suite pour qu'elle soit prise en compte.
$urls = array(
array('bg' => 'bg1.jpg', 'url' => 'http://www.site1.fr'),
array('bg' => 'bg2.jpg', 'url' => 'http://www.site2.fr'),
array('bg' => 'bg3.jpg', 'url' => 'http://www.site3.fr'),
array('bg' => 'bg4.jpg', 'url' => 'http://www.site4.fr'),
)
//Je tire au hasard l'un des X-1 élements de mon tableau
// Cet élement est un tableau avec des clés : bg et url
// Le calcul de la longueur de tableau est automatique pour éviter un oublis
$monUrlRandomPhp = $urls[mt_rand(0, count($urls) - 1)];
//On récupère le moteur smarty
$smarty = cmsms()->GetSmarty();
//Passage au moteur Smarty de la variable monUrlRandomPhp sous le nom monUrlRandomSmarty
// Pourra être dès lors exploitée dans le template sous la forme
// {$monUrlRandomSmarty.bg} et {$monUrlRandomSmarty.url}
$smarty->assign('monUrlRandomSmarty', $monUrlRandomPhp);
tu l'appel dans ton gabarit : {randomBg} sans le $ devant (caractéristique de l'UDT) et ensuite tu profites de la nouvelle variable smarty disponible : {$monUrlRandomSmarty.bg} et {$monUrlRandomSmarty.url} avec un $ devant cette fois ci : ce sont des variables.
ce qui te donne :
Code :
<head>
{randomBg}
<style type="text/css">
body { background: url({$monUrlRandomSmarty.bg});}
.habillage a { background: url({$monUrlRandomSmarty.url}) top center no-repeat;
display: block;
cursor: pointer !important;
width: 100%;
height: 1000px;
position: absolute;}
</style>
</head>
<body>
<div class=habillage ><a href="{$monUrlRandomSmarty.url}"></a></div>
</body>
C'est propre, c'est dynamique et c'est smarty qui s'occupera de compiler du code PHP + mise en cache afin de rendre ton code super rapide
![Wink Wink](https://forum.cmsmadesimple.fr/images/smilies/wink.png)
PS : le code est écrit sans test, je t'assure pas d'avoir laissé une bourde.