• 虹色ミツバチ
  • freoカスタマイズメモ、テンプレート・プラグイン配布/officeTIPS
検索プラグイン
虹色ミツバチ

> Entry >freo>freoTips>オプション系TIPS> 小説サイトで使うと便利なオプション登録例(2)

【freo】【freoTips】【オプション系TIPS】小説サイトで使うと便利なオプション登録例(2)

小説サイトで使用すると便利なオプションの設置例です。

freoで小説を展示するとき、短編小説なら1作品1ページで展示できますが、長編小説の場合、何ページにもわたって一つの作品を展示したいことがあります。
その場合、作品ページ(親)の子ページに作品ページ(子)を作ると、ページ移動プラグインで前後移動ができるので便利です。
(freo公式のページの前後移動についてfreoを小説サイトやイラストサイトとして使用するときのページID設定例参照。)

小説の長さオプション

短編小説なのか、長編小説なのかを設定するオプションの設定内容と利用方法。

登録例
オプションID novel_length
オプション名 小説の長さ
利用対象 ページ
種類 ラジオボタン
必須 任意
説明 短編小説の場合は短編小説に、長編小説の場合は長編小説を選択する。
初期値 短編,長編
(※ここでは分かりやすくするため項目を『,』で区切っていますが、実際のオプション登録画面では、項目と項目は『,』ではなく改行で区切って下さい。)
並び順 (環境に合わせて入力)
検証 なし
利用方法

短編小説の場合は作品ページ(子)がないので、その作品ページに登録する。
長編小説の場合は作品ページ(子)ではなく、作品ページ(親)で設定する。

小説の連載状況オプション

連載小説が連載中なのか、完結しているのかを設定するオプションの設定内容と利用方法。

登録例
オプションID novel_end
オプション名 小説の連載状況
利用対象 ページ
種類 ラジオボタン
必須 任意
説明 小説が「長編小説」であるとき、連載中の場合は「連載中」を、完結している場合は「完結」を選択する。
初期値 連載中,完結
(※ここでは分かりやすくするため項目を『,』で区切っていますが、実際のオプション登録画面では、項目と項目は『,』ではなく改行で区切って下さい。)
並び順 (環境に合わせて入力)
検証 なし
利用方法

長編小説の場合にのみ選択する。
作品ページ(親)で設定する。

作品ページ(子)のテンプレートの編集例

編集するテンプレート)
作品ページ(子)が読み込むテンプレートを編集する。
通常は[templates/internals/page/default.html]。
[templates/internals/page/novel.html]など、小説ページ用の別のテンプレートがある場合はそちらのテンプレートを編集する。

(1)小説の長さによってタイトルの表示を変える

作品ページ(親)の小説の長さオプションの長編小説にチェックが入っていた場合は作品ページ(子)のページのタイトルの前に親ページのタイトルを記載する。
編集箇所:ページタイトル表示部分(デフォルトだと<h5>{$page.title}</h5>の部分)を以下のとおり変更する。

<!--{if $plugin_page_parent_associate.option.novel_length == '長編'}-->
    <h5>{$plugin_page_parent.title}|{$page.title}</h5>
<!--{else}-->
    <h5>{$page.title}</h5>
<!--{/if}-->

解説

<!--{もし親ページに登録されているオプションID「novel_length」の内容が'長編'だったらここから}-->
    <h5>親ページのタイトル|ページタイトル</h5>
<!--{そうじゃなければ}-->
    <h5>ページタイトル</h5>
<!--{もし親ページに登録されているオプションID「novel_length」の内容が'長編'だったらここまで}-->
(2)小説の連載状況によってページ本文の末尾に「(続く)」や「(終わり)」などの文字列を表示する。

作品ページ(親)が短編小説であった場合はページの本文の終わりに「(終わり)」と表示し、作品ページ(親)が連載小説で、かつ小説の連載状況が完結の場合は作品ページ(子)の本文の終わりに「(終わり)」という文字列を表示し、また、作品ページ(親)の小説の連載状況が連載中である(または未入力である)など、完結でない場合は、作品ページ(子)の本文の終わりに「(続く)」と表示する。

編集箇所:ページテキスト表示部分の終わり(<!--{if $page_text.excerpt}-->~省略~<!--{/if}--><!--{if $page_text.more}-->~省略~<!--{/if}-->の直後)に以下の記述を加える。

<!--{if $page_associate.option.novel_length == '短編'}-->
    (終わり)
<!--{elseif $plugin_page_parent_associate.option.novel_length == '長編'}-->
   <!--{if $plugin_page_parent_associate.option.novel_end == '完結'}-->
      <!--{if $plugin_page_link_next.id == ''}-->
         (終わり)
      <!--{else}-->
         (続く)
      <!--{/if}-->
   <!--{else}-->
    (続く)
   <!--{/if}-->
<!--{/if}-->

解説

<!--{もしページのオプションID「novel_length」の内容が'短編'だったらここから}-->
    (終わり)
<!--{または親ページのオプションID「novel_length」の内容が'長編'だったら}-->
   <!--{もし親ページのオプションID「novel_end」の内容が'完結'だったらここから}-->
      <!--{もし次のページがなければ=その階層の最後のページだったらここから}-->
         (終わり)
      <!--{そうじゃなければ}-->
         (続く)
      <!--{もし次のページがなければ=その階層の最後のページだったらここまで}-->
   <!--{そうじゃなければ}-->
      (続く)
   <!--{もし親ページのオプションID「novel_end」の内容が'完結'だったらここから}-->
<!--{もしページのオプションID「novel_length」の内容が'短編'だったらここまで}-->

参考リンク:
freo公式サイト:オプションを個別に表示する
freo公式サイト:エントリー・ページによって利用するオプションを切り替える
32877:オプションに登録されている内容によって表示を切り替える方法
32877:親ページのオプションを取得する方法
32877:ある階層のページ群の最初のページと最後のページになにかを表示させる方法

ページ移動

関連記事

ページ上部へ