SOY CMSのカスタムフィールドに「ラベル」の追加を希望します 投稿する

投稿者:polka  投稿日時:2021-05-14 09:00:52
いつもありがとうございます。

SOY CMSのカスタムフィールドアドバンスドで「記事」がありますが、
「ラベル」で指定する機能は実現可能でしょうか?

・個別の記事を指定する場合は「記事」
・複数の記事をまとめて指定する場合は「ラベル」
としたいです。

ご検討よろしくお願い致します。
投稿者:齋藤毅  投稿日時:2021-05-14 10:11:41
複数の記事をまとめて指定する場合は「ラベル」
ラベルの指定自体は難しくはないですが、ラベルに紐付いた記事の並び順をどうするか?でしょうか。
標準機能にありますラベル毎の記事の表示順をそのまま採用するか?単純に作成日順になるか?等がありますが、その設定を記事投稿時のラベルの指定に持たせるとなると少々工夫が必要になります。
投稿者:polka  投稿日時:2021-05-14 10:45:23
早速のご回答ありがとうございます。


標準機能にありますラベル毎の記事の表示順をそのまま採用するか?単純に作成日順になるか?等がありますが、

標準機能と同じように並び順と作成順(昇順・降順)が選べるようになると、いろいろなことができそうです。

もし可能であるなら、「記事」フィールドと同じく、
各記事のパーツを個別に呼び出せるように(カスタムフィールドのIDがhogeとして)
cms:id="hoge_title"
cms:id="hoge_content"(機能はcms:id="hoge"と同じ)
cms:id="hoge_more"
cms:id="hoge_create_date"
cms:id="hoge_entry_id"
が使えるようになると、うれしいです。
投稿者:齋藤毅  投稿日時:2021-05-14 11:06:14
ラベルフィールドはおそらくを<!-- cms:id="hoge_entry_list" -->中に書くような形になりそうですので、その中で、
cms:id="title"
cms:id="content"
cms:id="more"
cms:id="create_date"
cms:id="entry_id"
上記のタグを使用する形式になるかもしれません。
投稿者:polka  投稿日時:2021-05-14 11:27:07
上記のタグを使用する形式になるかもしれません。

できれば「記事フィールド」と同じ記法の方が忘れずにすむかな? という程度で、全く問題ないと思います。
投稿者:齋藤毅  投稿日時:2021-05-15 04:27:11
ラベルフィールドはおそらくを<!-- cms:id="hoge_entry_list" -->中に書くような形になりそうです
試しに上記のようにコードを書いてみたのですが、メモリを過剰に使用してしまうらしく、ラベルフィールドの実装が難しい事が分かりました。

難しい理由を挙げますと、カスタムフィールドは表示中のページのすべての記事を出力するブロックに一律反映されるという仕様がありまして、ラベルフィールドの値を持っていない記事であっても、<!-- cms:id="hoge_entry_list" -->のタグの準備はしなければなりません。

今までは一つのタグにつき値は一つでしたが、hoge_entry_listの場合は、その中にいくつかタグが一緒にメモリに格納される事になり、タグが膨大に追加され許容範囲を超えることが分かりました。

ブログの記事詳細ページであれば大丈夫ではないか?という事が挙がりますが、記事詳細ページでもb_block:id="recent_entry_list"やブロックを使用する可能性があり、それらのタグではhoge_entry_listを使用しないという事ができません。


他に実装する手としまして、別のプラグインを設けて、cms:moduleを利用する手があります。
cms:moduleを使用する時の注意点として、b_block:id="entry"の外側に書かなければなりませんので、デザイン編集で少々制約が入る事になります。
投稿者:polka  投稿日時:2021-05-15 08:23:12
試しに上記のようにコードを書いてみたのですが、メモリを過剰に使用してしまうらしく、ラベルフィールドの実装が難しい事が分かりました。 
早速トライしていただいて感謝です。厳しそうですね。

他に実装する手としまして、別のプラグインを設けて、cms:moduleを利用する手があります。 
サムネイルプラグインのように、記事管理画面(編集画面)で操作ができる(この場合、ラベルを選べる)のならいいですね。
仮に、cms:moduleとして、
・テンプレート内に複数のcms:moduleを仕込んでおくことは可能でしょうか?
・モジュール内で、記事のありなしを判定する「if:id="hoge:has_entry"」は使えますでしょうか?

cms:moduleを使用する時の注意点として、b_block:id="entry"の外側に書かなければなりませんので、デザイン編集で少々制約が入る事になります。
b_block:id="entry"の中に入れ子にできないとすると、あまりよろしくでしょうけれど、cms:moduleの前後で、重複の「b_block:id="entry*"」でブロックを区分けするなどの方法をとると思います。

ともあれ、込み入ったリクエストになってきました。
すでにいろいろと調査していただいていますし、
これ以上のご対応が無償では厳しいと思われる場合はメールでご連絡ください。



投稿者:齋藤毅  投稿日時:2021-05-15 11:55:10
・テンプレート内に複数のcms:moduleを仕込んでおくことは可能でしょうか?
・モジュール内で、記事のありなしを判定する「if:id="hoge:has_entry"」は使えますでしょうか?
モジュールは自由度が高いので、上記の内容を組み込む事は問題ないです。
前者の方はcms:module="***_1"やcms:module="***_2"といったモジュールをどのように量産するか?で複数のモジュールを仕込む事が可能になります。
投稿者:polka  投稿日時:2021-05-15 12:05:26
モジュールは自由度が高いので、上記の内容を組み込む事は問題ないです。
前者の方はcms:module="***_1"やcms:module="***_2"といったモジュールをどのように量産するか?で複数のモジュールを仕込む事が可能になります。
すばらしいですね。よろしくお願い致します!
投稿者:齋藤毅  投稿日時:2021-05-19 11:02:19
試作段階ですが、ラベルフィールドプラグインというものを追加しました。
下記のページで同梱されているパッケージをダウンロードできます。
SOY CMSを使ってみよう

現時点では記事毎にラベルの指定のみしかできず、公開側で出力の際に件数の制御はできません。
並び順の変更もできません。

拡張しやすいようにプラグインを作成していますので、用途に合わせて機能を追加していきます。

cms:module="***_1"やcms:module="***_2"
現段階では隠し機能ですが、上記の機能は使用できます。
投稿者:polka  投稿日時:2021-05-19 11:08:08
早速試してみます。
ありがとうございます!
ログインして投稿する