Jump to content

1.4.2.5 : module promotion - page d'accueil "home"


Recommended Posts

Bonjour,

Quelqu'un connaît-il un module (gratuit ou pas trop cher) qui permettrait de mettre en page d'accueil la promotion d'un article ?

J'ai la version 1.3.1 actuellement, mais je souhaiterai passer en 1.4.2.5 bientôt , donc si possible un module compatible avec les 2 versions, sinon seulement avec la 1.4.2.5.

J'en ai testé plusieurs, mais la plupart ne peuvent pas être placé en "home" mais seulement sur les colonnes de droites et gauche.
De plus j'ai testé le module de prestashop "bloc promotions", mais l'affichage en "home" est complètement différent de celui dans les colonnes, et c'est très moche et illisible.

Merci d'avance

Link to comment
Share on other sites

  • 2 weeks later...

Merci Maury Girard,

Pourquoi il faudrait redimensionner les images alors que sur tout le reste du site il n'y a pas de problème ? Même sur le bloc réductions (cf fichier joint)

Dans le css il faudrait modifier quoi ?

47515_sy6tkZ5g4whnAyKnKXyz_t

Link to comment
Share on other sites

Bonjour TeddyNko,

Merci pour le module, il est bien compatible avec PS 1.4.2.5 mais apparemment pas avec mon thème.

CI-joint ce que ça me donne =/


Bonjour,

J'ai téléchargé ce module à partir de PRESTACREA qui le donne gratuitement, je te l'ai donc envoyé gratuitement.
S'il a fait gratuit c'est qu'on pouvait se le refiler.

Voilà le lien : http://www.prestacrea.com/modules-prestashop/40-module-prestashop-homespecials.html

Demande-lui pourquoi cela ne va pas avec ton thème.

Teddy
Link to comment
Share on other sites

TeddyNko & Lloraklo
En allant sur le fiche du produit voici ce qui est noté
Compatibilité Prestashop : Prestashop v1.2, v1.3 et v1.4

Lloraklo
IL suffit donc de contacter l'auteur du module depuis son site Ici
afin que cette personne puisse vous indiquez la solution rapidement

Cordialement

Link to comment
Share on other sites

  • 8 months later...

Bonjour a vous,

 

Il est tout simplement possible de greffer celui de base sur la page d'accueil avec :

 

public function hookHome($params)
   {
       return $this->hookRightColumn($params);
   }

 

dans le fichier blockspecials.php dans le dossier du module :) Ensuite de surcharger le css et le TPL pour le personnaliser

 

Cordialement

Link to comment
Share on other sites

  • 2 months later...
  • 1 year later...

Bonjour, j'ai correctement installé le module homespecials qui affiche correctement les derniers produits mis en promotion. Ce module permet d'afficher X produit avec affichage aléatoire.

J'aimerais apporté une modification et j'espère que vous pourrez m'aider.

J'aimerais que les X produits affichés soit sélectionné aléatoirement sur l'ensemble des promotion sur ma boutique et non pas seulement sur les produits actuellement affichés, comme le fait correctement le module Bloc promotionsblockspecials.

Voici le code du fichier php du module homespecials :

<?php

/* Module: HomeSpecials
 * Copyright@2010 All rights reserved
 * 
 * Author: Prestacrea
 * Website: http://www.prestacrea.com
 * Email: [email protected] */

class HomeSpecials extends Module
{
	private $_html = '';
	private $_postErrors = array();

	function __construct()
	{
	$this->name = 'homespecials';
	$this->tab = 'PRESTACREA - Modules';
	$this->version = '1.2';
	$this->author = 'PRESTACREA';
	parent::__construct();
		
	$this->displayName = ('PRESTACREA - Home Specials');
	$this->description = $this->l('Display Special Products in the middle of your homepage');
	}

	function install()
	{
	if (!parent::install() 
	OR !$this->registerHook('home')
	OR !Configuration::updateValue('HOME_SPECIALS_NBR', 4) 
	OR !Configuration::updateValue('HOME_SPECIALS_RANDOM', 1))
	return false;
	return true;
	}

	function uninstall()
	{
	if (!parent::uninstall()
	OR !Configuration::deleteByName('HOME_SPECIALS_NBR')
	OR !Configuration::deleteByName('HOME_SPECIALS_RANDOM'))
	return false;
	return true;
	}

	public function getContent()
	{
	$output = '<h2>'.$this->displayName.'</h2>';
	if (Tools::isSubmit('submitHomeSpecials'))
	{
	$nbr = intval(Tools::getValue('nbr'));
	$ran = intval(Tools::getValue('random'));
	if (!$nbr OR $nbr <= 0 OR !Validate::isInt($nbr))
	$errors[] = $this->l('Invalid number of product');
	else
	{
	Configuration::updateValue('HOME_SPECIALS_NBR', $nbr);
	Configuration::updateValue('HOME_SPECIALS_RANDOM', $ran);
	}
	if (isset($errors) AND sizeof($errors))
	$output .= $this->displayError(implode('<br />', $errors));
	else
	$output .= $this->displayConfirmation($this->l('Settings updated'));
	}
	return $output.$this->displayForm();
	}

	public function displayForm()
	{
	$output = '
	<form action="'.$_SERVER['REQUEST_URI'].'" method="post">
	<fieldset><legend style="line-height:20px"><img src="'.$this->_path.'logo.gif"/>'.$this->l('SETTINGS').'</legend>
	<label style="padding:0">'.$this->l('Products displayed').'</label>
	<div class="margin-form">
	<input type="text" size="5" name="nbr" value="'.Tools::getValue('nbr', Configuration::get('HOME_SPECIALS_NBR')).'" />	
	</div>
	<label style="padding:0">'.$this->l('Randomize products').'</label>
	<div class="margin-form">
	<select name="random" id="random" style="width:60px;">
	<option value="1" '.(Configuration::get('HOME_SPECIALS_RANDOM') == 1 ? 'selected' : '').'>'.$this->l('Yes').'</option>
	<option value="0" '.(Configuration::get('HOME_SPECIALS_RANDOM') == 0 ? 'selected' : '').'>'.$this->l('No').'</option>
	</select>
	</div>
	<div class="margin-form"><input type="submit" name="submitHomeSpecials" value="'.$this->l('Update').'" class="button" style="width:150px"/></div>
	</fieldset>
	</form>';
	return $output;
	}

	function hookHome($params)
	{
	global $smarty, $cookie;

      $category = new Category(1);
      $nb = intval(Configuration::get('HOME_SPECIALS_NBR'));
	$rand = intval(Configuration::get('HOME_SPECIALS_RANDOM'));
	if ($rand == 1) {
      $products = Product::getPricesDrop(intval($cookie->id_lang), 0, $nb); 
	if ( $products )
	{
	shuffle($products);
	array_splice($products, ($nb ? $nb : 10));
	}
	}
	else 
	{
      $products = Product::getPricesDrop(intval($cookie->id_lang), NULL - 0, (intval($nb ? $nb : 4)), false, NULL, NULL);
	}				
	$smarty->assign(array(
	'allow_buy_when_out_of_stock' => Configuration::get('PS_ORDER_OUT_OF_STOCK', false),
	'max_quantity_to_allow_display' => Configuration::get('PS_LAST_QTIES'),
	'category' => $category,
	'products' => $products,
	'currency' => new Currency(intval($params['cart']->id_currency)),
	'lang' => Language::getIsoById(intval($params['cookie']->id_lang)),
	'productNumber' => sizeof($products),
	'homeSize' => Image::getSize('home'),
	'ps_version' => _PS_VERSION_));
	return $this->display(__FILE__, 'homespecials.tpl');
	}
}
?>

et ici la fin du code du module Bloc promotionsblockspecials qui gère apparemment la récupération aléatoire des produits en promotion de toute la boutique :

	public function hookRightColumn($params)
	{
		if (Configuration::get('PS_CATALOG_MODE'))
			return;
		
		// We need to create multiple caches because the products are sorted randomly
		$random = date('Ymd').'|'.round(rand(1, max(Configuration::get('BLOCKSPECIALS_NB_CACHES'), 1)));

		if (!Configuration::get('BLOCKSPECIALS_NB_CACHES') || !$this->isCached('blockspecials.tpl', $this->getCacheId('blockspecials|'.$random)))
		{
			if (!($special = Product::getRandomSpecial((int)$params['cookie']->id_lang)) && !Configuration::get('PS_BLOCK_SPECIALS_DISPLAY'))
				return;

			$this->smarty->assign(array(
				'special' => $special,
				'priceWithoutReduction_tax_excl' => Tools::ps_round($special['price_without_reduction'], 2),
				'mediumSize' => Image::getSize(ImageType::getFormatedName('medium')),
			));
		}

		return $this->display(__FILE__, 'blockspecials.tpl', (Configuration::get('BLOCKSPECIALS_NB_CACHES') ? $this->getCacheId('blockspecials|'.$random) : null));
	}

	public function hookLeftColumn($params)
	{
		return $this->hookRightColumn($params);
	}

	public function hookHeader($params)
	{
		if (Configuration::get('PS_CATALOG_MODE'))
			return ;
		$this->context->controller->addCSS(($this->_path).'blockspecials.css', 'all');
	}

	public function hookAddProduct($params)
	{
		$this->_clearCache('blockspecials.tpl');
	}

	public function hookUpdateProduct($params)
	{
		$this->_clearCache('blockspecials.tpl');
	}

	public function hookDeleteProduct($params)
	{
		$this->_clearCache('blockspecials.tpl');
	}
}

Je n'arrive pas à combiner le deuxième code dans le premier pour réaliser ma modification.
J'espère que quelqu'un pourra m'aider, je lui en serait éternellement reconnaissant, merci d'avance pour toutes aide

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

Bonjour à tous,

je rebondie sur ce sujet, ancien, donc je déterre ;)

 

Je viens d'installe rce module, que j'ai adapté à l'hestétique de mon site.

Il est super ! Je remercie au passage l'équipe de Prestacréa, à qui j'avais acheté auparavent d'autres modules.

 

Mais je rencontre un problème, et peut-être que la communauté pourrai m'aider.

A vrai dire, si Prestacrea passe par là ;)

 

L'affichage aléatoir des produits ne ce fait pas.

Ca tourne en boucle autour des produits d'un même fabricant...voir les 5 mêmes produits...

C'est pas très cool, et je n'arrive pas a identifier la fonction à modifier pour créer une réelle fonction aléatoire...

 

Merci de votre aide ;)

Link to comment
Share on other sites

Pardon, oui, mais moi il affiche toujours les mêmes, mais ce ne sont pas les derniers...

De plus je n'avais pas vu que ton post était aussi récent, j'ai pas eu mon café ^_^

Tu as trouvé une solution ?

 

Si non, je pense contacter le développeur, si tu ne l'a pas fait

Link to comment
Share on other sites

Non je n'ai pas trouvé de solution, j'ai contacté le développeur hier soir à propos de mon problème, tu devrais faire de même de ton côté si le soucis est légèrement différent...

N'hésite pas à poster un message si tu à une solution, je ferrais de même.

Link to comment
Share on other sites

Ci, voici leur réponse :

Bonjour,

 

Désolée mais je ne propose pas la réalisation de développements spécifiques sur mesure.

 

Vous pouvez en revanche vous rapprocher de l'un des partenaires Prestacrea : http://www.prestacrea.com/content/3-partenaires-prestacrea

L'un d'eux sera peut-être en mesure de vous proposer ses services.

 

Cordialement

J'ai pour le moment abandonné ma recherche d'une solution à notre problème en communs, n'ayant pas envies d'investir de l'argent dans un module à la base "gratuit".

Link to comment
Share on other sites

La fonction qui appelle le choix des produits est ici :

function hookHome($params)
	{
	global $smarty, $cookie;

      $category = new Category(1);
      $nb = intval(Configuration::get('HOME_SPECIALS_NBR'));
	$rand = intval(Configuration::get('HOME_SPECIALS_RANDOM'));
	if ($rand == 1) {
      $products = Product::getPricesDrop(intval($cookie->id_lang), 0, $nb); 
	if ( $products )
	{
	shuffle($products);
	array_splice($products, ($nb ? $nb : 10));
	}
	}
	else 
	{
      $products = Product::getPricesDrop(intval($cookie->id_lang), NULL - 0, (intval($nb ? $nb : 4)), false, NULL, NULL);
	}				
	$smarty->assign(array(
	'allow_buy_when_out_of_stock' => Configuration::get('PS_ORDER_OUT_OF_STOCK', false),
	'max_quantity_to_allow_display' => Configuration::get('PS_LAST_QTIES'),
	'category' => $category,
	'products' => $products,
	'currency' => new Currency(intval($params['cart']->id_currency)),
	'lang' => Language::getIsoById(intval($params['cookie']->id_lang)),
	'productNumber' => sizeof($products),
	'homeSize' => Image::getSize('home'),
	'ps_version' => _PS_VERSION_));
	return $this->display(__FILE__, 'homespecials.tpl');
	}
}
?>

Je vais essayer de modifier ça, pour avoir un choix plus large dans l'affichage....

Je ne garantie pas d'y arriver.

Si un connaisseur passe par là...

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

Guest
This topic is now closed to further replies.
×
×
  • Create New...