- Statut : non résolu
- Ce sujet contient 11 réponses, 2 participants et a été mis à jour pour la dernière fois par
Cedric C., le il y a 13 années et 12 mois.
-
AuteurMessages
-
26 mai 2011 à 4 h 31 min #495506
Bonjour,
Je cherche à personnaliser sur le plugin Dukapress l’affichage du catalogue produits.
Je désire que pour chaque vignette de produits affichés soit aussi affichées la ou les catégories dont ils dépendent.
Tout se passe dans un fichier qui s’appelle dp-products.php
Voici le code d’affichage des vignettes :
$prod_permalink = get_permalink($product->ID);
$category_id = get_cat_ID( ‘Category Name’ );
$content .= ‘‘;
$content .= ‘‘;
$content .= ‘‘;
$content .= ‘post_title . ‘ »>’ . __($product->post_title) . ‘
‘;
$content .= ‘‘ . $product->post_excerpt . ‘
‘;
$content .= ‘‘ . $output . ‘
‘;
$content .= $output;
$content .= $output;
$content .= $output;
$content .= ‘‘;
$content .= ‘‘;
if ($count === intval($column)) {
$content .= ‘‘;
$count = 0;
}
$count++;
$all_count++;
}
}
$content .= ‘‘ . $page_links . ‘
‘;
$content .= ‘‘;
$content .= ‘‘;
}
return $content;
}J’ai essayé au tout début du code d’insérer un requête pour afficher la catégorie comme ceci :
$prod_permalink = get_permalink($product->ID);
$category_id = get_cat_ID( ‘Category Name’ );
$content .= ‘‘;
$content .= ‘Pour trouver les catégories d’un article, la fonction WordPress est get_the_category
foreach((get_the_category($product->ID)) as $category) {
echo ‘cat_ID . ‘.jpg » alt= »‘ . $category->cat_name . ‘ » />’;
IL faut savoir si les catégories de Dukapress recoupent celles de WordPress. C’est probable puisqu’ils utilisent get_cat_ID.
26 mai 2011 à 7 h 31 min #772698Merci pour l’indication. J’ai essayé de l’adapter de la façon suivante :
$content .= foreach((get_the_category($product->ID)) as $category) {
$category->cat_ID };Mais j’ai une parse error
Et n’ayant pas assez de connaissances en la matière, je sèche…comment résoudre cette erreur ?
26 mai 2011 à 8 h 08 min #772699on va faire différemment 🙂
$categories = get_the_category($product->ID);
foreach ($categories as $category)
{
$arrayCat[] = $category->cat_name;
}if (isset($arrayCat))
$content .= implode (‘ | ‘, $arrayCat);26 mai 2011 à 8 h 48 min #772700Super ça avance : les catégories sont affichées mais j’ai 3 problèmes.
D’une part cela affiche Arraymacatégorie à chaque fois et je n’arrive pas à désafficher ce « Array ».
Secondement, mon second produit s’il dépend de la même catégorie que le premier produit affiché affiche deux fois cette même catégorie et ainsi de suite.
Troisièmement, j’essaye de faire un lien sur le catégorie pour afficher tous les produits dépendant de cette catégorie.
J’ai essayé de la sorte :
foreach ($categories as $category)
{
$array_cat[] = $category->’<a href="' .$category_permalink .'">‘.cat_name.’</a>‘;
}Mais toujours cette parse error et mes connaissances manquent.
Bref je patauge…
28 mai 2011 à 7 h 33 min #772701Bon, bon, bon,
J’ai trouvé une solution alternative à mon problème, je vais tout simplement faire appel aux champs personnalisés, dans lesquels je mettrai le lien de la catégorie.
28 mai 2011 à 7 h 48 min #772702????
cela devrait marcher !!
il n’y a pas le debut de la boucle, mais en debut on peut mettre
$tabCat = array();
quand on est sur le parcours des produit mettre
$categories = get_the_category($product->ID);
foreach ($categories as $category)
{
foreach ($tabCat as $cat)
{
if ( $cat->term_id == $category->term_id)
continue;
$tabCat[] = $category;
}
}et à l’endroit où tu veux les afficher
$affCat = array();
if (!empty($tabCat))
{
foreach ($tabCat as $cat)
$affCat[] = ‘term_id ) . ‘ » title= »‘ . sprintf( __( « Articles dans %s » ), $cat->name ) . ‘ » ‘ . ‘>’ . $cat->name.’‘
}if (!empty($affCat))
$content .= ‘Catégories: ‘ + implode(‘, ‘, $affCat);sous réserve des fautes de syntaxes, c’est à peu pres ça, c’est écrit ici donc …. il est possible que tu ais une erreur, il faudra la corriger 🙂
28 mai 2011 à 7 h 52 min #772703non non non 🙂
attend un peu il y aune erreur28 mai 2011 à 8 h 02 min #772704dans le bout de code
foreach ($categories as $category)
{
foreach ($tabCat as $cat)
{
if ( $cat->term_id == $category->term_id)
continue;
$tabCat[] = $category;
}
}cela ne pouvait pas marcher
, j’ai écrit trop vite
je ferai une fonction
function testID($tabCat, $term_id)
{
foreach ($tabCat as $cat)
{
if ( $cat->term_id == $term_id)
return true;
}
return false;
}et modifier l’autre boucle comme ça :
foreach ($categories as $category)
{
if ( ! testID($tabCat, $category->term_id))
$tabCat[] = $category;
}Il existe surement en PHP une fonction testant si un élément d’un tableau existe mais je ne connais pas bien le PHP. Si elle existe, remplacer la fonction $testID par la fonction PHP.
28 mai 2011 à 12 h 37 min #772705Merci,
Ca me donne une erreur invalid argument supplied à la ligne d’affichage.
Mais bon ça va aller comme ça je n’ai pour l’instant pas la solution donc je me rabas vers les champs personnalisés.
mais je ne connais pas bien le PHP
Ah vraiment ? Mais alors que devrais-je dire pour ma part ! J’aimerais avoir ta méconnaissance !
👏
28 mai 2011 à 13 h 12 min #772696la preuve que je le connais pas bien, mais tu aurais pu le voir tout seul 🙂
quand on concatène des chaines en php, on met . , pas +
la chaine d’affichage c’est :
$content .= ‘Catégories: ‘ . implode(‘, ‘, $affCat);29 mai 2011 à 4 h 14 min #772706merci du cours, j’en prends bonne note ! 😋
AuteurMessages12 sujets de 1 à 12 (sur un total de 12)- Vous devez être connecté pour répondre à ce sujet.