a-blog cmsで別カテゴリーのカスタムフィールドを利用する
a-blog cmsでAカテゴリーのエントリーにカスタムフィールドを使ってアップしたPDFのファイル一覧の中から、別のBカテゴリーのエントリーで必要なPDFだけ選択して利用する、という機能が必要だったので少し考えてみた。a-blog cmsの通常の方法でやるとselectedが上手く効かなかったので、とりあえずjQueryで対処してみる。
もっと他の方法や公式な方法があるのかもしれないけど、「ablog cms+管理画面に自作jQuery」に興味があったので、やってみた感じが強いです。発展させれば、ぷちリレーションな感じにも使えるのかな???一応動いているけど、簡単なチェックしかしていないので、もし不具合があったらごめんなさい。
例)カテゴリーを下記の2つとして
・Aカテゴリー(商品用PDFの一覧ページ/カスタムフィールド名:{pdffile})
・Bカテゴリー(商品の一覧ページ/カスタムフィールド:{productsCatalog})
Aカテゴリーのカスタムフィールドはinput、Bカテゴリーのカスタムフィールドはselectで実装します。AカテゴリーにアップされたPDFを、Bカテゴリーのエントリー編集画面でリストからエントリー名で選択出来る様にする為に、Aカテゴリー用のEntry_ListのモジュールID(adminProducts_catalogList)を作成。
ちなみにAカテゴリー用のモジュールID内では、Bカテゴリーのカスタムフィールド{productsCatalog}が読み込めなかったので、今回はあらかじめモジュールIDの外にpタグでコピーして対処しました。(これはjQueryで読めればなんでも良い)
詳細は下記で。jsとBカテゴリーのエントリー編集画面(admin/entry/edit.html)の一部です。
※AカテゴリーのPDFアップ用のカスタムフィールドはここを参照してください。
/*jsの記述*/ $(function(){ $('#catalogPdfList option').each(function(){ //入力済みの値 setPdf = $('#setPdf').text(); //選択した値 catalogSelected = $(this).val(); //入力済みの値と同じoptionをselectedに変更 if(catalogSelected == setPdf){ $('#catalogPdfList').val(catalogSelected); } }); }); /*htmlの記述*/ <tr> <th>カタログPDF</th> <td> <!-- Bカテゴリーで入力済みの値を仮にセット --> <p id="setPdf" style="display:none;">{productsCatalog}</p> <!-- AカテゴリーのPDF一覧用モジュールID --> <!-- BEGIN_MODULE Entry_List id="adminProducts_catalogList" --> <select name="productsCatalog" id="catalogPdfList"> <!-- AカテゴリーのエントリータイトルとPDFのパスをセット --> <!-- BEGIN entry:loop --> <option value="%{HTTP_ARCHIVES_DIR}{pdffile@path}{productsCatalog}">{title}</option> <!-- END entry:loop --> </select> <input type="hidden" name="field[]" value="productsCatalog" /> <!-- END_MODULE Entry_List --> </td> </tr>