Maison > Article > Tutoriel CMS > Que faire si la méthode de tri par poids utilisée par Dedecms ne fonctionne pas ?
Que dois-je faire si le tri par poids utilisé par les dedecms DreamWeaver n'est pas valide ?
L'exemple de cet article décrit la solution à l'utilisation non valide du tri par poids par les dedecms de DreamWeaver. Partagez-le avec tout le monde pour votre référence. La méthode spécifique est la suivante :
Apprentissage recommandé : Dreamweaver cms
dedecms5.7 a un bug dans le tri des poids. Ici, je vais vous expliquer étape par étape comment procéder. résoudre le problème de la solution de poids invalide.
Le fichier concerné est le fichier includetaglibarclist.lib.php, autour de la ligne 570 :
Le code est le suivant :
if ( $isweight=='y')
Cette ligne de code est tout simplement inutile,
Le code est le suivant :
$orderWeight = list_sort_by($orderWeight,'weight', 'asc');
Trier les résultats C'est problématique car avant d'obtenir le $orderWeight, l'instruction pour récupérer la table du document est :
Le code est. comme suit :
SELECT arc.*,tp.typedir,tp.typename,tp.corank,tp.isdefault,tp.defaultname,tp.namerule, tp.namerule2,tp.ispart,tp.moresite,tp.siteurl,tp.sitepath FROM `dede_archives` arc LEFT JOIN `dede_arctype` tp ON arc.typeid=tp.id WHERE arc.typeid IN (29) AND arc.arcrank > -1 ORDER BY arc.sortrank DESC
C'est évident Quand on écrit la balise, on écrit :
Le code est le suivant :
{dede:arclist orderby='weight' typeid='29' isweight='y' limit='4,1' titlelen='100' infolen='100' }
L'intention initiale est que les données soient triées. en fonction du poids, et le programme de traitement est basé sur Pour la base de données récupérée par sortrank, spécifier isweight='y' ne sert qu'à trier les ensembles de données récupérés en fonction du poids.
La solution est donc très simple : à la ligne 330 du fichier programme, ajoutez une ligne d'instructions de traitement triées par poids :
Le code est le suivant :
else if($orderby =='weight') $ordersql = " order by arc.weight asc";
Séparons un autre let La balise list prend en charge le tri par poids :
Le code est le suivant :
{dede:list pagesize='10' titlelen='50' orderby='weight'} ?[field:textlink/]<br/> {/dede:list}
Solution :
1 Ouvrez l'arc de fichier. .listview.class.php
2. Recherchez le code
comme suit :
else if($orderby=="lastpost") {
, qui se trouve probablement à la ligne 609. Appuyez sur la touche Entrée devant cela. ligne et insérez la déclaration suivante :
Le code est le suivant :
else if($orderby=="weight") { $ordersql = " order by arc.weight $orderWay"; }
3. Continuez à rechercher le code
comme suit :
if(ereg('hot|click|lastpost',$orderby))
déclaration, modifiée en :
Le code est le suivant :
if(ereg('hot|click|weight|lastpost',$orderby))
Après modification, enregistrez-le Si le tri par poids a été. utilisé dans la cible, générez-le et vous pouvez voir que le tri par poids a été installé dans la liste des documents
4. Appel du modèle :
Le code est le suivant :
{dede:arclist row='10' titlelen='50' orderby='weight'} ?[field:textlink/]<br/> {/dede:arclist}
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!