Jump to content

Comment integrer les produits d'une catégorie dans une page CMS ?


Recommended Posts

Bonjour, vous allez me dire que c'est tordu ... mais est ce possible ?

si ou comment ?

pour être clair : j'ai 2 modules qui crée des promos mais de différentes manières. l'un par des ventes flash, l'autres par des enchères.

dont avec l'un j'ai une liste produits de ventes flash, et de l'autre une liste d'enchères. j'aimerai créer une page promo qui mixe les 2...

 

autre réponse qui pourrait m'aider : comment afficher la liste des produits d'une catégorie dans une page CMS (mais uniquement la liste des produits (sans le header, sans les colonnes de gauche/droite, et sans le footer).que le contenu ...

Edited by legrenier (see edit history)
Link to comment
Share on other sites

Je vois pas comment tu peux afficher une page CMS sans le contenu (header...) puisque le principe de la page CMS est de proposer d'afficher facilement du contenu en gardant l'apparence de la boutique.

Sinon directement depuis le Back office avec l'éditeur de texte des pages CMS c'est impossible car l'éditeur ne peut accepter de code PHP.

Le mieux est de créer une nouvelle page tpl qui appellera les produits de cette catégorie. Pour créer une page sur prestashop 1.4 tu peux voir ici:

http://www.presta-dev.com/content/11-creer-une-page-fixe-dans-prestashop

 

Pour ta première question, oui c'est faisable mais c'est du développement PHP ça va pas se faire en un coup de cuillère à pot et tu ne trouveras pas une réponse toute faite à ce genre de question directement sur le forum...

Link to comment
Share on other sites

Je vois pas comment tu peux afficher une page CMS sans le contenu (header...) puisque le principe de la page CMS est de proposer d'afficher facilement du contenu en gardant l'apparence de la boutique.

Sinon directement depuis le Back office avec l'éditeur de texte des pages CMS c'est impossible car l'éditeur ne peut accepter de code PHP.

Le mieux est de créer une nouvelle page tpl qui appellera les produits de cette catégorie. Pour créer une page sur prestashop 1.4 tu peux voir ici:

http://www.presta-de...dans-prestashop

 

Pour ta première question, oui c'est faisable mais c'est du développement PHP ça va pas se faire en un coup de cuillère à pot et tu ne trouveras pas une réponse toute faite à ce genre de question directement sur le forum...

 

Ce n'est pas tout à fait exact puisqu'il suffit d'ajouter en variable get content_only (a l'url par ex) , pour se dispenser du header , du footer et des éventuelles left / right columns ...

 

Ceci dit afficher des listings produits via une page cms n'est pas du tout la solution et passe par un controller dédié.

Link to comment
Share on other sites

Bonjour, merci broceliande , cela correspond plus a ce que je cherche. en effet si je crée par exemple

include 'http://www.monsite.fr/index.php?id_category=50&controller=category&content_only=1';


dans une page php, j'arrive a afficher 2 pages en 1.

 

mais j'ai maintenant un probleme de mise en page. l'include ci dessus se positionne en tete de page html et j'ai la page "normal" qui s'affiche aprés.

je ne sais pas faire dans la même page : j'affiche les produits lister par un module de vente Flash, puis juste en dessous afficher les produits d'une certaine catégorie.

voici le bout de code qui affiche les ventes flash

echo $dompromo->showVentesFlash();
 $this->setTemplate('flashsales.tpl');

 

juste en dessous dans ce fichier php j'y ai ajouté cette ligne

include 'http://www.monsite.fr/index.php?id_category=50&controller=category&content_only=1';


 

et c'est la que ca coince. ca marche , mais l'include passe avant l'affichage du tpl ... y a t'il une autre méthode ? l'ideal serait que j'ajoute cette ligne dans flashsale.tpl, apparemment include ne fonctionne pas dans un tpl ...

 

j'espere que quelqu'un comprendra mon chinois !

 

j'ai essayé d'inclure dans le fichier tpl :

<?php include "http://www.legrenierdesbonnesaffaires.fr/index.php?id_category=50&controller=category&content_only=1"; ?>

mais la la page ne s'affiche pas ...

Edited by legrenier (see edit history)
Link to comment
Share on other sites

  • 1 month later...

Salut Legrenier,

 

Ta demande m'intéresse car j'aimerai aussi créé des smartpage (petite page avec du texte autour des mots clés qui m'intéressent), avec l'outils CMS, par contre, il faudrait que des produits apparaissent en dessous de mon texte.

 

As-tu trouvé une solution, ou peut être un module.

 

Sinon, si d'autres personnes ont une solution je suis preneur.

 

A+

Link to comment
Share on other sites

J'ai peut être mal compris la demande mais à mon avis, il faut se servir de l'override (pour la 1.4) :

 

Créez overrider/controller/cms.php

 

Dedans, il faudrait faire une détection de l'id_cms en cours, puis faire créer une variable category avec l'id catégorie de votre choix, et ensuite générer les produits.

 

Voici le contenu du fichier cms.php à mettre dans l'override :

 

class CMSController extends CMSControllerCore
{
public function preProcess()
{
 if(isset($_GET['id_cms']) && $_GET['id_cms']==1){
// Si l'id_cms en cours = 1 alors on créer la catégorie N°1 (ou autre)
  $category = new Category(1, self::$cookie->id_lang);
  $cat_products = $category->getProducts((int)(self::$cookie->id_lang), 0, 20); // et ici on créer un variable avec tous les produits
  self::$smarty->assign('cat_products', $cat_products);
 }

 if(isset($_GET['id_cms']) && $_GET['id_cms']==2){
   $category = new Category(2, self::$cookie->id_lang);
  $cat_products = $category->getProducts((int)(self::$cookie->id_lang), 0, 20);
  self::$smarty->assign('cat_products', $cat_products);
 }
 parent::preProcess();
}
}

 

Ensuite dans le cms.tpl , il faut faire 3 simples lignes :

 

{if $cat_products}
{include file="$tpl_dir./product-list.tpl" products=$cat_products}
{/if}

Edited by Christophe Boix (see edit history)
Link to comment
Share on other sites

Bonjour Christophe,

 

Merci pour toutes ces infos, mais je t'avouerai que je ne suis pas aussi technique que toi.

Peut être pourrait tu faire un module moyennant finance ?

 

PS : J'essaierai tout de même de faire des essayage cet aprem. En tout cas merci.

Link to comment
Share on other sites

  • 2 weeks later...

Bonjour,

 

j'ai créé un petit module pour un prestashop 1.4 , qui est fonctionnel ( voir exemple ici : http://too-web.fr/pr...ms.php?id_cms=1 ),

 

par contre il faut le modifier à la main, car comme dis précédemment, je n'ai pas assez de temps pour faire un module administrable + facilement.

 

Voici comment il fonctionne :

 

Pour que ce module fonctionne, il faut modifier via FTP et avec un éditeur de texte,

le fichier se trouve dans /modules/boixcmsproducts/boixcmsproducts.php

 

 

Une fois dans le fichier, il faudra rechercher la fonction hookTop,

et créer des conditions sur ce modèle :

 

// Code à modifier dans le fichier php du module

if($id_cms==1){
// Si on est sur la page CMS n° 1, on veut afficher la catégory n° 1 :
$id_category=1;
}elseif($id_cms==2){
// Sinon, si on est sur la page CMS n° X, alors on veut afficher la	 catégory n° Y
$id_category=4;
}elseif($id_cms==3){
// Sinon, si on est sur la page CMS n° X, alors on veut afficher la catégory n° Y
$id_category=6;
}
// etc..

 

Ensuite, via FTP et éditeur de texte, il faut aller dans le thème et rajouter ces lignes à la fin du fichier CMS.tpl , ou au début de footer.tpl :

 

// Code à placer à la fin du fichier cms.tpl de votre theme, ou au début du fichier footer.tpl de votre theme

{if $cat_products}
 include file="$tpl_dir./product-list.tpl" products=$cat_products}
{/if}

boixcmsproducts.zip

Edited by Christophe Boix (see edit history)
  • Like 1
Link to comment
Share on other sites

Bonjour Christophe,

 

Merci pour ce module, par contre, je suis désolé, mais je n'arrive pas à le faire marcher.

 

1/ J'installe le module via la plateforme en chargeant le zip, par contre, je n'arrive pas à l'installer car je ne le retrouve pas (certainement normal puisque le module n'a pas été fait pour).

 

2/ Je me rend sur le FTP et je modifie mes 2 fichiers.

 

3/ Rien ne se passe, je n'ai aucun produit qui s'affiche en dessous.

 

Que faire ? J'ai essayer avec les url rewrité et non rewrité, j'ai essayé d'intégrer le code directement dans le fichier cms.php ...

 

Merci de m'aide.

 

Et encore bravo pour se module !

 

 

Il y a une erreur de frappe sur le code il manque une accolade

 

// Code à placer à la fin du fichier cms.tpl de votre theme, ou au début du fichier footer.tpl de votre theme

 

{if $cat_products}

{include file="$tpl_dir./product-list.tpl" products=$cat_products}

{/if}

Edited by Spycasso (see edit history)
  • Like 1
Link to comment
Share on other sites

Bonjour, quelle est votre version de prestashop svp ? le module a été codé pour la 1.4 , je ne l'ai pas testé pour la 1.5 mais je doute que celui-ci fonctionne.

 

Le module se trouve dans "Autres modules", il faut l'installer et aussi faire les modifs dans le fichier php et tpl

 

(il ne faut pas toucher au "cms.php", et l'url rewrite n'a pas d'impact)

 

Merci, en espérant que ça fonctionne pour vous aussi!

Link to comment
Share on other sites

Allez dans le FTP et renommez le répertoire "boixcmsproducts" en "boixcmsproducts_save" (afin de garder vos modification au cas où).

 

Décompressez ensuite le fichier que j'ai joinds, dans le répertoire /modules/ à la place de l'ancien.

 

Je supprimer l'ancien ZIP, celui-ci remplace l'ancien.

 

(L'archive n'était pas conçue pour un téléchargement depuis le backoffice prestashop, car le module se trouvait dans un sous dossier)

boixcmsproducts.zip

Link to comment
Share on other sites

  • 2 weeks later...
  • 3 weeks later...
  • 1 month later...

de rien,

 

un module pour 1.4 est codé un peu différement qu'un module 1.5, du coup il y a de très fortes chances que ça ne fonctionne pas sous 1.5

Bonjour à tous,

 

Du nouveau pour une version compatible 1.5 ?

Link to comment
Share on other sites

Hello tout le monde,

 

Pour moi sur une version en local de prestashop 1.5.4 l'installation fonctionne voir image en PJ

 

Je fais une installation sur serveur distant cette après midi. Je viendrais faire un feedback. :)

 

Merci beaucoup à Christophe Boix

  • Like 1
Link to comment
Share on other sites

  • 2 months later...

Hello tous,

 

Pour mes besoins j'ai transformé le module en un patch pour pouvoir attribuer une catégorie de produits à afficher directement sur la page admincms.

 

Ce patch fonction sous 1.4.7

Si cela vous intéresse, je peux indiquer les modifications ici (3 modifications de fichier et un ajout dans la DB)

 

Ckarone

Link to comment
Share on other sites

  • 1 month later...

Le solution de Christophe fonctionne parfaitement sur une version 1.5.2

 

Je souhaiterai la modifier un peu pour afficher les produit d'une marque (plutôt que par la catégorie).

if($id_category!=""){
				$category = new Category($id_category, $cookie->id_lang);
				if($cat_products = $category->getProducts((int)($cookie->id_lang), 0, $maxproduct)) 
					$smarty->assign('cat_products', $cat_products); 
			}

ça se passe par la j'imagine, mais en bidouillant j'ai juste réussi à afficher toutes les marques au lieu de tous les produit d'un marque.

 

Est-ce que quelqu'un peu m'aider ?

Edited by sangria777 (see edit history)
Link to comment
Share on other sites

  • 2 months later...

Bonjour, j'up ce topic car j'aurais une demande similaire,

J'aimerais que sur une page CMS, un produit choisit via sont ID soit affiché de la même manière que sur la page product-list.tpl avec titre, image, description courte, etc..

Comment réaliser ce tour de passe-passe s’il vous plait ?

 

Link to comment
Share on other sites

  • 1 month later...

Bonjour

 

voici ma réponse surtout pour Sangria777 et Florian :

 

Pour la 1.5, voici une manip à greffer dans le module (au lieu des produits d'une catégories), qui permet de générer les produits d'un fournisseur (supplier) ou d'une marque (manufacturer) :

// FOURNISSEURS
$id_supplier=1;

$this->supplier = new Supplier($id_supplier, $this->context->language->id);
$this->context->smarty->assign('products',$this->supplier->getProducts($this->supplier->id, $this->context->cookie->id_lang, (int)$this->p, (int)$this->n, $this->orderBy, $this->orderWay));

// MARQUE
$id_manufacturer=1;

$this->manufacturer = new manufacturer($id_manufacturer, $this->context->language->id);
$this->context->smarty->assign('products',$this->manufacturer->getProducts($this->manufacturer->id, $this->context->cookie->id_lang, (int)$this->p, (int)$this->n, $this->orderBy, $this->orderWay));
Edited by Christophe Boix (see edit history)
Link to comment
Share on other sites

Bonjour Denys,

 

si tu crée une catégorie avec un seul produit, la solution avec ce module devrait fonctionner

 

je t'invite à relire les différentes réponses pour savoir comment modifier le tpl du theme et le php du module. Attention, sans connaissance en php et html, ça risque d'être compliqué.

Link to comment
Share on other sites

  • 1 month later...
  • 4 months later...
  • 1 year later...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...