Mise en place de fiches

2»

Réponses

  • danielsandanielsan Member
    avril 2014 modifié
    okay.
    je vois donc bien différents champs :
    */ nombre de joueurs
    */ durée (en heure ou minute à toi de décider)
    */ matériel (sous la forme XX|YY|ZZ)

    puis dans le template :
    [== PHP ==]
    <?php
    $joueurs = $plxShow->callHook('champArt', 'joueurs_R');
    if($joueurs!="") {
    	echo "Nombre de joueur(s) : "
    	for($i=1;$i<=$joueurs;$i++){
    		echo '<img src="bonhomme.jpg">'; // insertion d'autant d'image de bonhomme qu'il y a de joueur
    	}
    	// ou mieux :
    	$width_img = 25; // largeur de l'image du bonhomme
    	$width_joueur = $width_img*$joueurs;
    	
    	// on va agrandir la largeur du bloc du nombre de joueur afin que, grâce au style CSS :
    	// 1/ tu fais sotir le texte via un text-indent = -900px,
    	// 2/ tu place l'image d'un bonhomme en background avec un background-repeat:repeat-x qui va répéter l'image du bonhomme sur la largeur du bloc
    	// donc si ton image fait 25px de large, avec 3 joueurs, ton bloc ferra 3*25 = 75px, on verra 3 bonhommes ! ;)
    	echo '<div class="joueurs" style="width='.$width_joueur.'px">'.$joueurs.'</div>';
    }
    
    $duree = $plxShow->callHook('champArt', 'duree_R');
    if($duree!="") {
    	echo "Durée : "
    	echo '<img src="duree'.$duree.'.jpg">'; // 12 images d'horloge > 1 image = 1heure // ou l'image d'une aiguille que tu fais tourner avec CSS rotate
    	// ou mieux :
    	echo '<div class="horloge duree-'.$duree.'">'.$duree.' heures</div>'; // avec un style sur <div> pour sortir le texte du cadre et insérer l'image qui va bien en arrière plan
    }
    
    $materiel = $plxShow->callHook('champArt', 'materiel_R');
    if($materiel!="") {
    	$tab_materiel = explode("|",$materiel);
    	echo "Liste du matériels :";
    	echo "<ul>";
    	foreach($tab_materiel as => $matos){
    		echo '<li>'.$matos.'</li>'; // matos sous forme de liste
    	}
    	echo "</ul>";
    }
    ?>
    

    Pour le "comment jouer", soit tu rajoute un champ exprès, soit tu utilises le bloc "content".

    De cette manière tu n'as qu'un seul template lié aux jeux (article-jeux.php)*
    C'est ça le MVC ;)

    */ Tu ne pollue pas le contenu de ton article avec des balises qui ne veulent rien dire sorties de ton script
    */ tu n'as pas à avoir peur de faire une erreur de saisie histoire de faire tourner ton preg_reg en bourrique :D
  • Si toutes mes fiches avaient la même allure, c'est qqchose dans ce genre là que j'aurais fait.
    Mais ci et là il y a des divergences...

    A terme, il y aura au moins 4 types de billets :
    1. Fiche de jeu
    2. Fiche de famille de jeux
    3. Fiche d'auteur
    4. Blablatages divers
    Je peux en effet mettre des if dans le code du template, mais je souhaitais qqchose de + simple...
    Merci de t'être penché sur mon cas (désespéré :))

    Ps :
    Tu as une pte erreur de syntaxe : foreach($tab_materiel as => $matos){
    La flèche => est en trop...
    Tu sembles être un adepte de la concaténation.
    Tu écris : echo '<li>'.$matos.'</li>';
    Perso, j'aurais écris : echo "<li>$matos</li>";
    Mais à chacun ses tics de programmation :)
  • danielsandanielsan Member
    avril 2014 modifié
    PatrikGC a écrit:
    Tu as une pte erreur de syntaxe : foreach($tab_materiel as => $matos)
    je suis habituellement un adepte du
    [== PHP ==]
    foreach($tab as $k => $v)
    
    :D
    PatrikGC a écrit:
    Perso, j'aurais écris : echo "<li>$matos</li>";
    je crois que même si cette écriture passe, qu'elle ne soit pas fondamentalement juste ...

    Ton cas n'est pas désespéré, tu cherches juste un gros script d'expression régulière (que tu penses plus simple, pourquoi pas ...).
    Je n'ai qu'une hâte, c'est de la découvrir ... :D
    Mon avis est qu'elle sera beaucoup plus complexe et source d'ennuie et nuit blanche que ce que je t'ai détaillé

    D'ailleurs tu as écris bien plus de lignes sur ce topic que la solution que je t'ai proposé ... t'aurais déjà fini :D

    Je t'ai volontairement fait un exemple détaillé pour que tu vois la portée de la solution, qui peut se résumer à :
    [== PHP ==]
    <?php
    $liste_champs = array("joueurs","duree","materiel");
    foreach($liste_champs as $champ){
    	if($plxShow->callHook('champArt', $champ.'_R')!="") {
    		eval($plxShow->callHook('champArt', $champ.'_L'));
    	}
    }
    ?>
    
    et si Stéphane passe par là, il te la résume en une seule ligne ! :D
  • PatrikGCPatrikGC Member
    avril 2014 modifié
    Merci pour ton aide :)
    Je vais me pencher à nouveau sur ce cas ce weekend...
    Peut-être que je rechch qqch de trop compliqué et/ou tordu ;)
    Car finalement, je cherche à mettre un sous-template dans mon template..;
Connectez-vous ou Inscrivez-vous pour répondre.