Comment Afficher La Marque Dans La Rubrique Notre Sélection

6 messages dans ce sujet

Posté(e) · Signaler ce message

Bonjour,

J'aimerais faire apparaître la marque du produit lorsque la case Afficher en page d'accueil et dans la rubrique "Notre sélection" est cochée.

Sous le prix par exemple.

Comment faire?

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Bonjour,

 

La fonction d'affichage des produits dans les pages catalogues est affiche_produits dans le fichier lib\fonctions\display_product.php. Le fichier template associé est produits.tpl. Il faut créer une nouvelle variable SMARTY dans cette fonction qui contiendra la marque du produit ($product_object->get_product_brands(false)) ; si le produit est affiché en page d'accueil ($product_object->on_special==1)

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Dans display_product, j'ai ajouté ceci:

 

$tpl->assign('marque', array(
                        'label' => $GLOBALS['STR_BRAND'] . $GLOBALS['STR_BEFORE_TWO_POINTS'],
                        'txt' => trim(get_brand_link_html($product_object->id_marque, true))
                    ));
 

Dans produits.tpl, ligne 117 j'ai ajouté ceci afin de faire apparaître la marque:

 
{if isset($marque)}
<h3 property="brand">{$marque.label}: <b>{$marque.txt}</b></h3>
{/if}
 
Pas de problème, la marque s'affiche bien si je suis dans une catégorie.
Par contre, si je coche un ou plusieurs produits à afficher en page d'accueil, c'est une autre marque qui s'affiche (la même marque pour tout les produits de la page d'acceuil).
 
Pourquoi donc cela?
Ou faut il placer ($product_object->on_special==1) ?
 
:-(

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Bonjour,

 

vous pouvez placer $product_object->on_special==1 autour de

$tpl->assign('marque', array(
                        'label' => $GLOBALS['STR_BRAND'] . $GLOBALS['STR_BEFORE_TWO_POINTS'],
                        'txt' => trim(get_brand_link_html($product_object->id_marque, true))
                    ));
pour afficher le bloc uniquement pour les produits en page d'acceuil. Il faut utiliser aussi la constante IN_HOME pour savoir si la fonction est appelée par la page d'accueil et pas une autre. Donc le test est

 

if ($product_object->on_special==1 && defined('IN_HOME')) {

   $tpl->assign('marque', array(

                        'label' => $GLOBALS['STR_BRAND'] . $GLOBALS['STR_BEFORE_TWO_POINTS'],
                        'txt' => trim(get_brand_link_html($product_object->id_marque, true))
                    ));

}

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Merci, l'affichage de la marque a bien lieu, sauf que c'est toujours la même marque qui apparaît, quelque soit le produit.

 

Si je coche 4 produits à afficher en accueil, alors j'ai la marque du premier produit de la liste pour tout les produits.

 

C'est comme si à la génération de la cellule d'affichage du produit, ma variable 'marque' n'était pas réinitialisée et garde donc la valeur de la première cellule produit affichée. Y a t il un endroit ou l'on doit initialiser la variable 'marque' ? 

 

Voici mon code ajouté (en gras)

A partir de la ligne 618

 
$product_object = new Product($prod['id'], $prod, true, null, true, !is_user_tva_intracom_for_no_vat() && !is_micro_entreprise_module_active());
 
// on affiche une cellule
$tmpProd['i'] = $j + 1;
 
if ($type == 'save_cart') { // Si on est dans le module save_cart on ajoute les actions du module
$tmpProd['save_cart'] = array(
'src' => $GLOBALS['wwwroot'] . '/' . $GLOBALS['site_parameters']['backoffice_directory_name'] . '/images/b_drop.png',
'href' => get_current_url(false) . '?mode=delete&id=' . $prod['save_cart_id'],
'confirm_msg' => $GLOBALS['STR_DELETE_CART_PRESERVATION'],
'title' => $GLOBALS['STR_DELETE_CART_TITLE'],
'label' => $GLOBALS['STR_DELETE']
);
}
$tmpProd['href'] = $product_object->get_product_url();
$tmpProd['name'] = $product_object->name;
 
if ($mode == 'line' || empty($GLOBALS['site_parameters']['disable_description_in_products_columns'])) {
$tmpProd['description'] = String::str_shorten_words(String::str_shorten(str_replace(array("\n","\r", '  ', '   '), ' ',String::strip_tags(String::nl2br_if_needed(trim($product_object->descriptif)))), $description_length), 60);
}
 
if (!empty($_GET['cId']) && !empty($_GET['pId']) && $_GET['pId'] == $prod['id']) {
// Lors de la sélection de la couleur d'un produit depuis une page catalogue
$display_picture = $product_object->get_product_pictures(false, $_GET['cId'], true);
$display_picture = $display_picture[0];
} else {
$display_picture = $product_object->get_product_main_picture(true);
}
 
if (!empty($display_picture)) {
if (pathinfo($display_picture, PATHINFO_EXTENSION) == 'pdf') {
$tmpProd['image'] = array(
'src' => $GLOBALS['repertoire_upload'] . '/thumbs/' . thumbs('logoPDF_small.png', $params['small_width'], $params['small_height'], 'fit', $GLOBALS['dirroot'] .'/images/'),
'width' => $GLOBALS['site_parameters']['small_width'],
'height' => $GLOBALS['site_parameters']['small_height'],
'alt' => $product_object->name,
'zoom' => array(
'href' => $GLOBALS['repertoire_upload'] . '/' . $display_picture,
'is_lightbox' => false,
'label' => $GLOBALS['STR_ZOOM']
)
);
} else {
$tmpProd['image'] = array(
'src' => $GLOBALS['repertoire_upload'] . '/thumbs/' . thumbs($display_picture, $params['small_width'], $params['small_height'], 'fit'),
'width' => false,
'height' => false,
'alt' => String::str_form_value($product_object->name),
'zoom' => array(
'href' => $GLOBALS['repertoire_upload'] . '/' . $display_picture,
'is_lightbox' => true,
'label' => $GLOBALS['STR_ZOOM']
)
);
}
} else {
$tmpProd['image'] = array(
'src' => $GLOBALS['repertoire_upload'] . '/thumbs/' . thumbs($GLOBALS['site_parameters']['default_picture'], $params['small_width'], $params['small_height'], 'fit'),
'width' => '130',
'height' => false,
'alt' => $GLOBALS['STR_PHOTO_NOT_AVAILABLE_ALT']
);
}
 
// Affichage de la marque page d'accueil
if ($product_object->on_special==1 && defined('IN_HOME')) {
  $tpl->assign('marque', array(
       'label' => $GLOBALS['STR_BRAND'] . $GLOBALS['STR_BEFORE_TWO_POINTS'],
                        'txt' => trim(get_brand_link_html($product_object->id_marque, true))
                    ));
}
// Fin Affichage de la marque page d'accueil
 
if ($product_object->is_price_flash(is_reseller_module_active() && is_reseller())) {
$tmpProd['flash'] = $GLOBALS['STR_TEXT_FLASH1'] . ' ' . get_formatted_duration(strtotime($product_object->flash_end) - time(), false, 'day') . ' ' . $GLOBALS['STR_TEXT_FLASH2'];
}  
// Affichage des produits en ligne
 
A l'affichage j'ai ceci , post-12081-0-67844800-1416914477_thumb.j (Pays correspond à la marque)
 
 

Partager ce message


Lien à poster
Partager sur d’autres sites

Posté(e) · Signaler ce message

Bonjour,

 

Pour comprendre l'origine du problème, vous pouvez vérifier que la valeur de $product_object->id_marque soit différente pour chaque produit (en utilisant var_dump($product_object->id_marque)). Si cette valeur est différente à chaque passage, vous pouvez regarder plus en détail le fonctionnement de la fonction get_brand_link_html, en testant la variable $brand avec var_dump par exemple

Partager ce message


Lien à poster
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !


Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.


Connectez-vous maintenant

Twitter Advisto ecommerce

Facebook PEEL Shopping