Jump to content

Nouveaux produits en page d'accueil.


Recommended Posts

Bonjour,

 

voilà, très simple surement, le titre est parlant.

 

Je souhaiterais que les nouveaux produits s'affichent directement lorsqu'on arrive sur le site en page d'accueil, un peu comme les produits phares ou bien lorsqu'on est dans la rubrique "tous nos nouveaux produits".

 

 

C'est surement très simple, mais n'ai rien vu concernant ceci.

 

Merci pour vos futures réponses.

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

Oui c'est exact.

Mais je souhaiterais avoir plus qu'un simple bloc, pour bien faire, il faudrait que ce soit un affichage comme si on était dans une catégorie

 

Ou bien, le même affichage que "produits phares", mais avec les produits nouveaux.

Link to comment
Share on other sites

  • 2 weeks later...
  • 2 weeks later...
  • 3 months later...

Dans votre module homefeatured (sauvegardez vos fichiers sources avant), 1.5:

dans le php à public function hookDisplayHome($params)

ajouter

 

$newProducts = Product::getNewProducts((int)($params['cookie']->id_lang), 0, ($nb ? $nb : 6));

 

et dans le assign smarty:

'new_products' => $newProducts,

 

ensuite dans le tpl:

à la place de {l s='Featured products' mod='homefeatured'}

{l s='News product' mod='homefeatured'}

à la place de {if isset($products) AND $products}

{if $new_products AND $new_products}

à la place de {assign var='nbLi' value=$products|@count}

{assign var='nbLi' value=$new_products|@count}

à la place de {foreach from=$products item=product name=homeFeaturedProducts}

{foreach from=$new_products item=product name=homeFeaturedProducts}

 

Ca devrait le faire

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

Bonjour, excellent comme solution merci merci ça m'a vraiment dépanné...

 

Par contre j'ai essayé de faire la même chose pour les promo ou les exclu web mais ca ne marche pas

Il y a une solution ?

 

Si il y a une solution, mon idée était d'afficher

Avec l'aide de plusieurs homefeatured

 

1- Coup de coeur (mais la il faudrait que je puisse les sélectionner par moi même je ne connais par de module qui fait ça !)

2- Nouveautés (Ça c'est réglé grâce à votre solution)

3- Offres spéciales (Ca j'ai tenté avec votre solution ça ne fonctionne pas !) en prenant 'special' => $special, j'ai aussi tenté 'productsViewedObj' => $productsViewedObj, sans succès !

4- Vous aimerez aussi

Si je pouvais avoir c'est 4 possibilité ça serai nickel pour moi ;-)

 

Merci pour vos piste sur ce sujet

Link to comment
Share on other sites

Allez, pour les promos:

php

$pricesDrop = Product::getPricesDrop((int)($params['cookie']->id_lang), 0, ($nb ? $nb : 6));

'prices_drop' => $pricesDrop,
'priceWithoutReduction_tax_excl'=>Tools::ps_round($pricesDrop['price_without_reduction'], 2),

tpl:

comme pour les nouveautés:

$prices_drop

Link to comment
Share on other sites

  • 1 month later...

Bonjour,

 

J'ai fait les changements mais rien n'a changé sur mon site voici mon fichier modifié, pouvez-vous me dire ou est mon erreur:

 

Dans le php:

 

<?php

/*

* 2007-2013 PrestaShop

*

* NOTICE OF LICENSE

*

* This source file is subject to the Academic Free License (AFL 3.0)

* that is bundled with this package in the file LICENSE.txt.

* It is also available through the world-wide-web at this URL:

* http://opensource.org/licenses/afl-3.0.php

* If you did not receive a copy of the license and are unable to

* obtain it through the world-wide-web, please send an email

* to [email protected] so we can send you a copy immediately.

*

* DISCLAIMER

*

* Do not edit or add to this file if you wish to upgrade PrestaShop to newer

* versions in the future. If you wish to customize PrestaShop for your

* needs please refer to http://www.prestashop.com for more information.

*

* @author PrestaShop SA <[email protected]>

* @copyright 2007-2013 PrestaShop SA

* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)

* International Registered Trademark & Property of PrestaShop SA

*/

 

if (!defined('_PS_VERSION_'))

exit;

 

class HomeFeatured extends Module

{

private $_html = '';

private $_postErrors = array();

 

function __construct()

{

$this->name = 'homefeatured';

$this->tab = 'front_office_features';

$this->version = '0.9';

$this->author = 'PrestaShop';

$this->need_instance = 0;

 

parent::__construct();

 

$this->displayName = $this->l('Featured products on the homepage.');

$this->description = $this->l('Displays featured products in the middle of your homepage.');

}

 

function install()

{

if (!Configuration::updateValue('HOME_FEATURED_NBR', 8) || !parent::install() || !$this->registerHook('displayHome') || !$this->registerHook('header'))

return false;

return true;

}

 

public function getContent()

{

$output = '<h2>'.$this->displayName.'</h2>';

if (Tools::isSubmit('submitHomeFeatured'))

{

$nbr = (int)(Tools::getValue('nbr'));

if (!$nbr OR $nbr <= 0 OR !Validate::isInt($nbr))

$errors[] = $this->l('An invalid number of products has been specified.');

else

Configuration::updateValue('HOME_FEATURED_NBR', (int)($nbr));

if (isset($errors) AND sizeof($errors))

$output .= $this->displayError(implode('<br />', $errors));

else

$output .= $this->displayConfirmation($this->l('Your settings have been updated.'));

}

return $output.$this->displayForm();

}

 

public function displayForm()

{

$output = '

<form action="'.Tools::safeOutput($_SERVER['REQUEST_URI']).'" method="post">

<fieldset><legend><img src="'.$this->_path.'logo.gif" alt="" title="" />'.$this->l('Settings').'</legend>

<p>'.$this->l('To add products to your homepage, simply add them to the "home" category.').'</p><br />

<label>'.$this->l('Define the number of products to be displayed.').'</label>

<div class="margin-form">

<input type="text" size="5" name="nbr" value="'.Tools::safeOutput(Tools::getValue('nbr', (int)(Configuration::get('HOME_FEATURED_NBR')))).'" />

<p class="clear">'.$this->l('Define the number of products that you would like to display on homepage (default: 10).').'</p>

 

</div>

<center><input type="submit" name="submitHomeFeatured" value="'.$this->l('Save').'" class="button" /></center>

</fieldset>

</form>';

return $output;

}

 

public function hookDisplayHeader($params)

{

$this->hookHeader($params);

}

 

public function hookHeader($params)

{

$this->context->controller->addCSS(($this->_path).'homefeatured.css', 'all');

}

 

public function hookDisplayHome($params)

{

$newProducts = Product::getNewProducts((int)($params['cookie']->id_lang), 0, ($nb ? $nb : 6));

$category = new Category(Context::getContext()->shop->getCategory(), (int)Context::getContext()->language->id);

$nb = (int)(Configuration::get('HOME_FEATURED_NBR'));

$products = $category->getProducts((int)Context::getContext()->language->id, 1, ($nb ? $nb : 10));

 

$this->smarty->assign(array(

'new_products' => $newProducts,

'products' => $products,

'add_prod_display' => Configuration::get('PS_ATTRIBUTE_CATEGORY_DISPLAY'),

'homeSize' => Image::getSize(ImageType::getFormatedName('home')),

));

 

return $this->display(__FILE__, 'homefeatured.tpl');

}

}

 

 

 

 

Et dans le tpl:

 

{*

* 2007-2013 PrestaShop

*

* NOTICE OF LICENSE

*

* This source file is subject to the Academic Free License (AFL 3.0)

* that is bundled with this package in the file LICENSE.txt.

* It is also available through the world-wide-web at this URL:

* http://opensource.org/licenses/afl-3.0.php

* If you did not receive a copy of the license and are unable to

* obtain it through the world-wide-web, please send an email

* to [email protected] so we can send you a copy immediately.

*

* DISCLAIMER

*

* Do not edit or add to this file if you wish to upgrade PrestaShop to newer

* versions in the future. If you wish to customize PrestaShop for your

* needs please refer to http://www.prestashop.com for more information.

*

* @author PrestaShop SA <[email protected]>

* @copyright 2007-2013 PrestaShop SA

* @license http://opensource.org/licenses/afl-3.0.php Academic Free License (AFL 3.0)

* International Registered Trademark & Property of PrestaShop SA

*}

 

<!-- MODULE Home Featured Products -->

<div id="featured-products_block_center" class="block products_block clearfix">

<h4 class="title_block">{l s='News product' mod='homefeatured'}</h4>

{if $new_products AND $new_products}

<div class="block_content">

{assign var='liHeight' value=250}

{assign var='nbItemsPerLine' value=4}

{assign var='nbLi' value=$new_products|@count}

{math equation="nbLi/nbItemsPerLine" nbLi=$nbLi nbItemsPerLine=$nbItemsPerLine assign=nbLines}

{math equation="nbLines*liHeight" nbLines=$nbLines|ceil liHeight=$liHeight assign=ulHeight}

<ul style="height:{$ulHeight}px;">

{foreach from=$new_products item=product name=homeFeaturedProducts}

{math equation="(total%perLine)" total=$smarty.foreach.homeFeaturedProducts.total perLine=$nbItemsPerLine assign=totModulo}

{if $totModulo == 0}{assign var='totModulo' value=$nbItemsPerLine}{/if}

<li class="ajax_block_product {if $smarty.foreach.homeFeaturedProducts.first}first_item{elseif $smarty.foreach.homeFeaturedProducts.last}last_item{else}item{/if} {if $smarty.foreach.homeFeaturedProducts.iteration%$nbItemsPerLine == 0}last_item_of_line{elseif $smarty.foreach.homeFeaturedProducts.iteration%$nbItemsPerLine == 1} {/if} {if $smarty.foreach.homeFeaturedProducts.iteration > ($smarty.foreach.homeFeaturedProducts.total - $totModulo)}last_line{/if}">

<a href="{$product.link}" title="{$product.name|escape:html:'UTF-8'}" class="product_image"><img src="{$link->getImageLink($product.link_rewrite, $product.id_image, 'home_default')}" height="{$homeSize.height}" width="{$homeSize.width}" alt="{$product.name|escape:html:'UTF-8'}" />{if isset($product.new) && $product.new == 1}<span class="new">{l s='New' mod='homefeatured'}</span>{/if}</a>

<h5 class="s_title_block"><a href="{$product.link}" title="{$product.name|truncate:50:'...'|escape:'htmlall':'UTF-8'}">{$product.name|truncate:35:'...'|escape:'htmlall':'UTF-8'}</a></h5>

<div class="product_desc"><a href="{$product.link}" title="{l s='More' mod='homefeatured'}">{$product.description_short|strip_tags|truncate:65:'...'}</a></div>

<div>

<a class="lnk_more" href="{$product.link}" title="{l s='View' mod='homefeatured'}">{l s='View' mod='homefeatured'}</a>

{if $product.show_price AND !isset($restricted_country_mode) AND !$PS_CATALOG_MODE}<p class="price_container"><span class="price">{if !$priceDisplay}{convertPrice price=$product.price}{else}{convertPrice price=$product.price_tax_exc}{/if}</span></p>{else}<div style="height:21px;"></div>{/if}

 

{if ($product.id_product_attribute == 0 OR (isset($add_prod_display) AND ($add_prod_display == 1))) AND $product.available_for_order AND !isset($restricted_country_mode) AND $product.minimal_quantity == 1 AND $product.customizable != 2 AND !$PS_CATALOG_MODE}

{if ($product.quantity > 0 OR $product.allow_oosp)}

<a class="exclusive ajax_add_to_cart_button" rel="ajax_id_product_{$product.id_product}" href="{$link->getPageLink('cart')}?qty=1&id_product={$product.id_product}&token={$static_token}&add" title="{l s='Add to cart' mod='homefeatured'}">{l s='Add to cart' mod='homefeatured'}</a>

{else}

<span class="exclusive">{l s='Add to cart' mod='homefeatured'}</span>

{/if}

{else}

<div style="height:23px;"></div>

{/if}

</div>

</li>

{/foreach}

</ul>

</div>

{else}

<p>{l s='No featured products' mod='homefeatured'}</p>

{/if}

</div>

<!-- /MODULE Home Featured Products -->

 

 

 

Merci

Link to comment
Share on other sites

Bonjour,

 

Je remonte le post pour avoir une réponse ;-)

Vous avez bien fait c'était passé à la trappe.

Dans un 1er temps vérifiez si au lieu de Produits phares, vous avez New product ou Nouveaux produits qui s'affiche en Front Office.

Si vous avez encore produits phares, c'est que :

soit vous n'avez pas forcé la compilation

soit vous n'avez pas modifié le bon tpl, ou pas transféré dans le bon dossier

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

  • 1 month later...

bonjour,

 

j'ai fait exactement ce qui est noté plus haut par contre le bloc n'est pas centré sur la page il est décalé a gauche, j'ai réussi a le bouger un peut dans :

layout.css

ligne 30

 

.homeBlock { padding:60px; clear:both; display:block}

 

j'ai mis le padding a 0 mais c'est pas encore au milieu!!

Quelqu'un a une idée?

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

  • 2 weeks later...

Bonjour,

Déjà merci à Muche pour sa solution, maintenant je voudrais savoir si on pouvez rendre l'affichage de ces produits aléatoire?

je l'ai déjà fait avec une catégorie ou les produits s'affiche aléatoirement à chaque actualisation de la page avec bout de code dans

le homefeatured.php :

public function hookDisplayHome($params)
   {
    $category = new Category(6, (int)Context::getContext()->language->id);
    $nb = (int)(Configuration::get('HOME_FEATURED_NBR'));
    $products = $category->getProducts((int)Context::getContext()->language->id, 1, ($nb ? $nb : 50),NULL,NULL,false,true,true,($nb ? $nb : 10));
		  shuffle($products);
    $this->smarty->assign(array(
	    'products' => $products,
	    'add_prod_display' => Configuration::get('PS_ATTRIBUTE_CATEGORY_DISPLAY'),
	    'homeSize' => Image::getSize(ImageType::getFormatedName('home')),
    ));
    return $this->display(__FILE__, 'homefeatured.tpl');
   }

Mais comment faire pour reproduire la même chose avec les nouveaux produits?

 

Merci d'avance.

Link to comment
Share on other sites

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...