[resolut] aide sur les tpl [Réglé]
utilisation de variables
Support Général
bacile Membre non connecté
Booster Fronde
-
Booster Fronde
- Voir le profil du membre bacile
- Inscrit le : 07/12/2012
- Site internet
je souhaiterai savoir si il y avait possibilité de faire un test IF avec un variable de bloc
du type :
code php =>
$Template->assign_block_vars('list', array(
'O' => $opbrack,
'c' => $cl,
'li' => $opli,
'I' => $i,
'ID' => $row['id'],
'NAME' => $row['name'],
'doc_img' => $row['icon']
));
dans tpl =>
# START list #
<span id="menu{list.I}">
<ul>
# IF {list.O} #
<span id="mmenu{list.I}"><ul>
# ENDIF #
<li> [img style="vertical-align:middle"]{MODULE_DATA_PATH}/images/folder{doc_img}.png[/img] <a href="articles{list.ID}" class="articles_link_cat">{list.NAME} </a></li>
# IF list.C #
</ul></span >
# ENDIF #
</ul>
</span >
# END list #
$Template->assign_block_vars('list', array(
'O' => $opbrack,
'c' => $cl,
'li' => $opli,
'I' => $i,
'ID' => $row['id'],
'NAME' => $row['name'],
'doc_img' => $row['icon']
));
dans tpl =>
# START list #
<span id="menu{list.I}">
<ul>
# IF {list.O} #
<span id="mmenu{list.I}"><ul>
# ENDIF #
<li> [img style="vertical-align:middle"]{MODULE_DATA_PATH}/images/folder{doc_img}.png[/img] <a href="articles{list.ID}" class="articles_link_cat">{list.NAME} </a></li>
# IF list.C #
</ul></span >
# ENDIF #
</ul>
</span >
# END list #
car quand je teste, ce la me crée une erreur dans le cache tpl
exemple :
Parse error: syntax error, unexpected '}' in /home/httpd/vhosts/libertyforgaming.com/httpdocs/cache/tpl/mmenus_tpl_mmenus.php on line 20
la ligne 20 de mmenus_tpl_mmenus.php corespond a :
<?PHP } ?>
merci de l'aide que vous pourrez m'apporter
Édité par bacile Le 09/12/2012 à 01h55
Visiteur
Boosteur Inactif
Pourrais-tu poster ton code complet PHP pour que l'on puisse y voir clair ?
Mais dans tous les cas, il n'y a pas d'accolade '}' à mettre dans ton fichier PHP pour les variables
Édité par Visiteur Le 08/12/2012 à 08h19
bacile Membre non connecté
Booster Fronde
-
Booster Fronde
- Voir le profil du membre bacile
- Inscrit le : 07/12/2012
- Site internet
Code :
<?php
error_reporting(E_ALL);
require_once('../kernel/begin.php');
require_once('../kernel/header.php');
if (defined('PHPBOOST') !== true)
echo "phpboost defaut";
$page = retrieve(GET, 'p', 1, TUNSIGNED_INT);
$cat = retrieve(GET, 'cat', 0);
$Template->set_filenames(array('mmenus'=> 'mmenus/mmenus.tpl'));
//definie la requette sql.
$result = $Sql->query_while("SELECT id, id_left, id_right, level, name, contents
FROM " . PREFIX . "articles_cats
ORDER BY id_left", __LINE__, __FILE__);
$malign=1;
$i = 0;
$list_cats_js = '';
$array_js = '';
//traite les resultats pour cree un tableau
while ($row = $Sql->fetch_assoc($result))
{
//echo "</ br>loop sql $i";
//flag de mise en page a zero par defaut
$opbrack = false ;
$cl = false ;
$opli = false ;
if (( $row['level'] == 1) && ($malign <> $row['level']))
{
$opbrack = true ; //debut de submenu
}
if (( $row['level'] == 0) && ($malign == 1))
{
$clbrack = true ; // fin de submenu
}
if ( $row['level'] >= 1)
{
$opli = true ; //dans submenu
}
//On assigne les variables pour le POST en précisant l'idurl.
$Template->assign_block_vars('list', array(
'O' => $opbrack,
'c' => $cl,
'li' => $opli,
'I' => $i,
'ID' => $row['id'],
'NAME' => (strlen($row['name']) > 60) ? (substr($row['name'], 0, 60) . '...') : $row['name'],
'INDENT' => ($row['level'] + 1) * 75, //Indentation des sous catégories.
'U_ARTICLES_VARS' => url('.php?cat=' . $row['id'], '-' . $row['id'] . '+' . url_encode_rewrite($row['name']) . '.php')
));
$list_cats_js .= $row['id'] . ', ';
$array_js .= 'array_cats[' . $row['id'] . '] = new Array();' . "n";
$array_js .= 'array_cats[' . $row['id'] . ']['id'] = ' . $row['id'] . ";n";
$array_js .= 'array_cats[' . $row['id'] . ']['id_left'] = ' . $row['id_left'] . ";n";
$array_js .= 'array_cats[' . $row['id'] . ']['id_right'] = ' . $row['id_right'] . ";n";
$array_js .= 'array_cats[' . $row['id'] . ']['i'] = ' . $i . ";n";
$i++;
//flag de submenu
$malign = $row['level'] ;
}
$Sql->query_close($result);
$Template->assign_vars(array(
'LIST_CATS' => trim($list_cats_js, ', '),
'ARRAY_JS' => $array_js,
'ID_END' => ($i - 1)
));
$Template->pparse('mmenus'); // traitement du modele
?>
et pour mon tpl
Code :
<link href="{MODULE_DATA_PATH}/mmenus.css" rel="stylesheet" type="text/css" media="screen, handheld">
<p> test de menu selon articles </p>
<div class="module_menu_container">
# START list #
<span id="menu{list.I}">
<ul>
# IF {list.O} #
<span id="mmenu{list.I}"><ul>
# ENDIF #
<li> <img src="{MODULE_DATA_PATH}/images/folder.png" alt="" style="vertical-align:middle" /> {list.LOCK} <a href="articles{list.U_ARTICLES_VARS}" class="articles_link_cat">{list.NAME} {list.O}</a></li>
# IF list.C #
</ul></span >
# ENDIF #
</ul>
</span >
# END list #
</div>
<p> fin de test </p>
l'erreur de l'accolade inattendu est générée par le moteur de templates lors du parse de " # ENDIF # "
voici un le template généré en cache
Code :
<link href="<?php if (isset($this->_var['MODULE_DATA_PATH'])) echo $this->_var['MODULE_DATA_PATH']; ?>/mmenus.css" rel="stylesheet" type="text/css" media="screen, handheld">
<p> test de menu selon articles </p>
<div class="module_menu_container">
<?php if (!isset($this->_block['list']) || !is_array($this->_block['list'])) $this->_block['list'] = array();
foreach ($this->_block['list'] as $list_key => $list_value) {
$_tmpb_list = &$this->_block['list'][$list_key]; ?>
<span id="menu<?php if (isset($_tmpb_list['I'])) echo $_tmpb_list['I']; ?>"><ul>
# IF <?php if (isset($_tmpb_list['O'])) echo $_tmpb_list['O']; ?> #<span id="mmenu<?php if (isset($_tmpb_list['I'])) echo $_tmpb_list['I']; ?>"><ul><?php } ?>
<li> <img src="<?php if (isset($this->_var['MODULE_DATA_PATH'])) echo $this->_var['MODULE_DATA_PATH']; ?>/images/folder.png" alt="" style="vertical-align:middle" /> <?php if (isset($_tmpb_list['LOCK'])) echo $_tmpb_list['LOCK']; ?> <a href="articles<?php if (isset($_tmpb_list['U_ARTICLES_VARS'])) echo $_tmpb_list['U_ARTICLES_VARS']; ?>" class="articles_link_cat"><?php if (isset($_tmpb_list['NAME'])) echo $_tmpb_list['NAME']; ?></a></li>
# IF <?php if (isset($_tmpb_list['C'])) echo $_tmpb_list['C']; ?> #</ul></span ><?php } ?>
</ul></span >
<?php } ?>
</div>
<p> fin de test </p>
Visiteur
Boosteur Inactif
Attention je ne suis vraiment pas dev ^^
Code TPL :
<link href="{MODULE_DATA_PATH}/mmenus.css" rel="stylesheet" type="text/css" media="screen, handheld"> <p> test de menu selon articles </p> <div class="module_menu_container"> # START list # <span id="menu{I}"> <ul> # IF O # <span id="mmenu{I}"><ul> # ENDIF # <li> <img src="{MODULE_DATA_PATH}/images/folder.png" alt="" style="vertical-align:middle" /> {LOCK} <a href="articles{U_ARTICLES_VARS}" class="articles_link_cat">{NAME} {O}</a></li> # IF c # </ul></span > # ENDIF # </ul> </span > # END list # </div> <p> fin de test </p>
bacile Membre non connecté
Booster Fronde
-
Booster Fronde
- Voir le profil du membre bacile
- Inscrit le : 07/12/2012
- Site internet
le fait d'avoir supprimé les accolades entourantes et mis # IF list.O # fonctionne
une petite Maj du wiki pourrai aider d'autres personnes.
ReidLos Membre non connecté
-
Modérateur
- Voir le profil du membre ReidLos
- Inscrit le : 27/02/2009
- Site internet
- Groupes :
-
Equipe Développement
Citation :
une petite Maj du wiki pourrai aider d'autres personnes.
Prochainement le site va refaire peau neuve avec également un nouveau wiki
Répondre
Vous n'êtes pas autorisé à écrire dans cette catégorie