2011年4月21日木曜日

weblinks モジュールのソート条件について

今日のお題は、XOOPS Cube の weblinks モジュールについてです。

viewcat.php でカテゴリー内のリスト一覧が表示されますが、このリストの並び替えに地域を付け加えようという主旨です。

ページナビゲーションに地域(市区分と住所)での並び替えを加えると、単純に「カンマ区切りで昇順ね」とお願いしても無視されます。orz

class/weblinks_pagenavi_menu.php
function weblinks_pagenavi_menu()
{
    $this->happy_linux_pagenavi();

    $this->add_sort(_WLS_ADDRESSATOZ, 'city,addr',        'ASC');
    $this->add_sort(_WLS_ADDRESSZTOA, 'city,addr',        'DESC');
・・・以下略

で掘り出したコードはこちら。カンマ区切りが有れば$sort_arrの配列に律儀に項目をスタックして行きます。これでカンマ区切りで複数項目を並び替え指定できる様になりました。コメントアウトしている箇所が元ソースでその下のif文が追加となります。

class/weblinks_cat_view_handler.php
function &get_lid_array_by_cid_sort($cid, $sort, $limit=0, $start=0)
{
    $sort_arr = array();

    if ( $this->_conf['recommend_pri'] == 2 ){
        $sort_arr[] = 'recommend DESC';
    }

    if ( $this->_conf['mutual_pri'] == 2 ){
        $sort_arr[] = 'mutual DESC';
    }
    if ( isset($sort['sort']) && isset($sort['order']) ){
        //$sort_arr[] = $sort['sort'].' '.$sort['order'];
        if ( strpos($sort['sort'],",") === false ){
            $sort_arr[] = $sort['sort'].' '.$sort['order'];
        }else{
            $sortnames = explode(",",$sort['sort']);
            foreach ($sortnames as $s){
                $sort_arr[] = $s.' '.$sort['order'];
            }
        }
    }else{
        $sort_arr[] = 'lid ASC';
    }
    $orderby = implode(',', $sort_arr);
    $lid_arr =& $this->_link_catlink_handler->get_lid_array_by_cid_orderby($cid, $orderby, $limit, $start);
    return $lid_arr;
}

0 件のコメント:

コメントを投稿