|
Joomla!でコンテンツを公開するとき、指定のカテゴリーをメニューに追加できます。 表示の仕方は、Blogパターンとテーブルパターンが選べますが、テーブルパターンの時は表示順序を変える機能があります。 表示順序は、デフォルトで’日付’、’タイトル’、’観覧数’、’作者’で並び替えができるようになっています、そこで、 この順序選択に、標準でコンテンツテーブルにあるフィールドで、並び替えができるように変更してみようと思います。 お断り: 当変更は、Joomla!の標準機能を変更しますので、バージョンアップやパッチ適用には 対応しておりません。 また、動作についても無保証ですので、全て自己責任でお願いします。
修正内容としては、ドロップダウンリスト上にソート項目を追加することと、実際にその順番でデータを読み出すよう にすることの2項目となります。 Joomla!インストールディレクトリ直下/components/com_contentにあるcontent.phpに手を加える。 content.phpの457行目ぐらいに if ( $params->get( 'author' ) ) { $order[] = mosHTML::makeOption( 'author', _ORDER_DROPDOWN_AUA ); $order[] = mosHTML::makeOption( 'rauthor', _ORDER_DROPDOWN_AUD ); $check .= 1; } ----- 以下略 ----- という箇所があるので、このすぐ後に (例として、セクションIDでソートできるようにした場合) // add start $order[] = mosHTML::makeOption( 'sectionid', _ORDER_DROPDOWN_SCA ); $order[] = mosHTML::makeOption( 'rsectionid', _ORDER_DROPDOWN_SCD ); // add end を追加します。置き換えではありませんので、気をつけてください。コメントはあってもなくても結構です。 これで、ドロップダウンリスト上にsectionidの昇順と降順を表示するようになります。 ただ、このままだと_ORDER_DROPDOWN_SCA、_ORDER_DROPDOWN_SCDと表示され ちゃいますが、それについては、後で述べます。 さらに1689行目ぐらいの case 'front': $orderby = 'f.ordering'; break; default: $orderby = 'a.ordering'; break;
----- 以下略 ----- を、以下のように変更します。
case 'front': $orderby = 'f.ordering'; break; // add start case 'sectionid': $orderby = 'a.sectionid'; break; case 'rsectionid': $orderby = 'a.sectionid DESC'; break; // add end default: $orderby = 'a.ordering'; break;
この変更で、テーブルから読み込む際に、sectionid昇順と降順のそれぞれで読み込むようにできます。 ここまでで、表示順序を新たに加える変更は完了ですが、上で書いたように、ドロップダウンリスト上の表示が _ORDER_DROPDOWN_SCAとかでは調子悪いので、これをちゃんとした表示にするには、 ランゲージファイルに手を加える必要があります。 ランゲージファイルは、Joomla!インストールディレクトリ直下/language/にあります。 その中から、現在使用中のランゲージファイルに対して修正を加えます。 Joomla!インストールディレクトリ直下/languageにあるjapanese.phpに手を加える。(日本語を使用している場合) 259行目辺りに以下のようなところがあります。
DEFINE('_ORDER_DROPDOWN_DA','日時 昇順'); DEFINE('_ORDER_DROPDOWN_DD','日時 降順'); DEFINE('_ORDER_DROPDOWN_TA','タイトル 昇順'); DEFINE('_ORDER_DROPDOWN_TD','タイトル 降順'); DEFINE('_ORDER_DROPDOWN_HA','観覧数 昇順'); DEFINE('_ORDER_DROPDOWN_HD','観覧数 降順'); DEFINE('_ORDER_DROPDOWN_AUA','作者 昇順'); DEFINE('_ORDER_DROPDOWN_AUD','作者 降順'); DEFINE('_ORDER_DROPDOWN_O','並び替え'); ----- 以下略 ----- これに下のような追加を行います。
DEFINE('_ORDER_DROPDOWN_DA','日時 昇順'); DEFINE('_ORDER_DROPDOWN_DD','日時 降順'); DEFINE('_ORDER_DROPDOWN_TA','タイトル 昇順'); DEFINE('_ORDER_DROPDOWN_TD','タイトル 降順'); DEFINE('_ORDER_DROPDOWN_HA','観覧数 昇順'); DEFINE('_ORDER_DROPDOWN_HD','観覧数 降順'); DEFINE('_ORDER_DROPDOWN_AUA','作者 昇順'); DEFINE('_ORDER_DROPDOWN_AUD','作者 降順'); DEFINE('_ORDER_DROPDOWN_SCA','セクションID 昇順'); DEFINE('_ORDER_DROPDOWN_SCD','セクションID 降順'); DEFINE('_ORDER_DROPDOWN_O','並び替え'); ----- 以下略 ----- これで、ドロップダウンリストの表示も変わるはずです。 これで、新たに表示順序を追加することはできましたが、その項目は表示されていません。 表示順序に追加したものも、アイテムリストに追加する変更については、また別途。
|