Benvenuto, Ospite
Nome utente: Password: Ricordami
  • Pagina:
  • 1

ARGOMENTO:

Ordinare automaticamente le taglie / misure (attributi) nella scheda prodotto in PrestaShop 8 Anni 8 Mesi fa #847

Oggi ringrazio il buon Fiore per una soluzione alternativa allo stesso problema.

La soluzione che propongo questa volta, anziché andare a modificare i dati sul database, modifica il modo di presentarli a video, attraverso un piccolo hack su un file del core di Prestashop (in particolare sulla query che estrae i dati).

Il file è questo: /classes/Product.php

Intorno alla riga 3161 si trova la seguente funzione:
	public function getAttributesGroups($id_lang)
	{
		if (!Combination::isFeatureActive())
			return array();
		$sql = 'SELECT ag.`id_attribute_group`, ag.`is_color_group`, agl.`name` AS group_name, agl.`public_name` AS public_group_name,
					a.`id_attribute`, al.`name` AS attribute_name, a.`color` AS attribute_color, product_attribute_shop.`id_product_attribute`,
					IFNULL(stock.quantity, 0) as quantity, product_attribute_shop.`price`, product_attribute_shop.`ecotax`, product_attribute_shop.`weight`,
					product_attribute_shop.`default_on`, pa.`reference`, product_attribute_shop.`unit_price_impact`,
					product_attribute_shop.`minimal_quantity`, product_attribute_shop.`available_date`, ag.`group_type`
				FROM `'._DB_PREFIX_.'product_attribute` pa
				'.Shop::addSqlAssociation('product_attribute', 'pa').'
				'.Product::sqlStock('pa', 'pa').'
				LEFT JOIN `'._DB_PREFIX_.'product_attribute_combination` pac ON (pac.`id_product_attribute` = pa.`id_product_attribute`)
				LEFT JOIN `'._DB_PREFIX_.'attribute` a ON (a.`id_attribute` = pac.`id_attribute`)
				LEFT JOIN `'._DB_PREFIX_.'attribute_group` ag ON (ag.`id_attribute_group` = a.`id_attribute_group`)
				LEFT JOIN `'._DB_PREFIX_.'attribute_lang` al ON (a.`id_attribute` = al.`id_attribute`)
				LEFT JOIN `'._DB_PREFIX_.'attribute_group_lang` agl ON (ag.`id_attribute_group` = agl.`id_attribute_group`)
				'.Shop::addSqlAssociation('attribute', 'a').'
				WHERE pa.`id_product` = '.(int)$this->id.'
					AND al.`id_lang` = '.(int)$id_lang.'
					AND agl.`id_lang` = '.(int)$id_lang.'
				GROUP BY id_attribute_group, id_product_attribute
				ORDER BY  ag.`position` ASC, a.`position` ASC, agl.`name` ASC';
		return Db::getInstance()->executeS($sql);
	}


Per ordinare i dati in base al valore dell'attributo occorre cambiare l'ORDER BY della Query aggiungendo "al.name" come segue
ORDER BY  al.name, ag.`position` ASC, a.`position` ASC, agl.`name` ASC';
Ing. Paolo Tateo
CEO bindCommerce

Si prega Accedi a partecipare alla conversazione.

Ordinare automaticamente le taglie / misure (attributi) nella scheda prodotto in PrestaShop 8 Anni 8 Mesi fa #841

Vi riporto di seguito una query scritta dal nostro buon Mattia per ordinare automaticamente i valori degli attributi in PrestaShop.

Può infatti capitare che un riempimento automatico o manuale non sia stato eseguito inserendo i valori "in ordine". Con questa query (che potrete eseguire in PHPMyAdmin) riordinare i valori sarà molto rapido.

UPDATE `ps_attribute` as a JOIN 
(SELECT t.*, @rownum := @rownum + 1 AS rank
  FROM `ps_attribute_lang` t,
(SELECT @rownum := 0) r
WHERE id_lang=1 ORDER BY t.name) as al 
ON a.id_attribute=al.id_attribute
SET a.position=al.rank
Ing. Paolo Tateo
CEO bindCommerce

Si prega Accedi a partecipare alla conversazione.

Ultima Modifica: da Paolo Tateo.
  • Pagina:
  • 1
Tempo creazione pagina: 0.083 secondi

bindCommerce

bindCommerce s.r.l.

Partita IVA IT07798861212 - SDI M5UXCR1
Registro imprese di Napoli - REA: NA - 910618
Capitale Sociale € 20.000,00 interamente versato
Tel: +39 011 089 122 0
E-mail: [email protected]

PON 2014>20 Riaccendiamo lo sviluppo