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>

関連記事

この記事のハッシュタグに関連する記事が見つかりませんでした。

最新記事

カテゴリー

アーカイブ

ハッシュタグ