Jump to content

Provenance régional d'un produit


Recommended Posts

Bonjour,

 

pour le shop d'un de mes clients, celui-ci me demande de pouvoir avoir une page contenant toutes les régions de ses produits. Dans le même style que la page fabricant, mais avec les régions. Chaque région doit ensuite renvoyer aux produit de celle-ci.

Comme je suis relativement nouveau avec Prestashop, je me demandais quelle serai la meilleur façon de faire cela.

 

Merci d'avance !

Eric

Link to comment
Share on other sites

Il y a plusieurs solutions, mais si la page fabricant n'est pas utilisée il suffit de la contourner^^

 

Créez autant de "fabricants" que de régions

Pour chaque produit rentrez la région et modifiez les traductions du front-office :)

Link to comment
Share on other sites

J'utilise déjà la page fabricant que j'ai du détourner pour en faire une page artiste.

J'ai aussi pensé à utiliser les tags, mais si par la suite, mon client souhaite ajouter une description à chaque région c'est pas forcément l'idéal. De plus, utiliser les tags m'empêche d'avoir une page type comme la page fabricant, si je ne me trompe pas.

Link to comment
Share on other sites

Une page tag est une page search en fait.

Si tu dois te faire une controleur alors autant le faire sur une caractéristique - le BO est déjà là et il te suffit de filtrer par caractéristique.

 

D'ailleurs (je ne conseille pas cette approche), la navigation a facette peut être utilisable directement sur cette caractéristique. Finalement, dans ce cas tu n'aurais rien à développer

Link to comment
Share on other sites

  • 5 weeks later...

Après quelques réflexions, je reviens avec mon problème, j'ai décidé de faire une page dédié à cela, mais malheureusement, j'ai un petit problème au niveau de ma requête. voici mes 3 pages nouvellement créés. Si vous avez une idée, c'est vraiment sympa, c'est vrai que c'est un peu nouveau pour moi tout ceci.

 

RegionController.php :

class RegionController extends FrontController
{
    public $php_self = 'region';
    protected $region;
    
    
    
    public function initContent()
    {
        parent::initContent();
        $this->assignAll();
        $this->setTemplate(_PS_THEME_DIR_.'region.tpl');
    }

    
     protected function assignAll()
    {
        if (Configuration::get('PS_DISPLAY_SUPPLIERS')) {
            $data = Region::getRegions(false, $this->context->language->id);
            $nbRegions = count($data);

            $this->context->smarty->assign(array(
                'nbRegion' => $nbRegions,
                'regions' => $data,
                'add_prod_display' => Configuration::get('PS_ATTRIBUTE_CATEGORY_DISPLAY')
            ));
        } else {
            $this->context->smarty->assign('nbRegion', 0);
        }
    }
}

Region.php :

class RegionCore extends ObjectModel
{

    public static $definition = array(
		'table' => 'feature_value_lang',
		'primary' => 'id_feature_value',
		'multilang' => true,
		'multilang_shop' => true,
		'fields' => array(
			/* Classic fields */
			'value' =>            array('type' => self::TYPE_STRING, 'lang' => true, 'validate' => 'isCatalogName', 'required' => true, 'size' => 128)
	));

    public static function getRegions($get_nb_products = false, $id_lang = 0)
    {
        if (!$id_lang) {
            $id_lang = (int)Configuration::get('PS_LANG_DEFAULT');
        }
        if (!Group::isFeatureActive()) {
            $all_group = true;
        }

       $regions = Db::getInstance(_PS_USE_SQL_SLAVE_)->executeS('
		SELECT 	b.value
		FROM `'._DB_PREFIX_.'feature_value` a 
		'.Shop::addSqlAssociation('feature_value', 'a').'
		LEFT JOIN `'._DB_PREFIX_.'feature_value_lang` b ON (b.`id_feature_value` = a.`id_feature_value` AND b.`id_lang` = '.(int)$id_lang.')
		WHERE `id_feature` = 2 AND (a.custom = 0 OR a.custom IS NULL) 
		ORDER BY `id_feature` ASC';

        return $regions;
    }
}

region.tpl

{capture name=path}{l s='Region'}{/capture}

<h1>{l s='Région'}</h1>

{if isset($errors) AND $errors}
	{include file="$tpl_dir./errors.tpl"}
{else}
	{if 1 > 0}
		{foreach from=$regions item=region name=regions}
				<div class="middle-side col-xs-12 col-sm-5">
					<h3>
						{$region.value|truncate:60:'...'|escape:'html':'UTF-8'}
					</h3>
				</div> <!-- .middle-side -->
		{/foreach}
	{/if}
{/if}

Merci
 

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