PowerCMS™
2025年1月1日購入分よりライセンスの価格を改定いたします。
[ブログ] PowerCMS 6 でのアップデートまとめ を追加しました。
[よくあるご質問] システムログに「タスクを実行するために必要なロックを獲得できませんでした」というログが残っている を追加しました。
[よくあるご質問] 特定のシステムログに絞って確認できますか? を追加しました。

PowerCMS ブログ

ホーム > PowerCMS ブログ > 設定・管理画面カスタマイズ > グループ編集画面でアイテムをフィルタできるようにする

2019年11月05日

グループ編集画面でアイテムをフィルタできるようにする

PowerCMS では記事やウェブページ、カテゴリやフォルダ等のオブジェクトをグループ化する機能があり表示順等を管理することができます。

今回は PowerCMS 5 の管理画面カスタマイズ機能を利用してグループ編集画面に簡易的なフィルタができる「検索窓」を設置する方法を紹介させて頂きます。

実装イメージ

グループ編集画面の左カラム(選択可能なアイテムの一覧)の上部にフィルタ用の検索窓を追加します。

グループ編集画面の記事一覧側に検索窓を追加しフィルタリングを可能にする

※ 右カラムは選択済みのアイテムの選択状態や並び順に影響するため検索窓は設置しません。
※ 検索対象は飽くまで画面上に表示されている文字列のみです。

実装手順

システム管理画面の左メニュー「設定」→「PowerCMS」で設定画面へ遷移します。
「管理画面マルチデバイス設定」の「カスタマイズ」欄に下記を入力します。


<script>
jQuery(function($){
    $('.listing#item-left').each(function(){
        var $block   = $(this);
        var $header  = $block.find('.object-listing-header,.entry-listing-header');
        var $content = $block.find('.object-listing-content,.entry-listing-content');
        var $uls     = $content.find('ul');
        
        $uls.each(function(){
            var $ul_temp = $('<ul>').hide().appendTo('body');
            $(this).data('$ul_temp',$ul_temp);
        });
        
        var $wrap = $('<div>')
            .addClass('object-search-label')
            .css({
                'padding': '0px 9px 9px 9px',
                'background': '#f4f4f4'
            })
            .appendTo($header);
        
        var $search = $('<input>')
            .attr({
                'type': 'text',
                'placeholder': '検索'
            })
            .addClass('text full')
            .appendTo($wrap)
            .on('keyup',function(){
                var val = this.value;
                
                $uls.each(function(){
                    var $ul = $(this);
                    var $ul_temp = $ul.data('$ul_temp');
                    $ul_temp.find('li').appendTo($ul);
                    
                    if(val != ''){
                        $ul.find('li')
                            .not(':contains("' + val + '")')
                            .appendTo($ul_temp);
                    }
                });
            });
    });
});
</script>

管理画面URLパラメータによる分岐を記述していないため管理画面で利用されるグループ編集画面すべてに反映されます。
(記事・ウェブページ・アイテム・カテゴリ・フォルダ・フォーム・カスタム項目等)


カテゴリー
設定・管理画面カスタマイズ
投稿者
Fujimoto

Recent Entries