Code php dans une template pour une page statique
Suite aux rapides amélioration qu'a subit le plugin plxMyShop je me décider a moi aussi améliorer le code de mon site
Jusqu’à présent ma homepage est en fait une page vide qui utilise une template qui elle contient tout le code nécessaire pour afficher ma boutique
static-longslow.php
Ce code marchait très bien jusqu’à ce que Yannic et Sudwebdesign se mettent a améliorer le code du plugin. Une des nouvelles fonctions est la possibilité de modifier le contenu du panier en ajoutant ou enlevant les articles. Quand on fait ca le texte du bouton de l'article change pour indique "Modifier" plutôt que "Supprimer"
C'est fait grâce a un hook qui est dans le fichier plxMyShop.php.
Je suspecte qu'on ne peut pas utiliser de hook dans une template! Ai-je raison?
L'autre manière de faire serait de transféré le code PHP dans la page statique elle même. Sauf que je n'arrive pas à intégrer de code PHP dans une page statique
Bref un peu d'aide ne me ferait pas de mal
Jusqu’à présent ma homepage est en fait une page vide qui utilise une template qui elle contient tout le code nécessaire pour afficher ma boutique
static-longslow.php
[== PHP ==]
<?php include(dirname(__FILE__) . '/header.php'); ?>
<main class="main">
<div class="grid">
<div css="col sml-12">
<article class="article static" role="article" id="static-page-<?php echo $plxShow->staticId(); ?>">
<section>
<?php $plxShow->staticContent(); ?>
</section>
</article>
</div>
<div class="grid">
<div class="content col lrg-8">
<section >
<?php
$plxMyShop = $plxShow->plxMotor->plxPlugins->aPlugins['plxMyShop'];
$plxMyShop->donneesModeles["plxPlugin"] = $plxMyShop;
if (isset($plxMyShop->aProds) && is_array($plxMyShop->aProds)) {
#echo $plxMyShop->aProds[ $plxMyShop->productNumber()]['name'];
foreach ($plxMyShop->aProds as $k1 => $v1) {
if ($v1['pcat'] == 1 && $v1['menu'] =='oui') {
$cat_array[$k1] = $v1['name']; # can only get the name of a category
}
}
foreach($cat_array as $k1 => $v1){
echo '<h1 class="title_icon">'.$v1.'</h1>';
$plxMyShop->idProduit = $k1;
$plxMyShop->plxShowProductContent();
#Now we display a nice name of the categorie....
foreach($plxMyShop->aProds as $k => $v) {
if ($v['group'] == $k1
&& $v['pcat'] !=1
&& $v['active']==1
&& $v['readable']==1
) {
$plxMyShop->donneesModeles["k"] = $k;
$plxMyShop->modele("espacePublic/boucle/produitRubrique");
}
}
}
}
?>
</section>
</div>
<div>
<?php include(dirname(__FILE__).'/sidebar.php'); ?>
</div>
</div>
</div>
</main>
<?php include(dirname(__FILE__).'/footer.php'); ?>
Ce code marchait très bien jusqu’à ce que Yannic et Sudwebdesign se mettent a améliorer le code du plugin. Une des nouvelles fonctions est la possibilité de modifier le contenu du panier en ajoutant ou enlevant les articles. Quand on fait ca le texte du bouton de l'article change pour indique "Modifier" plutôt que "Supprimer"
C'est fait grâce a un hook qui est dans le fichier plxMyShop.php.
Je suspecte qu'on ne peut pas utiliser de hook dans une template! Ai-je raison?
L'autre manière de faire serait de transféré le code PHP dans la page statique elle même. Sauf que je n'arrive pas à intégrer de code PHP dans une page statique
Bref un peu d'aide ne me ferait pas de mal
Connectez-vous ou Inscrivez-vous pour répondre.
Réponses
ajoute :
je le modifierais plus tard à soir pour prendre en compte le fichier de langue, mais c'est tout ce qu'il te manque je pense.
Edit : La solution d'ajouter un shortcodeactif true de Sudwebdesign est bien meilleure.
Buster/NGINX/PHP7/PluXml5.8
Édit: à partir de plxMyShop v0.13.1b
Si l'on souhaite utiliser le shortcode dans une page statique.
Juste après le transfert du plugin dans la variable $plxMyShop il suffit d'ajouter [em]$plxMyShop->shortcodeactif = true;[/em] comme ceci: Ce qui donne au complet:
il est ré-indenté, attention au mélange des espaces avec les tabulations
Merci du partage
@Plux
Notre temps est la seule monnaie vraie ;)
Site, Dépôt, framagit, MyShop, Factux
#mozinor président
Pour cela si tu as un éditeur genre CKEditor ou autre, il est mieux de le désactiver ou au pire de passer en code source.
(le désactiver est mieux, voir même de ne pas en avoir du tout pour éviter un jour d'éditer la page en question avec l'éditeur ce qui sera une catastrophe pour le code de ta page)
et si l'on se sert de $plxShow, il faut la déclarer avant avec ce qui donnerais dans ton cas ( avec le code repris par Sudwebdesign )
Toutefois il est certainement préférable de plutôt faire cela dans le thème ( comme tu le faisait jusqu'à présent avec ton static-longslow.php -> voir code de Sudwebdesign au-dessus )
Buster/NGINX/PHP7/PluXml5.8
le rajout du code suivant a resolu le probleme du boutton. Je peux maintenant voir le texte du bouton changer quand je change la valeur du panier
Par contre le shortcode [boutonPanier xxx] ne marche toujours pas a l'interieur de la template. Il affiche juste le texte du shortcode
Edit: En transferant le code dans la page statique comme indique par Yannic ca marche.
Voila comment j'affiche le produit maintenant. J'ai remplace
par
Par contre pourquoi est-il mieux d'utilise une template du theme plutot que directement dans la page statique? L'un comme l'autre ne me derange pas. Je vuex juste faire les choses comme il faut (pour une fois )
- le shortcode boutonPanier, oui pour le moment ne fonctionne que dans une page statique, il est prevu de pouvoir le faire fonctionner partout dans une future
- pour le code php, l'un ou l'autre aura ses pour et ses contre. Cela dépend surtout ce que tu en fait,
Pour rien qu'une page et qui ne fait qu'afficher du contenu tu est correct dans cette demarche d'autant quelle suivras les changements de themes.
- par contre si tu devais en avoir plusieurs il est mieux de penser a un plugin ou une modification/evolution du plugin pour faire ton besoin via un autre shortcode ou autre dans ton cas la ou a une modification/ajout de template dans le thème
Ceci afin d'éviter de melanger le contenu ( texte de tes categories/pages/articles... ) et le code ( php/html qui vas les afficher ou autre )
Sinon, c'est comme si tu rangeais les pâtes avec les casseroles dans la cuisine, tu peux, c'est plus pratique et rapide quand tu veux les faire cuire mais ce n'est pas leur place que ma maman avais dis xD
Buster/NGINX/PHP7/PluXml5.8
[del]
Je pense que le plugin est prêt pour aller sur mon site web![/del]
Le plugins est maintenant live sur mon site!