Jump to content

[Résolu] Ordre Menu DV


Recommended Posts

Bonjour, j'ai installé le module "Menu DV" édité par DDLX, ce module qui est un menu déroulant vertical fonctionne trés bien mais les catégories sont rangées par defaut par ordre alphabetique alors que je souhaiterais qu'il tienne compte de l'ordre imposé dans les catégories de prestashop, savez vous quelle est la manip a effectuer parce que aprés avoir cherché un bon moment avec mes trés faible connaissance en CSS je cale :(

 

merci d'avance pour votre aide.

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

Bonjour, je vous remercie pour cet indice, j'ai fait quelques tests sur le fichier PHP du module mais je n'arrive a rien :(

 

 

<?php
 
class ddlx_menu_dv extends Module
 
{
 
 
 
public function __construct()
 
{
 
$this->name = 'ddlx_menu_dv';
 
$this->tab = 'DDLX modules';
 
$this->version = "1.0";
 
$this->author = 'DDLX multimédia'; 
 
$this->bootstrap = true;
 
 
 
parent::__construct();
 
 
 
$this->displayName = $this->l('Menu DV');
 
$this->description = $this->l('Add a menu in your site');
 
$this->confirmUninstall = $this->l('Are you sure you want to uninstall this module ?');
 
}
 
 
 
function install()
 
{
 
if ( ! parent::install() || ! $this->registerHook('leftColumn') || ! Configuration::updateValue('BLOCK_CATEGMDI_MAX_DEPTH', 4) )
 
{
 
return false;
 
}
 
return true;
 
}
 
 
 
public function getContent()
 
{
 
$output = '<h2>' . $this->displayName . '</h2>';
 
if ( Tools::isSubmit('submitBlockCategories') )
 
{
 
$maxDepth = intval(Tools::getValue('maxDepth'));
 
 
 
if ( $maxDepth <= 0 )
 
{
 
$output .= '<div class="alert error">' . $this->l('Maximum depth: Invalid number.') . '</div>';
 
}
 
else
 
{
 
Configuration::updateValue('BLOCK_CATEGMDI_MAX_DEPTH', intval($maxDepth));
 
$output .= '<div class="conf confirm"><img src="../img/admin/ok.gif" alt="' . $this->l('Confirmation') . '" />' . $this->l('Settings updated') . '</div>';
 
}
 
}
 
return $output . $this->displayForm();
 
}
 
 
 
public function displayForm()
 
{
 
return '
 
<form action="' . $_SERVER ['REQUEST_URI'] . '" method="post">
 
<fieldset>
 
<legend><img src="' . $this->_path . 'logo.gif" alt="" title="" />' . $this->l('Settings') . '</legend>
 
<label>' . $this->l('Maximum depth') . '</label>
 
<div class="margin-form">
 
<input type="text" name="maxDepth" value="' . Configuration::get('BLOCK_CATEGMDI_MAX_DEPTH') . '" />
 
<p class="clear">' . $this->l('Set the maximum depth of sublevels displayed in this block') . '</p>
 
</div>
 
<center><input type="submit" name="submitBlockCategories" value="' . $this->l('Save') . '" class="button" /></center>
 
</fieldset>
 
</form>';
 
}
 
 
 
public function hookLeftColumn( $params )
 
{
 
// Num�ro d'identification des sous menu //
 
$ID_ddsubmenuside = 0;
 
// /////////////////////////////////////////
 
 
 
global $smarty;
 
 
 
/* ONLY FOR THEME OLDER THAN v1.0 */
 
global $link;
 
$smarty->assign(array (
 
'categories' => Category::getHomeCategories(intval($params ['cookie']->id_lang), true),
 
'link' => $link 
 
));
 
/* ELSE */
 
 
 
 
 
$req_cat = '
 
SELECT * FROM ' . _DB_PREFIX_ . 'category c
 
LEFT JOIN ' . _DB_PREFIX_ . 'category_lang cl ON (c.id_category = cl.id_category AND id_lang = ' . intval($params ['cookie']->id_lang) . ')
 
WHERE c.active = 1 AND c.level_depth=2
 
ORDER BY level_depth, cl.name ASC';
 
 
 
// LECTURE DES CATEGORIES
 
$result = Db::getInstance()->ExecuteS($req_cat);
 
 
 
// Si aucune cat�gorie de trouv�
 
if ( count($result) == 0 )
 
{
 
$smarty->assign('lignes_menu_parent', '<li>*** VIDE ***</li>');
 
$smarty->assign('lignes_sous_categories', '');
 
return $this->display(__FILE__, $this->name . '.tpl');
 
}
 
$lignes_menu_parent = '';
 
 
 
$SousCategories = '';
 
 
 
// Sinon on lit les catégories, sous-cat�gories, etc ...
 
foreach ( $result as $categorie_parent )
 
{
 
$NbSousCat = $this->NbSousCategories($categorie_parent ['id_category']);
 
 
 
// Ajout de la cat�gorie
 
$lignes_menu_parent .= '<li><a href="index.php?id_category=' . $categorie_parent ['id_category'] . '&controller=category"';
 
 
 
// Si il y a des sous cat�gories, on attribue un code de liaison
 
if ( $NbSousCat > '0' )
 
{
 
$ID_ddsubmenuside = ( $ID_ddsubmenuside + 1 );
 
$lignes_menu_parent = $lignes_menu_parent . ' rel="ddsubmenuside' . $ID_ddsubmenuside . '"';
 
}
 
 
 
// On termine la ligne en cours
 
$lignes_menu_parent = $lignes_menu_parent . '>' . $categorie_parent ['name'] . '</a></li>';
 
 
 
// Si il y a des sous cat�gories, on lit la suite
 
if ( $NbSousCat > '0' )
 
{
 
$SousCategories .= $this->recupSousCategories($categorie_parent ['id_category'], '1', $ID_ddsubmenuside, intval($params ['cookie']->id_lang));
 
}
 
}
 
 
 
// On copie les lignes dans le template
 
$smarty->assign('lignes_menu_parent', $lignes_menu_parent);
 
$smarty->assign('lignes_sous_categories', $SousCategories);
 
 
 
return $this->display(__FILE__, $this->name . '.tpl');
 
}
 
 
 
public function hookRightColumn( $params )
 
{
 
return $this->hookLeftColumn($params);
 
 
 
 
function recupSousCategories( $id_parent, $mode, $id_sub, $idlang )
 
{
 
// $mode=1 si c'est le 1er niveau de sous cat�gorie, sinon $mode=2
 
// requ�te � executer
 
$sql = 'SELECT c.id_category, cl.name FROM ' . _DB_PREFIX_ . 'category c
 
LEFT JOIN ' . _DB_PREFIX_ . 'category_lang cl ON (c.id_category = cl.id_category AND id_lang = ' . $idlang . ')
 
WHERE c.active = 1 AND c.id_parent = ' . $id_parent . ' AND level_depth <= ' . Configuration::get('BLOCK_CATEGMDI_MAX_DEPTH') . ' ORDER BY level_depth, cl.name ASC';
 
// Ex�cution de la requ�te
 
$resultat = Db::getInstance()->ExecuteS($sql);
 
 
 
$LignesSousCat = '';
 
 
 
// TODO Si la requ�te est vide on renvoit vide
 
if ( count($resultat) == 0 )
 
{
 
return '';
 
}
 
// Pr�paration du texte
 
if ( $mode == '1' )
 
{
 
$LignesSousCat .= '<ul id="ddsubmenuside' . $id_sub . '" class="ddsubmenustyle blackwhite">';
 
}
 
else
 
{
 
$LignesSousCat .= '<ul>';
 
}
 
 
 
// d($resultat); //FEMME TATA
 
 
 
// Sinon lecture des sous cat�gories et mise en place
 
foreach ( $resultat as $res )
 
{
 
 
 
// Lecture du nombre de sous cat�gories
 
$NbSousCat = $this->NbSousCategories($res ['id_category']);
 
 
 
// index.php?id_category=' . $categorie_parent ['id_category'] . '&controller=category"';
 
 
 
$chaine = '<li><a href="index.php?id_category=%d&controller=category">%s</a>';
 
 
 
$LignesSousCat .= sprintf($chaine, $res ['id_category'], $res ['name']);
 
// Si il y a encore un niveau inf�rieur dans le menu
 
if ( $NbSousCat > 0 )
 
{
 
$LignesSousCat .= $this->recupSousCategories($res ['id_category'], '2', '', $idlang);
 
}
 
// On ferme la ligne
 
$LignesSousCat .= '</li>';
 
}
 
$LignesSousCat .= '</ul>';
 
 
 
return $LignesSousCat;
 
}
 
 
 
function NbSousCategories( $id_parent )
 
{
 
global $Depth_max;
 
$sql = 'SELECT count(*) as Nombre FROM ' . _DB_PREFIX_ . 'category c
 
WHERE c.active = 1 AND c.id_parent = ' . $id_parent . ' AND c.level_depth <= ' . Configuration::get('BLOCK_CATEGMDI_MAX_DEPTH');
 
$resultat = Db::getInstance()->ExecuteS($sql);
 
 
 
return $resultat [0] ['Nombre'];
 
}
 
 
 
}
 
 
 
 
 
?>
 
 

 

 
Link to comment
Share on other sites

$req_cat = '
 
SELECT * FROM ' . _DB_PREFIX_ . 'category c
 
LEFT JOIN ' . _DB_PREFIX_ . 'category_lang cl ON (c.id_category = cl.id_category AND id_lang = ' . intval($params ['cookie']->id_lang) . ')
 
WHERE c.active = 1 AND c.level_depth=2
 
ORDER BY level_depth, cl.name ASC';

c' est dans ce morceau de code qu'il récupère le nom de la catégorie dans la base de donnée et qu'il le classe par ordre alphabétique, il faudrait modifier ce code

Edited by Alexandre-KM (see edit history)
Link to comment
Share on other sites

Merci, j'ai essayé quelques trucs mais je ne comprend rien a ce que je fait , je test differentes possibilité en ajustant par élimination mais je n'y parviens pas, si quelqu'un d'un peu calé en code pouvait m'aider ce serait trés gentil.

 

merci

Link to comment
Share on other sites

Salut,

Je suis nouveau et me permet de vous demander comment marche ce module que je viens d'installer et ajouter aux modules.Quand je veux pour le configurer il n'y a juste "Maximum depth 4 Set the maximum depth of sublevels displayed in this block".Ce que je cherche en définitif c'est d'avoir un menu vertical déroulant dans une catégorie.Pour le moment mes sous menu sont à l'horizontal.Ce qui rend le site pas terrible.Merci de votre aide :)

 

 

Link to comment
Share on other sites

Bonjour Ghost77, je ne comprend pas ce que tu veux dire, as tu le lien de ton site pour voir ce qui cloche, il faudrait aussi que tu précise quelle version de prestashop tu utilises.

 

Normalement une fois le module installé, il faut que tu desactive le menu d'origine de prestashop pour ne pas créer de problème entre les deux, puis tes catégories devraient etre apparentes avec tes sous catégories et deroulant lateral comme sur mon site perso, le problème c'est que toutes les catégories apparaissent par ordre alphabetique et je n'ai pas trouvé comment les remettre dans l'ordre de presta :(

Edited by brikobike (see edit history)
  • Like 1
Link to comment
Share on other sites

Bonjour Ghost77, je ne comprend pas ce que tu veux dire, as tu le lien de ton site pour voir ce qui cloche, il faudrait aussi que tu précise quelle version de prestashop tu utilises.

 

Normalement une fois le module installé, il faut que tu desactive le menu d'origine de prestashop pour ne pas créer de problème entre les deux, puis tes catégories devraient etre apparentes avec tes sous catégories et deroulant lateral comme sur mon site perso, le problème c'est que toutes les catégories apparaissent par ordre alphabetique et je n'ai pas trouvé comment les remettre dans l'ordre de presta :(

Je travail directement par la console admin.Dans la catégorie module j'ai ajouté mais rien à configurer !

Faut il installer quelque chose en + ?

Link to comment
Share on other sites

  • 2 weeks later...

Je voudrais que mes sous menu soient à la verticale et non à l'horizontal

Mon site: http://ouest-unlock.com/

Je pense que tu utilise un autre module mais pas Menu DV qui est specifique pour un menu vertical, le tiens est horizontal, tu devrais ouvrir un autre post pour avoir des reponses a ton problème en etant certain d'utiliser le bon module et non pas celui d'origine prestashop

Link to comment
Share on other sites

$req_cat = '
 
SELECT * FROM ' . _DB_PREFIX_ . 'category c
 
LEFT JOIN ' . _DB_PREFIX_ . 'category_lang cl ON (c.id_category = cl.id_category AND id_lang = ' . intval($params ['cookie']->id_lang) . ')
 
WHERE c.active = 1 AND c.level_depth=2
 
ORDER BY level_depth, cl.name ASC';

c' est dans ce morceau de code qu'il récupère le nom de la catégorie dans la base de donnée et qu'il le classe par ordre alphabétique, il faudrait modifier ce code

 

 

C'est la commande ORDER BY qui classe les données récupérées par niveau de profondeur et cl.name (est-ce là le nom des catégories ?) par ordre croissant (ASCendant.) Tu peux tester sans cl.name pour voir si ça solutionne ton problème.

Link to comment
Share on other sites

C'est la commande ORDER BY qui classe les données récupérées par niveau de profondeur et cl.name (est-ce là le nom des catégories ?) par ordre croissant (ASCendant.) Tu peux tester sans cl.name pour voir si ça solutionne ton problème.

Merci beaucoup , effectivement ça ce passe bien là, j'ai réussi a afficher mon menu dans l'ordre des numéros ID prestashop en supprimant par 2 fois la commande "cl.name ASC" mais parcontre en réorganisant mon menu dans prestashop (avec les petites fléches noires) le menu ne bouge pas malgré le vidage du cache du navigateur . 

Link to comment
Share on other sites

En enlevant totalement le ORDER BY ça donne quoi (sans oublier de remettre le point virgule à la ligne au dessus pour ne pas avoir droit à une petite erreur.)

 

Le premier SELECT traite les catégories principales, le second quant à lui s'occupe des sous-catégories.

 

Ton site est très sympa, bravo.

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

Merci pour les compliments :) j'ai essayé de retirer ORDER BY comme ceci mais mon site ne s'affiche plus :(

 

 

$req_cat = '
        SELECT * FROM ' . _DB_PREFIX_ . 'category c
        LEFT JOIN ' . _DB_PREFIX_ . 'category_lang cl ON (c.id_category = cl.id_category AND id_lang = ' . intval($params ['cookie']->id_lang) . ')
        WHERE c.active = 1 AND c.level_depth=2;

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

Dans le menu de navigation dédié aux mobiles, ça s'affiche effectivement dans cet ordre là.

 

Il faut essayer de remettre un ORDER BY comme ci-après :

 

ORDER BY position ASC;

 

Attention, dans les deux requêtes SQL, il y a une quote avant la virgule juste après le ASC s, peut être qu'en enlevant le ORDER BY cl_name ASC tu l'as virée avec (ce qui aurait pour résultat  que ça ne fonctionne plus correctement dans la mesure où cette quote ferme une expression php)

 

Configuration::get('BLOCK_CATEGMDI_MAX_DEPTH') . ' ORDER BY level_depth, cl.name ASC';

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

  • 2 weeks later...

Je pense que tu utilise un autre module mais pas Menu DV qui est specifique pour un menu vertical, le tiens est horizontal, tu devrais ouvrir un autre post pour avoir des reponses a ton problème en etant certain d'utiliser le bon module et non pas celui d'origine prestashop

J'ai pourtant desactivé le module d'origine de la console.Du coup toutes mes catégories ont disparues.Malgré l'installation du module menu DV.Mes catégories restent invisibles !

Un petit tuto serait le bienvenu svp concernant l'importation de ce module entre autre afin d'y voir plus clair,merci.

Link to comment
Share on other sites

  • 2 months later...

Bonjour, est il possible d'avoir "ce menu DV" vertical sur toutes les pages y compris la page d'accueil ? Il ne se greffe qu'en leftcolumn or celle ci n'est pas dans la page d'accueil...

J'ai un peu cherché dans le php mais n'aie pas réussi à le modifier correctement pour pouvoir le greffer en Topcolumn.

Link to comment
Share on other sites

  • 1 year later...

Je reviens une nouvelle fois vers vous car le problème est toujours présent suite a la création de nouvelles catégories, elles ne se rangent ni par ID ni par ordre alphabetique !!!, pas vraiment de logique et j'avoue que je m'y perd, votre aide me serait d'un grand secours

 

 

Mon menu tel que je voudrais qu'il apparaisse sur le site.

 

cat%25C3%25A9gories.jpg

 

 

Et le menu tel qu'il apparait :(, ni le N° ID ni un quelconque ordre logique, j'ai vidé mon cache mais rien ne change.

 

menu.jpg

 

 

Le fichier .PHP du module "DDLX" dans sa totalité pour vous permettre d'y voir plus clair.

<?php
class ddlx_menu_dv extends Module
{

	public function __construct()
	{
		$this->name = 'ddlx_menu_dv';
		$this->tab = 'DDLX modules';
		$this->version = "1.0";
		$this->author = 'DDLX multimédia'; 
		$this->bootstrap = true;
		
		parent::__construct();
		
		$this->displayName = $this->l('Menu DV');
		$this->description = $this->l('Add a menu in your site');
		$this->confirmUninstall = $this->l('Are you sure you want to uninstall this module ?');
	}

	function install()
	{
		if ( ! parent::install() || ! $this->registerHook('leftColumn') || ! Configuration::updateValue('BLOCK_CATEGMDI_MAX_DEPTH', 4) )
		{
			return false;
		}
		return true;
	}

	public function getContent()
	{
		$output = '<h2>' . $this->displayName . '</h2>';
		if ( Tools::isSubmit('submitBlockCategories') )
		{
			$maxDepth = intval(Tools::getValue('maxDepth'));
			
			if ( $maxDepth <= 0 )
			{
				$output .= '<div class="alert error">' . $this->l('Maximum depth: Invalid number.') . '</div>';
			}
			else
			{
				Configuration::updateValue('BLOCK_CATEGMDI_MAX_DEPTH', intval($maxDepth));
				$output .= '<div class="conf confirm"><img src="../img/admin/ok.gif" alt="' . $this->l('Confirmation') . '" />' . $this->l('Settings updated') . '</div>';
			}
		}
		return $output . $this->displayForm();
	}

	public function displayForm()
	{
		return '
		<form action="' . $_SERVER ['REQUEST_URI'] . '" method="post">
			<fieldset>
				<legend><img src="' . $this->_path . 'logo.gif" alt="" title="" />' . $this->l('Settings') . '</legend>
				<label>' . $this->l('Maximum depth') . '</label>
				<div class="margin-form">
					<input type="text" name="maxDepth" value="' . Configuration::get('BLOCK_CATEGMDI_MAX_DEPTH') . '" />
					<p class="clear">' . $this->l('Set the maximum depth of sublevels displayed in this block') . '</p>
				</div>
				<center><input type="submit" name="submitBlockCategories" value="' . $this->l('Save') . '" class="button" /></center>
			</fieldset>
		</form>';
	}

	public function hookLeftColumn( $params )
	{
		// Num�ro d'identification des sous menu //
		$ID_ddsubmenuside = 0;
		// /////////////////////////////////////////
		
		global $smarty;
		
		/* ONLY FOR THEME OLDER THAN v1.0 */
		global $link;
		$smarty->assign(array (
				'categories' => Category::getHomeCategories(intval($params ['cookie']->id_lang), true),
				'link' => $link 
		));
		/* ELSE */
		

		$req_cat = '
		SELECT * FROM ' . _DB_PREFIX_ . 'category c
		LEFT JOIN ' . _DB_PREFIX_ . 'category_lang cl ON (c.id_category = cl.id_category AND id_lang = ' . intval($params ['cookie']->id_lang) . ')
		WHERE c.active = 1 AND c.level_depth=2
		ORDER BY position ASC';
		
		// LECTURE DES CATEGORIES
		$result = Db::getInstance()->ExecuteS($req_cat);
		
		// Si aucune cat�gorie de trouv�
		if ( count($result) == 0 )
		{
			$smarty->assign('lignes_menu_parent', '<li>*** VIDE ***</li>');
			$smarty->assign('lignes_sous_categories', '');
			return $this->display(__FILE__, $this->name . '.tpl');
		}
		$lignes_menu_parent = '';
		
		$SousCategories = '';
		
		// Sinon on lit les catégories, sous-cat�gories, etc ...
		foreach ( $result as $categorie_parent )
		{
			$NbSousCat = $this->NbSousCategories($categorie_parent ['id_category']);
			
			// Ajout de la cat�gorie
			$lignes_menu_parent .= '<li><a href="index.php?id_category=' . $categorie_parent ['id_category'] . '&controller=category"';
			
			// Si il y a des sous cat�gories, on attribue un code de liaison
			if ( $NbSousCat > '0' )
			{
				$ID_ddsubmenuside = ( $ID_ddsubmenuside + 1 );
				$lignes_menu_parent = $lignes_menu_parent . ' rel="ddsubmenuside' . $ID_ddsubmenuside . '"';
			}
			
			// On termine la ligne en cours
			$lignes_menu_parent = $lignes_menu_parent . '>' . $categorie_parent ['name'] . '</a></li>';
			
			// Si il y a des sous cat�gories, on lit la suite
			if ( $NbSousCat > '0' )
			{
				$SousCategories .= $this->recupSousCategories($categorie_parent ['id_category'], '1', $ID_ddsubmenuside, intval($params ['cookie']->id_lang));
			}
		}
		
		// On copie les lignes dans le template
		$smarty->assign('lignes_menu_parent', $lignes_menu_parent);
		$smarty->assign('lignes_sous_categories', $SousCategories);
		
		return $this->display(__FILE__, $this->name . '.tpl');
	}

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

	function recupSousCategories( $id_parent, $mode, $id_sub, $idlang )
	{
		// $mode=1 si c'est le 1er niveau de sous cat�gorie, sinon $mode=2
		// requ�te � executer
		$sql = 'SELECT c.id_category, cl.name FROM ' . _DB_PREFIX_ . 'category c
			LEFT JOIN ' . _DB_PREFIX_ . 'category_lang cl ON (c.id_category = cl.id_category AND id_lang = ' . $idlang . ')
			WHERE c.active = 1 AND c.id_parent = ' . $id_parent . ' AND level_depth <= ' . Configuration::get('BLOCK_CATEGMDI_MAX_DEPTH') . ' ORDER BY position ASC ';
		// Ex�cution de la requ�te
		$resultat = Db::getInstance()->ExecuteS($sql);
		
		$LignesSousCat = '';

		// TODO Si la requ�te est vide on renvoit vide
		if ( count($resultat) == 0 )
		{
			return '';
		}
		// Pr�paration du texte
		if ( $mode == '1' )
		{
			$LignesSousCat .= '<ul id="ddsubmenuside' . $id_sub . '" class="ddsubmenustyle blackwhite">';
		}
		else
		{
			$LignesSousCat .= '<ul>';
		}
		
		// d($resultat); //FEMME TATA
		
		// Sinon lecture des sous cat�gories et mise en place
		foreach ( $resultat as $res )
		{
			
			// Lecture du nombre de sous cat�gories
			$NbSousCat = $this->NbSousCategories($res ['id_category']);
			
			// index.php?id_category=' . $categorie_parent ['id_category'] . '&controller=category"';
			
			$chaine = '<li><a href="index.php?id_category=%d&controller=category">%s</a>';
			
			$LignesSousCat .= sprintf($chaine, $res ['id_category'], $res ['name']);
			// Si il y a encore un niveau inf�rieur dans le menu
			if ( $NbSousCat > 0 )
			{
				$LignesSousCat .= $this->recupSousCategories($res ['id_category'], '2', '', $idlang);
			}
			// On ferme la ligne
			$LignesSousCat .= '</li>';
		}
		$LignesSousCat .= '</ul>';
		
		return $LignesSousCat;
	}

	function NbSousCategories( $id_parent )
	{
		global $Depth_max;
		$sql = 'SELECT count(*) as Nombre FROM ' . _DB_PREFIX_ . 'category c
					WHERE c.active = 1 AND c.id_parent = ' . $id_parent . ' AND c.level_depth <= ' . Configuration::get('BLOCK_CATEGMDI_MAX_DEPTH');
		$resultat = Db::getInstance()->ExecuteS($sql);
		
		return $resultat [0] ['Nombre'];
	}

}


?>

Un grand merci pour votre aide.

Link to comment
Share on other sites

bonjour, la logique serait que les categories se rangent dans l'ordre des positions

ORDER BY position ASC';
cordialement

 

Oui Alexandre, tu as raison, mais justement c'est ce que je ne comprend pas, je suis bien en ORDER BY position ASC'; et les catégories ne se rangent pas comme je le souhaite, alors que avec le menu d'origine prestashop l'ordre choisi fonctionne parfaitement, malheureusement il n'est pas déroulant :(

Link to comment
Share on other sites

Ce que je ne comprends pas c'est que visiblement ça marchait jusqu'à l'ajout de nouvelles catégories. Sont elles de même rang (pas en sous catégories je veux dire) ? Si ça fonctionne dans le menu prestashop, c'est déjà bon signe... Plus qu'à trouver pourquoi on n'a pas le même résultat et corriger en conséquence.

Link to comment
Share on other sites

Je vais tester ça desuite, et pour répondre a ton message précedent, les nouvelles catégories étaient en fait des sous catégories que j'ai passé en catégories principales.

 

EDIT : j'ai testé la ligne ci dessus ORDER by position+0'; et cela ne change rien :(

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

Ok, le coup des sous catégories devenues catégories est à explorer. Je pense qu'il y a une histoire de niveaux de catégories qui vient semer la pagaille.

 

En regardant la fonction on voit qu'il y a 2 order by position, 1 pour les catégories et 1 pour les sous catégories. essaie de retirer celui qui est dans la fonction qui lit les sous catégories juste pour confirmer que ça change quelque chose. Sais tu aller dans phpmyadmin ? Si oui ce serait pas mal de vérifier le contenu de la table category afin de voir si les positions sont cohérentes et si toutes les catégories ont le même attribut level_depth

 

Edit : j'ai lu aussi par ailleurs que sous Chrome les positions n'étaient pas sauvegardées correctement et que sous internet explorer ça marchait. A tester si tu travaille avec Chrome.

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

Merci pour ton aide Fab, je viens d'allez jeter un oeil dans PHPadmin/ps_category et j'ai effectivement des doublons dans la colone "position" de ma base de donnée, je n'ose pas toucher par peur de faire un bétise, peux tu me donner ton avis, je pensais juste leur attribuer la bonne position, est ce que cela a un risque sur les annonces se trouvant dans ces catégories ?

Link to comment
Share on other sites

Voilà ce à quoi je pensais. Ce système de position semble poser problème à pas mal de monde, j'ai lu par ailleurs que les positions attribuées manuellement dans la table ne corrigent pas le problème car prestashop réécrit les position enregistrées dans l'interface d'administration.

 

Ce serait ma boutique je ferai le test sur une catégorie. Par contre l'histoire du fonctionnement de la mémorisation de la position selon le navigateur est aussi à vérifier.

Link to comment
Share on other sites

J'ai pas eu la patience d'attendre, j'ai fait les changements et apparement cela fonctionne parfaitement, je suis en train de réatribuer les positions aux sous catégories qui etaient également mélangées et ça fonctionne aussi,  :)   merci pour ton aide précieuse, je n'aurais jamais osé tenter ça (y)

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