Jump to content

Organisation de l'ordre des caractéristiques


showtime

Recommended Posts

Comme je l'avais demander précédement pour l'organisation alphabétique des catégories, ici je reviens à la charge mais cette fois ci pour les caractéristiques .

Comment organiser les caractéristique autrement que par ordre alphabétique ?

l'astuce du mettre un numéro et un point devant ne marche par pour sa ( 1.exemple) .

Quelqu'un aurait-t il une réponse ?

Merci

Link to comment
Share on other sites

  • 2 weeks later...

En effet ceci n'est pas encore possible pour les caractéristiques et les attributs :(

Patience sera le maître mot, notre priorité étant de vous offrir une v1 stable avant toute chose.
La liste des fonctionnalités qui seront proposées dans la version post v-1 est assez longue, votre demande en fait partie.

Cordialement

Link to comment
Share on other sites

Merci de votre prise en compte .

Seuleuement que je n'ai pas envie d'attendres des mois avant des pouvoir commencer mon activité.

Si je pouvais trouver une solution en attente de la V1 sa serait parfait ...

je suis sur que cela ne doit pas etre grand choses, mais n'ayantpas de compétences , je ne sais rien faire

Link to comment
Share on other sites

bien ....

je ne comprend tout de meme pas pourquoi elle ne se mettent pas dans l'ordre qu'elles sont créées . Qu'est ce qui défini sa ? Feature.php ?

sinon je vais devoir trouver une alternative , mais la aussi j'ai un probleme, je m'explique : pour parrer le probleme des caractéristiques , je veux faire un tableau dans la description avec l'outil tableau de l'editeur tinymce le probleme étant que le style configuré ne s'applique pas (surement car le global.css prend le dessus sur l'editeur tinymce) auriez-vous une solution? quelles classes à appliquer au niveauw du css ?

:)

Link to comment
Share on other sites

@ ShowTime
Patience
les caratéristiques sont classer par le nom en adésendent.

ORDER BY fl.`name` ASC');



Dans la base de données il n y a pas de champ de création "Date"

Aürès tu pouras les classer comme ca

ORDER BY fl.`Date` ASC');



Le tout dans tous ca s est de rajouter dans le script un champ "Date"

Link to comment
Share on other sites

  • 6 months later...
bien ....

je ne comprend tout de meme pas pourquoi elle ne se mettent pas dans l'ordre qu'elles sont créées . Qu'est ce qui défini sa ? Feature.php ?

:)


Modifier la classe product, exemple classé par ordre crée :

static public function getFrontFeaturesStatic($id_lang, $id_product)
   {
       return Db::getInstance()->ExecuteS('
       SELECT name, value, pf.id_feature
       FROM '._DB_PREFIX_.'feature_product pf
       LEFT JOIN '._DB_PREFIX_.'feature_lang fl ON (fl.id_feature = pf.id_feature AND fl.id_lang = '.intval($id_lang).')
       LEFT JOIN '._DB_PREFIX_.'feature_value_lang fvl ON (fvl.id_feature_value = pf.id_feature_value AND fvl.id_lang = '.intval($id_lang).')
       WHERE pf.id_product = '.intval($id_product).' order by fl.id_feature');
   }

Link to comment
Share on other sites

Actuelement j'ai ca:

static public function getFrontFeaturesStatic($id_lang, $id_product)
{
return Db::getInstance()->ExecuteS('
SELECT name, value, pf.id_feature
FROM '._DB_PREFIX_.'feature_product pf
LEFT JOIN '._DB_PREFIX_.'feature_lang fl ON (fl.id_feature = pf.id_feature AND fl.id_lang = '.intval($id_lang).')
LEFT JOIN '._DB_PREFIX_.'feature_value_lang fvl ON (fvl.id_feature_value = pf.id_feature_value AND fvl.id_lang = '.intval($id_lang).')
WHERE pf.id_product = '.intval($id_product));
}

Je dois donc rajouter:

order by fl.id_feature'

à la dernière ligne? c'est ca?

Link to comment
Share on other sites

Si vous souhaitez un classement dans l'ordre que vous désirez comme pour les catégories en mentionnant un chiffre suivi d'un point

ceci devrait faire l'affaire :
Toujours dans la classe product :

static public function getFrontFeaturesStatic($id_lang, $id_product)
   {
       $result=Db::getInstance()->ExecuteS('
       SELECT name, value, pf.id_feature
       FROM '._DB_PREFIX_.'feature_product pf
       LEFT JOIN '._DB_PREFIX_.'feature_lang fl ON (fl.id_feature = pf.id_feature AND fl.id_lang = '.intval($id_lang).')
       LEFT JOIN '._DB_PREFIX_.'feature_value_lang fvl ON (fvl.id_feature_value = pf.id_feature_value AND fvl.id_lang = '.intval($id_lang).')
       WHERE pf.id_product = '.intval($id_product).' order by name');

      $resultsArray = array();
       foreach ($result AS $row)
       {
           $row['name'] = product::hideFeaturePosition($row['name']);
           $resultsArray[] = $row;
       }
       return $resultsArray;
   }


   static public function hideFeaturePosition($name)
   {
       return preg_replace('/^[0-9]+\./', '', $name);
   }

Link to comment
Share on other sites

  • 4 months later...

Attention car la fonction "hideFeaturePosition" (cacher la numération sur le front) me semble utiliser un regex pour virer tout les chiffres et les points !

Si vos catégories qui contiennent des chiffres et/ou point... dommage !
En fait, il faudrait juste détecter (find) si en position 3 il y a un point et si c'est le cas il faut virer (ltrim) les 3 premiers caractères du nom.

Bon tout ca c'est sympa... mais il faudrait ajouter la notion de classement absolument partout dans l'admin de Prestashop et idéalement pouvoir modifier l'ordre directement à la souris (en Ajax avec la fonction dragHandle) comme dans Modules>Positions de la v1.2

Link to comment
Share on other sites

Attention car la fonction "hideFeaturePosition" (cacher la numération sur le front) utilises un regex pour virer tout les chiffres et les points !

Si vos catégories qui contiennent des chiffres et/ou point... dommage !


Il me semble que ça ne supprime que les chiffres suivis d'un point en début de chaîne (comme pour les catégories).

En fait, il faudrait juste détecter (find) si en position 3 il y a un point et si c'est le cas il faut virer (ltrim) les 3 premiers caracteres du nom.


Ben non parce qu'il peut y avoir 3 chiffres en préfixes. Ceux qui veulent espacer la numérotation pour de futures éventuelles insertions peuvent numéroter de 10 en 10 et rapidement arriver aux centaines.

Bon tout ca c'est sympa... mais il faudrait ajouter la notion de classement absolument partout dans l'admin de Prestashop et idéalement pouvoir modifier l'ordre directement à la souris (en Ajax avec la fonction dragHandle) comme dans Modules>Positions de la v1.2


Je suis d'accord. L'ergonomie du Back Office est une préoccupation importante.
Link to comment
Share on other sites

Bon tout ca c’est sympa… mais il faudrait ajouter la notion de classement absolument partout dans l’admin de Prestashop et idéalement pouvoir modifier l’ordre directement à la souris (en Ajax avec la fonction dragHandle) comme dans Modules>Positions de la v1.2


Le drag and drop pour tous les classements ce serai vraiment le top! :cheese:
Link to comment
Share on other sites

zendik t'as raison... j'ai écris un grosse betisse !
la fonction remplie parfaitement son rôle...

A quand le grand chantier de la refonte de l'interface du BO ???
Priorité au catalogue...

Link to comment
Share on other sites

  • 1 month later...
Just wanted to point out that the mod in post #18 is working in the latest version of Prestashop (How to sort product features).

Thanks regreg!


Dernière version de PrestaShop qui est actuellement 1.2.1 (oui parce que dans 6 mois on saura plus).
Link to comment
Share on other sites

  • 3 months later...

bonsoir,

je viens de faire la petite manip, ça classe bien par l'ordre des chiffres sur le FO, mais le pb c'est que ça ne fait pas comme les catégories :

ne pas afficher les 01. dans le BO et FO
se mettre dans l'ordre dans le BO

Comment faire pour avoir la même chose que les catégories en invisible ?

Link to comment
Share on other sites

  • 1 year later...
  • 3 months later...

Bonjour,

Quelqu'un aurait-il quelque chose de similaire pour la 1.4 ?

Merci d'avance

Si vous souhaitez un classement dans l'ordre que vous désirez comme pour les catégories en mentionnant un chiffre suivi d'un point

ceci devrait faire l'affaire :
Toujours dans la classe product :

static public function getFrontFeaturesStatic($id_lang, $id_product)
   {
       $result=Db::getInstance()->ExecuteS('
       SELECT name, value, pf.id_feature
       FROM '._DB_PREFIX_.'feature_product pf
       LEFT JOIN '._DB_PREFIX_.'feature_lang fl ON (fl.id_feature = pf.id_feature AND fl.id_lang = '.intval($id_lang).')
       LEFT JOIN '._DB_PREFIX_.'feature_value_lang fvl ON (fvl.id_feature_value = pf.id_feature_value AND fvl.id_lang = '.intval($id_lang).')
       WHERE pf.id_product = '.intval($id_product).' order by name');

      $resultsArray = array();
       foreach ($result AS $row)
       {
           $row['name'] = product::hideFeaturePosition($row['name']);
           $resultsArray[] = $row;
       }
       return $resultsArray;
   }


   static public function hideFeaturePosition($name)
   {
       return preg_replace('/^[0-9]+\./', '', $name);
   }

Link to comment
Share on other sites

  • 6 months later...

En adaptant le code pour la 1.4, cela donne :

 


public static function getFrontFeaturesStatic($id_lang, $id_product)
{
if (!array_key_exists($id_product.'-'.$id_lang, self::$_frontFeaturesCache))
{
$result = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS('
SELECT name, value, pf.id_feature
FROM '._DB_PREFIX_.'feature_product pf
LEFT JOIN '._DB_PREFIX_.'feature_lang fl ON (fl.id_feature = pf.id_feature AND fl.id_lang = '.(int)$id_lang.')
LEFT JOIN '._DB_PREFIX_.'feature_value_lang fvl ON (fvl.id_feature_value = pf.id_feature_value AND fvl.id_lang = '.(int)$id_lang.')
WHERE pf.id_product = '.(int)$id_product.'
ORDER BY name');
}

foreach ($result AS $row)
	{
		$row['name'] = product::hideFeaturePosition($row['name']);
		self::$_frontFeaturesCache[$id_product.'-'.$id_lang][] = $row;
	}

return self::$_frontFeaturesCache[$id_product.'-'.$id_lang];
}

static public function hideFeaturePosition($name)
{
	return preg_replace('/^[0-9]+./', '', $name);
}

Link to comment
Share on other sites

  • 3 weeks later...
En adaptant le code pour la 1.4, cela donne : ...

 

Pour ma part, dans la 1.4, j'utilise l'override en créant un fichier /override/classes/Product.php avec le contenu suivant, c'est plus propre :

 

<?php

class Product extends ProductCore {

protected static $_frontFeaturesCache = array();

public function getFrontFeatures($id_lang) {
	return self::getFrontFeaturesStatic($id_lang, $this->id);
}

public static function getFrontFeaturesStatic($id_lang, $id_product) {
	if (!array_key_exists($id_product.'-'.$id_lang, self::$_frontFeaturesCache)) {
		$result = Db::getInstance(_PS_USE_SQL_SLAVE_)->ExecuteS('SELECT name, value, pf.id_feature
		FROM '._DB_PREFIX_.'feature_product pf
		LEFT JOIN '._DB_PREFIX_.'feature_lang fl ON (fl.id_feature = pf.id_feature AND fl.id_lang = '.(int)$id_lang.')
		LEFT JOIN '._DB_PREFIX_.'feature_value_lang fvl ON (fvl.id_feature_value = pf.id_feature_value AND fvl.id_lang = '.(int)$id_lang.')
		WHERE pf.id_product = '.(int)$id_product.'
		ORDER BY name');
		foreach ($result AS $row) {
			$row['name'] = product::hideFeaturePosition($row['name']);
			self::$_frontFeaturesCache[$id_product.'-'.$id_lang][] = $row;
		}
	}
	return self::$_frontFeaturesCache[$id_product.'-'.$id_lang];
}

static public function hideFeaturePosition($name) {
	return preg_replace('/^[0-9]+./', '', $name);
}

}

Product.php

Link to comment
Share on other sites

  • 2 weeks later...

Bonsoir,

 

Super ce topic, il correspond exactement à ce que je recherhe. J'ai mis en place les modifications, mais ce la ne fonctionne que jusqu'à 9.

Voila ce que cela donne :

 

1.

10.

11.

2.

3.

4.

5.

 

est ce que quelqu'un aurait un tuyau?

 

merci

Link to comment
Share on other sites

  • 7 months later...

Ooops y'a un super petit module qui a été développé par Johan et que l'on peut trouver ici : http://www.prestashop.com/forums/topic/164885-ordre-caracteristique-fiche-technique/

 

On peut gérer l'ordre des caractéristiques en drag & drop sans rajouter 01., 02., 03.....et, cerise sur le gâteau, on peut rajouter des icones aux caractéristiques.

 

le top quoi !

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