dedecms の重みソート方法が無効な場合はどうすればよいですか?
この記事の例では、Dreamweaver の dedecms による重みソートの無効な使用に対する解決策について説明します。皆さんの参考に共有してください。具体的な方法は次のとおりです:
推奨学習: 梦Weavercms
dedecms5.7 には重みのソートにバグがあります。ここでは、その方法を段階的に説明します。無効な重みの問題を解決します。
関係するファイルは、includetaglibarclist.lib.php ファイルの 570 行目あたりです:
コードは次のとおりです:
if ( $isweight=='y')
このコード行はまったく役に立ちません
コードは次のとおりです:
$orderWeight = list_sort_by($orderWeight,'weight', 'asc');
$orderWeight を取得する前に、ドキュメント テーブルを取得するステートメントが次のとおりであるため、結果の並べ替えに問題があります:
Theコードは次のとおりです:
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
タグを記述するときは次のように記述します:
コードは次のとおりです:
{dede:arclist orderby='weight' typeid='29' isweight='y' limit='4,1' titlelen='100' infolen='100' }
本来の意図は、データsortrank によって取得されたデータベースの場合、isweight='y' を指定すると、取得されたデータ セットが重みに従ってソートされるだけです。
したがって、解決策は非常に簡単です。プログラム ファイルの 330 行目に、重みでソートされた処理ステートメントの行を追加します。
コードは次のとおりです。
else if($orderby =='weight') $ordersql = " order by arc.weight asc";
別の let を分離しましょうリスト タグは重み付けソートをサポートしています:
コードは次のとおりです:
{dede:list pagesize='10' titlelen='50' orderby='weight'} ?[field:textlink/]<br/> {/dede:list}
解決策:
1. ファイル アークを開きます.listview.class.php
2. 次のように
コードを見つけます:
else if($orderby=="lastpost") {
ステートメント (おそらく 609 行目)。この行の前で Enter キーを押して、次のステートメントを挿入します:
コードは次のとおりです:
else if($orderby=="weight") { $ordersql = " order by arc.weight $orderWay"; }
3. 引き続き検索を続けます
コードは次のとおりです
if(ereg('hot|click|lastpost',$orderby))
if(ereg('hot|click|weight|lastpost',$orderby))
{dede:arclist row='10' titlelen='50' orderby='weight'} ?[field:textlink/]<br/> {/dede:arclist}
以上がDedecms で使用される重量ソート方法が機能しない場合はどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。