Module Promotion en page d'accueil

Messagepar Gwendall » Lun 17 Nov 2008, 21:16

En fait, je souhaiterai afficher trois produits dans un module et l'insérer dans ma page d'accueil. J'ai bien vu qu'il existait une box, mais celle-ci ne permet l'affichage que d'1 produit. J'ai cherché une contrib mais je n'ai rien trouvé.

En me basant sur la page specials.php qui permet d'afficher les promos, et du module new_products.php, je tente de créer un nouveau module. Je me suis donc basé sur le product_listing.php que j'ai simplifié et que j'ai nommé product_promo.php.
Je souhaiterai maintenant l'insérer directement sur ma page d'accueil. en utilisant ceci :
Code: Tout sélectionner
<?php
$specials_query_raw = "select p.products_id, pd.products_name, p.products_price, p.products_tax_class_id, p.products_image, s.specials_new_products_price from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_DESCRIPTION . " pd, " . TABLE_SPECIALS . " s where p.products_status = '1' and s.products_id = p.products_id and p.products_id = pd.products_id and pd.language_id = '" . (int)$languages_id . "' and s.status = '1' order by s.specials_date_added DESC";
  $listing_split = new splitPageResults($specials_query_raw, MAX_DISPLAY_SPECIAL_PRODUCTS);
include(DIR_WS_MODULES . FILENAME_PRODUCT_PROMO);

mais ça ne fonctionne pas.
Je suppose que cela vient de FILENAME_PRODUCT_PROMO qui n'est pa répertorié mais après avoir cherché dans les fichiers languages, je n'ai rien trouvé.
OSCSS 1.2.1 + QTPro 4.3 + Attributes_sort_order + add-weight-to-product-attributes v0.2 + short description + module Promo
Gwendall
Membre actif
 
Messages: 43
Inscription: Mar 10 Juil 2007, 11:29

Messagepar j4k » Mar 18 Nov 2008, 01:22

a déclarer dans includes/filenames.php

Fait nous suivre l'ensemble des codes, c'est interessant comme hack, on pourra l'inclure en plugin ou dans le noyau
~ osCSS 1.2.1 ~
Avatar de l’utilisateur
j4k
Site Admin
 
Messages: 1259
Inscription: Mer 27 Avr 2005, 09:13
Localisation: France

Messagepar Gwendall » Mar 18 Nov 2008, 20:34

Merci J4K pour l'info.
Alors pour l'instant j'arrive à faire afficher 1 produit en aléatoire.
Mais je bloque pour l'affichage de 3 produits.

Voici la page :
Code: Tout sélectionner
<?php
 if ($random_product = tep_random_select("select p.products_id,pd.products_name,p.products_price,p.products_tax_class_id, p.products_image, s.specials_new_products_price from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_DESCRIPTION . " pd, " . TABLE_SPECIALS . " s where p.products_status = '1' and p.products_id = s.products_id and pd.products_id = s.products_id and pd.language_id = '" . (int)$languages_id . "' and s.status = '1' order by s.specials_date_added desc, rand() limit 3")) {
?> 

<div class="listingpromo">
<div class="listingTop"></div>   
  <div class="listingImage">
     <a href="<?php echo tep_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . $random_product["products_id"]) ;?>"><?php echo tep_image(DIR_WS_IMAGES . $random_product['products_image'], $random_product['products_name'], SMALL_IMAGE_WIDTH, SMALL_IMAGE_HEIGHT) ;?></a>
    </div>
  <div class="listingInfos">
    <p class="listingName"><a href="<?php echo tep_href_link(FILENAME_PRODUCT_INFO, 'products_id=' . $random_product['products_id']) ;?>"><?php echo $random_product['products_name'] ;?></a></p>
    <p class="listingPrice">
    <del><?php echo $currencies->display_price($random_product['products_price'], tep_get_tax_rate($random_product['products_tax_class_id'])) ;?></del>
    <span class="productSpecialPrice"><?php echo $currencies->display_price($random_product['specials_new_products_price'], tep_get_tax_rate($random_product['products_tax_class_id'])) ;?></span>
      </p>
   </div>   
    <div class="listingBottom"></div>
</div>
<?php         
  }
?>
<br class="bottom">

Mais, ça ne m'affiche qu'un produit.
Je continue de chercher.
Mais si tu as une idée, je suis preneur ;)
OSCSS 1.2.1 + QTPro 4.3 + Attributes_sort_order + add-weight-to-product-attributes v0.2 + short description + module Promo
Gwendall
Membre actif
 
Messages: 43
Inscription: Mar 10 Juil 2007, 11:29

Messagepar j4k » Mar 18 Nov 2008, 21:26

mmh en fait la boucle ne se fait qu'une fois car elle est dans le if donc comme le if est positif (avec limit 1 ou 3 c pareil) il rentre dans le if en ressort et c tout

Il faut que tu lise la requete sql et que tu lance une boucle jusqu'à la fin de l'enregistrement
~ osCSS 1.2.1 ~
Avatar de l’utilisateur
j4k
Site Admin
 
Messages: 1259
Inscription: Mer 27 Avr 2005, 09:13
Localisation: France

Messagepar Gwendall » Jeu 20 Nov 2008, 14:58

Bon. C'est bon.

La manip sur la base pour limiter le nombre d'articles à afficher dans le module : Gérer dans l'espace admin - Valeur max.
Code: Tout sélectionner
INSERT INTO `osc_configuration` (`configuration_id`, `configuration_title`, `configuration_key`, `configuration_value`, `configuration_description`, `configuration_group_id`, `sort_order`, `last_modified`, `date_added`, `use_function`, `set_function`) VALUES
(196, 'Affichage des promotions dans le module', 'MAX_DISPLAY_PROMO_PRODUCTS', '3', 'Nombre maximum de produits en promo &agrave; afficher dans le module.', 3, 5, '2008-11-19 12:30:44', '2005-03-13 17:51:14', NULL, NULL);

! Attention ! : Vérifier le n°id pour moi 196 et la position dans le menu 3,5 qui nécessite d'incrémenter de 1 les suivant pour les 3,xx.

la page module_promo.php à placer dans includes/modules/
Code: Tout sélectionner
<?php
  $specials_query_raw = "select p.products_id, pd.products_name, p.products_price, p.products_tax_class_id, p.products_image, s.specials_new_products_price from " . TABLE_PRODUCTS . " p, " . TABLE_PRODUCTS_DESCRIPTION . " pd, " . TABLE_SPECIALS . " s where p.products_status = '1' and s.products_id = p.products_id and p.products_id = pd.products_id and pd.language_id = '" . (int)$languages_id . "' and s.status = '1' order by rand()";

  $listing_split = new splitPageResults($specials_query_raw, MAX_DISPLAY_PROMO_PRODUCTS);

  if ($listing_split->number_of_rows > 0) {
    $listing_query = tep_db_query($listing_split->sql_query);
     while ($listing = tep_db_fetch_array($listing_query)) {
    $desc_query = tep_db_query("select products_tech from " . TABLE_PRODUCTS_DESCRIPTION . " where products_id = '" . $listing['products_id']."' and language_id = '" . (int)$languages_id . "'");
    $desc_prod = tep_db_fetch_array($desc_query);
?>     

<div class="listingpromo">

<div class="listingTop"></div>   
  <div class="listingImage">
     <?php echo '<a href="' . tep_href_link(FILENAME_PRODUCT_INFO, (isset($_GET['manufacturers_id']) ? 'manufacturers_id=' . $_GET['manufacturers_id'] . '&amp;' : '') . 'products_id=' . $listing['products_id']) . '">' . tep_image(DIR_WS_IMAGES . $listing['products_image'], $listing['products_name'], SMALL_IMAGE_WIDTH, SMALL_IMAGE_HEIGHT) . '</a>' ; ?>
    </div>
  <div class="listingInfos">
    <p class="listingName"><?php echo '<a href="' . tep_href_link(FILENAME_PRODUCT_INFO, (isset($_GET['manufacturers_id']) ? 'manufacturers_id=' . $_GET['manufacturers_id'] . '&amp;' : '') . 'products_id=' . $listing['products_id']) . '">' . $listing['products_name'] . '</a>' ;?></p>
    <p class="listingPrice">
  <?php
       echo '<span class="promorouge">' . $currencies->display_price($listing['specials_new_products_price'], tep_get_tax_rate($listing['products_tax_class_id'])) . '</span> <span class="promo"> au lieu de </span><span class="promoorange">' .  $currencies->display_price($listing['products_price'], tep_get_tax_rate($listing['products_tax_class_id'])) . '</span>';
 ?>
      </p>
   </div> 
    <div class="listingBottom"></div>
</div>
<?php         
  } 
  } else {
?>   
  <div class="infoText"><?php echo TEXT_NO_PRODUCTS ;?></div>
<?php
  } 
?>
<br class="bottom">

Page basée sur product_listing.php dans modules et adaptée à mes besoins.

Puis, dans includes>filenames.php, rajouter :
Code: Tout sélectionner
 // Ajout module promo
  define('FILENAME_PRODUCT_PROMO', 'module_promo.php');

et pour l'appel du module dans la page (par ex sur page accueil)
includes>content>index.php :
Code: Tout sélectionner
    <?php
   include(DIR_WS_MODULES . FILENAME_PRODUCT_PROMO);
   ?>

Voilà.
Dernière édition par Gwendall le Jeu 20 Nov 2008, 14:59, édité 1 fois.
OSCSS 1.2.1 + QTPro 4.3 + Attributes_sort_order + add-weight-to-product-attributes v0.2 + short description + module Promo
Gwendall
Membre actif
 
Messages: 43
Inscription: Mar 10 Juil 2007, 11:29

Messagepar j4k » Jeu 20 Nov 2008, 15:03

pourquoi tu crée une nouvell entrée dans la table configuration?

tu pourrais utiliser l'entrée déjà présente !
dans admin > configuration > valeurs maximales tu a déjà une variable pour le nombre de promos à afficher.
~ osCSS 1.2.1 ~
Avatar de l’utilisateur
j4k
Site Admin
 
Messages: 1259
Inscription: Mer 27 Avr 2005, 09:13
Localisation: France

Messagepar Gwendall » Jeu 20 Nov 2008, 15:06

Oui, seulement, si l'on veut avoir un bouton en bas du module permettant de voir toutes les promos, on n'affiche pas le mêm nombre d'articles par page.
Pour le module promo : uniquement 3 produits aléatoirement.
Pour la page specials. php : 10 produits par page.
OSCSS 1.2.1 + QTPro 4.3 + Attributes_sort_order + add-weight-to-product-attributes v0.2 + short description + module Promo
Gwendall
Membre actif
 
Messages: 43
Inscription: Mar 10 Juil 2007, 11:29

Messagepar j4k » Jeu 20 Nov 2008, 15:15

ok, c valide comme explications ;)

je pense que je ferais ne inclusion dans le noyau 1.2.2 après tests
~ osCSS 1.2.1 ~
Avatar de l’utilisateur
j4k
Site Admin
 
Messages: 1259
Inscription: Mer 27 Avr 2005, 09:13
Localisation: France

Messagepar j4k » Jeu 20 Nov 2008, 15:19

~ osCSS 1.2.1 ~
Avatar de l’utilisateur
j4k
Site Admin
 
Messages: 1259
Inscription: Mer 27 Avr 2005, 09:13
Localisation: France

Messagepar K-lol » Ven 13 Fév 2009, 15:58

Hello,

Super ta contrib c'est exactement se que je cherchais à faire...
J'ai juste pas compris ce passage :

! Attention ! : Vérifier le n°id pour moi 196 et la position dans le menu 3,5 qui nécessite d'incrémenter de 1 les suivant pour les 3,xx.

C'est l'id de quoi? et la position du menu de quoi?

Merci d'avance pour la réponse
Et bravo encore!

Mon erreur :

Warning: Division by zero in /var/www/vhosts/site.com/httpdocs/catalog/includes/classes/split_page_results.php on line 65
Error


Database reported: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'MAX_DISPLAY_PROMO_PRODUCTS' at line 1 (Errno: 1064)
Dernière édition par K-lol le Ven 13 Fév 2009, 16:32, édité 1 fois.
K-lol
Membre actif
 
Messages: 20
Inscription: Jeu 29 Mar 2007, 11:48

Messagepar chever » Ven 13 Fév 2009, 20:28

K-LOL,

Si tu regardes la structure de la table osc-configuration, tu trouveras tes réponses.

Id est numéro unique si tu trouves dans ta base un ID 196, il faut donc que tu changes cette valeur dans l'instruction citée ci dessus
Idem pour le menu
oscss 1.2/seo/point and rewards/featured et beaucoup de sueur
chever
Membre gold
 
Messages: 529
Inscription: Jeu 26 Juil 2007, 21:06
Localisation: Macon

Messagepar K-lol » Ven 13 Fév 2009, 22:24

Merci beaucoup pour la réponse j'ai trouvé mon erreur...

Ma table s'appelait configuration tout simplement mais pour le menu je sais pas ce que c'est.

Et maintenant j'ai cette erreur :

Database reported: Unknown column 'products_tech' in 'field list' (Errno: 1054)

Merci beaucoup pour ton aide!
K-lol
Membre actif
 
Messages: 20
Inscription: Jeu 29 Mar 2007, 11:48

Messagepar chever » Ven 13 Fév 2009, 22:58

le champ column product est manquant dans la table

Par contre quand je relis le code poste ci dessous je en vois pas ce nom de champ.

Avant d'installer le code de gwendall, as tu bien vérifié que l'id 196 n'existait pas dans la table osc_configuration ?
oscss 1.2/seo/point and rewards/featured et beaucoup de sueur
chever
Membre gold
 
Messages: 529
Inscription: Jeu 26 Juil 2007, 21:06
Localisation: Macon

Messagepar K-lol » Ven 13 Fév 2009, 23:52

Oui j'ai bien contrôlé j'ai mis l'id suivant de se que j'avais déjà...

Justement je cherchais aussi dans cette partie mais rien.

Je regarde encore si jamais tu vois pourquoi tu me fais signes? Merci beaucoup
K-lol
Membre actif
 
Messages: 20
Inscription: Jeu 29 Mar 2007, 11:48

Messagepar chever » Sam 14 Fév 2009, 02:02

Je ne sais pas si la piste est bonne mais dans le code du module, il y a un query qui fait appel à products_tech (select products_tech ....) dans la table products_description

Or Products_tech n'est pas un champ original de products_description, il a donc été rajouté soit par cette contribution ou une autre
oscss 1.2/seo/point and rewards/featured et beaucoup de sueur
chever
Membre gold
 
Messages: 529
Inscription: Jeu 26 Juil 2007, 21:06
Localisation: Macon

Messagepar K-lol » Sam 14 Fév 2009, 02:13

Eh ben je sais pas comment te remercier!

J'aurai pas vu ce "détail"...

J'ai simplement ajouté products_tech dans products_description et ca fonctionne!

Merci encore et j'espère que pour les autres ca les aidera aussi!
++
K-lol
Membre actif
 
Messages: 20
Inscription: Jeu 29 Mar 2007, 11:48

Messagepar chever » Sam 14 Fév 2009, 23:05

De rien

Par contre, il serait bien de savoir à quoi correspond ce champ
oscss 1.2/seo/point and rewards/featured et beaucoup de sueur
chever
Membre gold
 
Messages: 529
Inscription: Jeu 26 Juil 2007, 21:06
Localisation: Macon

Messagepar Gwendall » Lun 16 Fév 2009, 15:58

Désolé de ne pas avoir notifié ce détail.

Ce champ a bien été rajouté et modifié afin d'obtenir des infos techniques sur les produits. Il s'agit de la contrib "Products_Short_Descriptions_V1_04".
J'ai juste remplacé le champ "products_info" par "products_tech"
Dernière édition par Gwendall le Lun 16 Fév 2009, 16:02, édité 1 fois.
OSCSS 1.2.1 + QTPro 4.3 + Attributes_sort_order + add-weight-to-product-attributes v0.2 + short description + module Promo
Gwendall
Membre actif
 
Messages: 43
Inscription: Mar 10 Juil 2007, 11:29

Messagepar K-lol » Lun 16 Fév 2009, 23:54

Merci beaucoup pour l'explication.
En tout cas maintenant ca marche super!
++
K-lol
Membre actif
 
Messages: 20
Inscription: Jeu 29 Mar 2007, 11:48

Messagepar matine44 » Ven 02 Oct 2009, 11:19

Bonjour à tous et tout d'abord merci beaucoup pour cette contrib, c'est exactement ce que je cherchais à un poil prêt!!!
En fait je souhaiterais afficher les produit en ligne et non en colonne et je ne vois pas comment modifier le code pour le faire (suis une vraie bille en php!!!)
Auriez-vous quelques pistes à me donner ?
Merci d'avance
@pluche
LaTruffe :)

Bon ben, j'ai réussi à faire ce que je voulais en modifiant la feuille de style stylesheets.css. Si celà intéresse quelqu'un je vous mets le code
Pour le fichier includesmodulesmodule_promo.php
Code: Tout sélectionner
<div id="listingpromo" align="center">
<h4>NOS PRIX MINI</h4>
  <div class="specialsBox">
     <?php echo '<a href="' . tep_href_link(FILENAME_PRODUCT_INFO, (isset($_GET['manufacturers_id']) ? 'manufacturers_id=' . $_GET['manufacturers_id'] . '&amp;' : '') . 'products_id=' . $listing['products_id']) . '">' . tep_image(DIR_WS_IMAGES . $listing['products_image'], $listing['products_name'], SMALL_IMAGE_WIDTH, SMALL_IMAGE_HEIGHT) . '</a>' ; ?>
    <p class="listingName"><?php echo '<a href="' . tep_href_link(FILENAME_PRODUCT_INFO, (isset($_GET['manufacturers_id']) ? 'manufacturers_id=' . $_GET['manufacturers_id'] . '&amp;' : '') . 'products_id=' . $listing['products_id']) . '">' . $listing['products_name'] . '</a>' ;?></p>
    <p class="listingPrice">
    <?php
       echo '<del>' . $currencies->display_price($listing['specials_new_products_price'], tep_get_tax_rate($listing['products_tax_class_id'])) . '</del> <br/> <span class="productSpecialPrice">' .  $currencies->display_price($listing['products_price'], tep_get_tax_rate($listing['products_tax_class_id'])) . '</span>';
    ?>
      </p>
   </div>

</div>

et pour les styles
Code: Tout sélectionner
#listingpromo {
  width: 172px;
 float: left;
}
#listingpromo h4 {
 width: 172px;
 text-align: center;
 padding-left: 20px;
}
.specialsBox {
  color:#333;
 font-family:Verdana, Geneva, Arial, Helvetica, sans-serif;
  font-size:11px;
 margin:5px 5px 5px 5px;
 width:172px;
  height: auto;
 float: left;
  text-align:center;
  }

Voili, si j'ai pu aider !
@ciao
Dernière édition par matine44 le Ven 02 Oct 2009, 11:58, édité 1 fois.
matine44
Membre inactif
 
Messages: 6
Inscription: Ven 02 Oct 2009, 11:16


Retourner vers Plugin

 


  • Articles en relation
    Réponses
    Vus
    Dernier message

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 3 invités