osclassで地域(ロケーション)を北海道〜沖縄の順に並べ替える方法 【ICT】

みなさんどーも、現在osclassで医療従事者向けのマッチングサイトを作っているりむです。

※現在制作中の『医療従事者のための健診バイトマッチングサイト』はこちらです。

 

さて、本日はタイトルにもあるようにosclassで、地域を北海道〜沖縄のように北から順に並べ替える(ソートする)方法をご紹介しようと思います。

まずはデータベースにアクセス

エックスサーバーの人は、サーバーパネルphpmyadminにログインします。

※ログイン用のユーザーネームとパスワードを忘れた人は、config.phpを開くと、真ん中ぐらいにデータベースにログインするためのユーザーネーム(DB_USER)とパスワード(DB_PASSWORD)が表示されていますので、それをコピペしてログインしてみてください。

 

無事にログインできたら、管理画面内のデータベース編集したいサイトのデータベースとクリックして進んでください。そうするとこんな感じの表が出てくるはずです。

左の一覧から、oc_t_regionを探してクリックします。

そうすると、この画面↓が出てきますので、左のチェックボックスs_slugにチェックを入れて、下の表示という所をクリックします。

こんな感じの表が出てきます↓そしたら下部のすべてチェックするを選んで、右の鉛筆マークをクリックしてください。

初期状態だと、都道府県のスラッグが赤線部のように

北海道 -1、青森-16、岩手-17のようにぐちゃぐちゃになっているはずです。

これを北海道から沖縄まで順番に並べ替えたいので、1〜47番の番号を振りなおしていくわけですが、ここで一つ注意点があります。

それは、この値の書式設定が文字列になっているため、1,2,3…9,10,11と番号を振っていくと、

こーんな感じ↑に、北海道の次に10番目の静岡県がきてしまいます。これを回避するために、01〜47と番号を二桁表記にしてください。これをすると

このように↑きちんと北海道の次に青森県が並びました。

※キーでソートの所をs_slug(昇順)でソートするとこのように並び変わります。

 

以上で下準備は終了です。

次はRegion.phpを編集しよう

まずサーバーにアップロードしたフォルダからこちらのページを探してみてください。

oc-includes/osclass/model/Region.php

Region.phpを開いて上から順にみていくと、割と序盤の方(81行目)にこれがあります。

この $this->dao->orderBy(‘s_name‘, ‘ASC’);

の部分を $this->dao->orderBy(‘s_slug‘, ‘ASC’);

に書き換えます。

これでスラッグを昇順(ASC)ソートに変更できます。

するとどうでしょう、前は 三重県→京都府→佐賀県→… と並んでいたものが、

 

北海道→青森県→岩手県→… と自分が設定したスラッグ順に並べ替えることができました。

めでたし、めでたし

といきたい所ですが、これだけではまだ終わりません。

これだけだと、管理画面上の並び順が変わっただけで、肝心のユーザーさんが使うトップ画面は変わらないんですね〜

ということで、話が長くなってきたので、続きはまた次回にします( ´ ▽ ` )ノ

 

より簡単な方法はこちら(2018/8/20 追記)

①スラッグの編集自体は、管理画面の設定ロケーションからも可能です。都道府県をクリックすればスラッグが編集できます。←これだとDBに直接アクセスしなくて済むのでラクですね。

②続けてoc-includes/osclass/model/Region.phpを開きます。そうすると50行目あたりに

function __construct()
        {
            parent::__construct();
            $this->setTableName(‘t_region’);
            $this->setPrimaryKey(‘pk_i_id’);
            $this->setFields( array(‘pk_i_id’, ‘fk_c_country_code’, ‘s_name’, ‘b_active’, ‘s_slug’) );
        }

これが出てきますので、ここにこれ↓を追加します。

$this->dao->orderBy(‘s_slug’, ‘ASC’);

追加するとこうなりますね↓

function __construct()
        {
            parent::__construct();
            $this->setTableName(‘t_region’);
            $this->setPrimaryKey(‘pk_i_id’);
            $this->dao->orderBy(‘s_slug’, ‘ASC’);
            $this->setFields( array(‘pk_i_id’, ‘fk_c_country_code’, ‘s_name’, ‘b_active’, ‘s_slug’) );
        }

このやり方で、無料のテーマosclasswizardsの検索ボックスは北海道〜沖縄の順にソートできます

都道府県の並びで困っている方はやってみてください( ´ ▽ ` )ノ

 

おすすめ書籍

一からPHPを学びたい方は、こちらの本を読むといいでしょう。超初心者の僕にもわかりやすかったです。


PHPの絵本 第2版 Webアプリ作りが楽しくなる新しい9つの扉