ソートについて

「まったく何も分からない・・・」そんなユーザーさんの為のフォーラムです。どんなご質問でもお気軽にどうぞ。
返信
ifeel
パワーユーザー
記事: 32
登録日時: 2006年9月28日(木) 19:40

ソートについて

投稿記事 by ifeel » 2007年1月09日(火) 15:21

いつもお世話になっております。
今回はソートについて質問させてください。

運用後のソート設定の変更は推奨されていないと知りつつも
ソートしたいとの要望が出てしまい、作業をしているところです。
そこで、少し確認なのですが

コード: 全て選択

<schema name="cars" caption="商品" sortkey="num" sortorder="esc" title="name">
	<data name="num" type="int" caption="ソート" />
の用にnumという項目を追加して、数字順に並び替えるような設定にしました。
既に20件ほど登録してあったので、そちらは全部同じ番号で3と入っています。

そこでうまく行かないのが、
ソート設定前からあるエントリも、後から登録したエントリも
登録した後で、num項目を変更しようとしても
(例えば3だったものを4に変更しようとしても)保存した後で、元の値(ここでは「3」)に戻ってしまいます。
(なお、試しにnumのtypeをtextにしてみてもダメでした。)


この原因は、やはり運用後にソートを設定したから、でしょうか?

「とにかく運用後だから」と言うことであれば、最悪、エントリを全て登録し直すのですが

「ソート項目に指定されている項目は修正できない」のか?とも思ったので
質問させて頂きました。

ソート自体はどうしても必要なので、どの辺りからやり直す必要があるか
(エントリを一度全部削除する、など)お教え頂けますでしょうか?

非推奨の事柄で申し訳ありませんが、よろしくお願いします。

webmaster
Site Admin
記事: 1451
登録日時: 2004年12月10日(金) 10:09

Re: ソートについて

投稿記事 by webmaster » 2007年1月09日(火) 21:57

 ifeelさん、いつもお世話になっております。

 事前ソートの機能に関しては、ifeelさんも書かれている通り、運用後のソート設定の
変更に対応しておりません。これは単にCMSDの機能不足によるもので、ご迷惑を
おかけしております。

 ソート設定を変えたからといってデータが壊れるわけではないのですが、新規エントリ
の挿入は、過去のエントリ一覧がそのソート設定に従って並んでいる事を前提に
行われる為、矛盾が生じてしまいます。

 全エントリの再投稿が最もクリーンな方法ですが、ENTRYNAME.index.xml ファイル
を直接エディタで編集する方法も可能です。
 このファイル中のentry要素の順番が、ソートされた順番になりますので、この順序を
変更すればお好きな順序に並べ替え可能です。
 XMLを扱えるタイプのエディタであれば、比較的容易に編集可能かと思います。

 以上、簡単な方法ではない為申し訳ないのですが、何かの参考になれば幸いです。

ifeel
パワーユーザー
記事: 32
登録日時: 2006年9月28日(木) 19:40

ありがとうございます。

投稿記事 by ifeel » 2007年1月10日(水) 10:43

いつも回答いただきありがとうございます。

運用開始前にさんざん打ち合わせはするのですが
どうしても後から何か言う人が現れて・・・。ご面倒お掛けします。

エントリーを再投稿がベスト、と言うことでしたので
テストで別のサーバーにエントリー投稿前のデータをアップして
最初からソート設定がある状態で試してみたのですが、

「数字を入れて保存しても、その番号が消える」

と言う現象が起こってしまいました。
ソート項目自体を、別の項目(例えばname)に変えても同様の現象が起こるので
もしや、ソートとは無関係?!
と思って、ソート用の項目名を

data name="num"
から
data name="numb"
にしたところ、きちんと登録出来るようになりました。

「num」はプログラムで使用していそうな名前なのでそのせいだったのかもしれません。どうもお騒がせいたしました :oops:


どちらにしろ、過去のエントリのソートをしないと、矛盾が生じるようなので
本番の方のエントリの修正をこれからやろうと思います。

登録自体を自分でやらない(やれない)場合もあるので、
ENTRYNAME.index.xml
の方法を教えていただき、とても助かりました。
いつもありがとうございます。

返信