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

> Entry

見出しを使ってドキュメント内の任意の場所にジャンプする方法

Word2010以降で活用できるナビゲーションウィンドウの便利な利用方法をご紹介します。

ナビゲーションウィンドウの表示方法

ナビゲーションウィンドウは、「表示」タブ「ナビゲーションウィンドウ」チェックボックスをチェックすると表示されます。

navigation01.jpg

ナビゲーションウィンドウには、ドキュメント内の「見出し」が表示されます。
見出しをクリックすると、ドキュメント内の見出し個所までジャンプすることができます。

見出しの設定方法

ドキュメント内の文章を見出しとして設定するには、見出しにしたい文章を選択して、「ホーム」タブ「スタイル」から設定したい見出しを選択し、クリックしてください。
見出しが作成されると、ナビゲーションウィンドウ内に表示され、クリックで見出し個所に移動することができるようになります。

2016071301.jpg

スタイルは、「表題」「見出し1」「見出し2」「見出し3」など様々な種類があります。

navigation02.png

見出し1以下に見出し2などの小見出しを作成すると、ナビゲーションウィンドウ内の見出し左部に三角マークが表示されます。
このマークをクリックすると、小見出しを折りたたむことができます。

navigation03.png

見出しのスタイルの変更方法

見出しは、フォント・サイズ・装飾(太字・斜字など)・背景色・上部または下部の余白・インデントなど様々なスタイルを設定して装飾できます。
見出しのスタイルは、保存して他の個所の同じ見出しに活用できます。

見出しのスタイルをドキュメント上で表示したら、「ホーム」タブ「スタイル」内のスタイルを保存したい見出し上で右クリックしてください。
「選択個所と一致するように見出し1を更新する」をクリックすると、選択個所のスタイルが見出しの書式として保存されます。

2016071302.jpg

 

見出しのスタイルを標準と同じにしておけば、見出しに見えない個所でも任意のジャンプ先としてナビゲーションウィンドウ上に表示することができます。

2016071303.jpg

また、見出しとして登録している文章を白文字にしておけば、印刷上には表示されない個所に任意にジャンプでき、また、わかりやすい名前をナビゲーションウィンドウ上に表示できます。

2016071304.jpg

続きを読む

【スケジュール編(01)】freoで予定を管理するプラグイン

当サイトでは、freoで予定を管理できるプラグインを配布しています。
日時・タイトル・場所などを登録すると、各種予定を公開・管理することができます。

予定管理に利用できそうな公式プラグイン

タスク登録プラグイン

freo公式サイトで配布されている予定管理に利用できそうなプラグインは、「タスク登録プラグイン」があります。
タスク登録プラグインは、管理画面上でTODOリストを作成・編集・管理できるプラグインです。

予定とは少し違うかもしれませんが、「今後すべきこと」を「TODOリスト」として登録することができます。
カテゴリーで分類でき、未達成タスクを表示する他、完了済みのタスクを表示することもできます。

タスク登録プラグインは管理画面で利用するプラグインなので、管理者のみしか閲覧することができません
サイトへの来訪者に予定を伝えるには、その他プラグインを利用する必要があります。

ブログパーツ管理プラグイン

ブログパーツプラグインは、任意のテキストをブログパーツとして登録し表示できるプラグインです。

例えば、ID「schedule」として登録したブログパーツでHTMLエディタを利用できるように改造し、

今後の予定
  • 01/01 元旦
  • 02/14 バレンタインデー
  • 03/03 ひなまつり

などのように記入すれば、ブログパーツとして予定を表示することができます。
ブログパーツはデフォルト画面・エントリー画面など全ての画面で利用できますし、特定のブログパーツを個別に表示すれば、管理画面上で予定内容を随時更新・表示できます。

予定管理に利用できる有志プラグイン

当サイトでは、予定管理に利用できるプラグインを下記の2種類作成・配布しています。

  • スケジュールプラグイン
  • 同人イベントプラグイン

以上のプラグインにはそれぞれカレンダー表示プラグインなど追加で利用できるプラグインもありますので、用途に応じて利用してください。

それぞれの特徴は下記の通りです。

スケジュールプラグイン

schedule01.png
配布ページ・サンプルはこちら

スケジュールプラグインは、開始日時と終了日時がある予定を管理するプラグインです。
カテゴリー・タグで分類できます。
紹介用の画像やテキストをつけられます。
カレンダー表示・アーカイブ表示・タグクラウド表示プラグインの他、出欠登録などに利用できる「スケジュールレスポンスプラグイン」も配布しています。

 

同人イベントプラグイン

event.png
配布ページ・サンプルはこちら

同人イベントプラグインは、同人誌即売会への参加予定を管理するプラグインです。
「開催日」「イベント名」「スペースNO」の他、同人誌即売会ならではの、「ジャンル」「カップリング」などを登録できます。
カテゴリー・タグで分類できます。
紹介用の画像やテキストをつけられます。
アーカイブ表示・タグクラウド表示プラグインを配布しています。

続きを読む

【基本編(13)】テンプレートで利用できる変数を調べよう

データベースに登録されている情報を表示するには、テンプレートに変数を記述しなければなりません。
[管理画面→エントリー→エントリー登録]などで表示される本文エディタ内に変数を入力しても、基本的にはデータベースに登録されている情報を表示することはできません。
オプションに登録した内容など、一部本文エディタ内で利用できる変数もあります。)

どの画面に表示したいのか、なにを表示したいのかが決まったら、

どの画面に表示したいのか → 画面のURLから編集すべきテンプレートを調べましょう。
なにを表示したいのか → データベースの値を表示するのに利用するPHPを確認して変数を調べましょう

画面のURLから編集すべきテンプレートを調べよう

前回「freoの画面についての考え方」で説明したとおり、読み込まれるテンプレートはmodeとworkによって決められています。
表示したい画面のURLにmodeとworkが割り当てられているので、それを参考に、テンプレートを探してみます。

freoの基本的な機能で表示する画面のテンプレート

下記の画面はfreoの基本的な機能を利用して表示される画面です。

  • 管理画面(freo/index.php/admin)
  • カテゴリー画面(freo/index.php/category)
  • コメント投稿確認画面(freo/index.php/comment/preview)
  • デフォルト画面(freo/index.php)
  • エントリー画面(freo/index.php/entry)
  • フィード画面(freo/index.php/feed)
  • ファイル画面(freo/index.php/file)
  • フィルター画面(freo/index.php/filter)
  • インフォメーション画面(freo/index.php/information)
  • ログイン画面(freo/index.php/login)
  • ページ画面(freo/index.php/page)
  • プロフィール画面(freo/index.php/profile)
  • ユーザー登録画面(freo/index.php/regist)
  • パスワード再発行画面(freo/index.php/reissue)
  • トラックバック画面(freo/index.php/trackback)
  • ユーザー画面(freo/index.php/user)
  • エントリー個別表示画面(freo/index.php/view/エントリーID)

上記画面のテンプレートは、[freo/templates/internals]フォルダに格納されています。
[internals]フォルダ内に各画面のmodeの名前のフォルダが保存されていますので、その中にある[work]のファイル名のテンプレートを探して下さい。
([work]の名前のテンプレートがない場合は、[default.html]が適用されます。)

プラグインを追加したことで表示できるようになった画面のテンプレート

freoでは、公式・非公式で様々なプラグインが配布されています。
プラグインによっては、専用の画面を表示できるものがあります。
(例:ショッピングカートプラグインなど)

プラグイン専用画面のテンプレートは、[freo/templates/plugins]フォルダに格納されています。
[plugins]フォルダ内に各画面のmodeの名前のフォルダが保存されていますので、その中にある[work]のファイル名のテンプレートを探して下さい。
([work]の名前のテンプレートがない場合は、[default.html]が適用されます。)

データベースの値を表示するのに利用するPHPを確認して変数を調べよう

編集すべきテンプレートがわかったら、早速変数を書いてみましょう。
既にテンプレートで利用されている変数は、同じテンプレート内であればコピー&ペーストで利用可能です。

値を表示するのに利用する変数がわからない場合はPHPを確認して変数を調べてみましょう。
当サイトでは変数一覧をまとめていますので、そちらをご確認いただいても良いと思います。
また、freoまとめWIKIにも変数をまとめたページがあるので、そちらもご確認ください。

細かいことは省いてざっくりと説明してしまいます。

全てのテンプレートで利用できる変数

全てのテンプレートで利用できる基本的な変数は、[freo/libs/freo/common.php]で定義されています。
[common.php]はfreoの機関となる機能を定義しているPHPファイルなのですが、他のPHPとくらべてどこが変数を定義している箇所なのかは初心者にはわかりづらいかもしれません。

freoまとめWIKIに全てのテンプレートで利用できる変数一覧があるので、そちらをご確認ください。

表示している画面由来の変数

表示している画面で利用できる基本的な変数は、表示している画面のPHPで確認することができます。
プラグインを追加することで、プラグイン由来の変数を追加することもできます。

たとえば、デフォルト画面では、デフォルト画面由来の変数の他、デフォルト画面でも利用できると設定されたプラグイン由来の変数も利用できるということです。

まずは、画面由来の変数の設定を確認する方法について解説します。

freoの基本的な機能を利用して表示される画面の場合

下記の画面はfreoの基本的な機能を利用して表示される画面です。

  • 管理画面(freo/index.php/admin)
  • カテゴリー画面(freo/index.php/category)
  • コメント投稿確認画面(freo/index.php/comment/preview)
  • デフォルト画面(freo/index.php)
  • エントリー画面(freo/index.php/entry)
  • フィード画面(freo/index.php/feed)
  • ファイル画面(freo/index.php/file)
  • フィルター画面(freo/index.php/filter)
  • インフォメーション画面(freo/index.php/information)
  • ログイン画面(freo/index.php/login)
  • ページ画面(freo/index.php/page)
  • プロフィール画面(freo/index.php/profile)
  • ユーザー登録画面(freo/index.php/regist)
  • パスワード再発行画面(freo/index.php/reissue)
  • トラックバック画面(freo/index.php/trackback)
  • ユーザー画面(freo/index.php/user)
  • エントリー個別表示画面(freo/index.php/view/エントリーID)

上記画面のテンプレートは、[freo/libs/freo/internals]フォルダに格納されています。
[internals]フォルダ内に各画面のmodeの名前のフォルダが保存されていますので、その中にある[work]のファイル名のPHPを探して下さい。
([work]の名前のテンプレートがない場合は、[default.php]が適用されます。)

freoのプラグインを利用して表示される画面の場合

上記以外のmodeのPHPは、[freo/libs/freo/plugins]フォルダに格納されています。
[plugins]フォルダ内のpage.プラグインID.phpを探して下さい。

変数を設定している個所

どのPHPを見ればいいのかがわかったら、次は変数を設定している個所を探します。
PHPをエディタで開くと、最下部に、

    //データ割当
    $freo->smarty->assign(array(
        'テンプレートで利用できる配列名' => PHP内の配列,
        'テンプレートで利用できる配列名' => PHP内の配列,
        'テンプレートで利用できる配列名' => PHP内の配列,
        'テンプレートで利用できる配列名' => PHP内の配列,
    ));

のように書かれている個所があると思います。
上記が、テンプレートで利用できる変数を格納した配列を設定している個所です。

ワンポイント

プラグイン画面のPHP(page.プラグインID.php)の場合、page.プラグインID.php内に、workごとの機能がそれぞれ記載されています。
プラグイン画面のPHPでは、[function_freo_plugin_プラグインID_workの値(){}]個所を調べて下さい。
たとえば、ショッピングカートプラグイン画面(freo/index.php/catalog)で表示できる変数を調べたい場合は、page.catalog.phpの「function freo_page_catalog_default(){}」内を調べてください。

たとえば、デフォルト画面の場合は[freo/libs/freo/internals/default/default.php]の552~585行目

    //データ割当
    $freo->smarty->assign(array(
        'token'                       => freo_token('create'),
        'entries'                     => $entries,
        'entry_associates'            => $entry_associates,
        'entry_filters'               => $entry_filters,
        'entry_securities'            => $entry_securities,
        'entry_tags'                  => $entry_tags,
        'entry_files'                 => $entry_files,
        'entry_thumbnails'            => $entry_thumbnails,
        'entry_images'                => $entry_images,
        'entry_texts'                 => $entry_texts,
        'entry_count'                 => $entry_count,
        'entry_page'                  => $entry_page,
        'information'                 => $information,
        'information_text'            => $information_text,
        'information_entry'           => $information_entry,
        'information_entry_associate' => $information_entry_associate,
        'information_entry_filter'    => $information_entry_filter,
        'information_entry_security'  => $information_entry_security,
        'information_entry_tags'      => $information_entry_tags,
        'information_entry_file'      => $information_entry_file,
        'information_entry_thumbnail' => $information_entry_thumbnail,
        'information_entry_image'     => $information_entry_image,
        'information_entry_text'      => $information_entry_text,
        'information_page'            => $information_page,
        'information_page_associate'  => $information_page_associate,
        'information_page_security'   => $information_page_security,
        'information_page_tags'       => $information_page_tags,
        'information_page_file'       => $information_page_file,
        'information_page_thumbnail'  => $information_page_thumbnail,
        'information_page_image'      => $information_page_image,
        'information_page_text'       => $information_page_text
    ));

の部分です。
上記で、自分が表示したいと思っている変数が格納されているだろう配列の見当をつけることができます。
左辺の配列にどのような値が格納されているかは、PHP内を右辺の文字列で検索すると書いてあります。

たとえば、上記リストの内[$entries]を検索して、一番最初に[$entries]が登場する部分の近辺を見てみると、

    //エントリー取得
    $stmt = $freo->pdo->prepare('SELECT * FROM ' . FREO_DATABASE_PREFIX . 'entries WHERE approved = \'yes\' AND (status = \'publish\' OR (status = \'future\' AND datetime <= :now1)) AND (close IS NULL OR close >= :now2) ' . $condition . ' ORDER BY' . $order . ' LIMIT :start, :limit');
    $stmt->bindValue(':now1',  date('Y-m-d H:i:s'));
    $stmt->bindValue(':now2',  date('Y-m-d H:i:s'));
    $stmt->bindValue(':start', intval($freo->config['view']['entry_limit']) * ($_GET['page'] - 1), PDO::PARAM_INT);
    $stmt->bindValue(':limit', intval($freo->config['view']['entry_limit']), PDO::PARAM_INT);
    $flag = $stmt->execute();
    if (!$flag) {
        freo_error($stmt->errorInfo());
    }

    $entries = array();
    while ($data = $stmt->fetch(PDO::FETCH_ASSOC)) {
        $entries[$data['id']] = $data;
    }

と書かれています。
HTMLではなくPHPなのでわかりにくいかもしれませんが、これは、

    //エントリー取得
    $stmt = データベースの情報を取得する
            対象:データベース名のentriesテーブル
            条件: approvedが'yes'でありかつ(statusが'publish'または(statusが'future'でありかつdatetimeが:now1以下である))でありかつ(closeが未入力またはcloseが:now2以上) + $condition(このソースよりも上で定義されている検索条件)
表示順:$order(このソースよりも上で定義されている表示順) 件数::startから:limitまで; $stmtのパラメータに値を入れる(':now1'に今の日付を); $stmtのパラメータに値を入れる(':now2'に今の日付を); $stmtのパラメータに値を入れる(':start'に[管理画面→設定管理→エントリーの表示件数] * (現在のページ数 - 1), 数値として); $stmtのパラメータに値を入れる(':limit'に[管理画面→設定管理→エントリーの表示件数], 数値として); $flag = $stmtを実行した結果; もし($flagがない)であれば { エラーを表示する } $entries = array();  空の$entry配列を作成 繰り返す ($dataとして = $stmt実行結果を一件ずつ) { // $stmt実行結果を一件ずつ['id']をキーとして$entries配列に格納処理 $entries[$data['id']] = $data; }

という意味です。
エントリーテーブルからエントリーの情報を取得し、エントリーIDをキーとして$entries配列に格納しています。

見てもよくわからなかった場合は、freo公式サイトのデータベースのテーブル構成を見てみてください。
データベースの各テーブルのフィールド名と内容が記載されています。

プラグインを利用して表示している変数について 

これまで説明した画面由来の変数ではなく、プラグインを利用して表示している変数の場合について解説します。

たとえば、freoには「新着エントリープラグイン」がデフォルトで搭載されており、デフォルト画面・エントリー画面・カテゴリー画面・VIEW画面で新着エントリー一覧を表示することができます。
新着エントリープラグインの変数は、デフォルト画面・エントリー画面・カテゴリー画面・VIEW画面用のPHPではなく、プラグインのPHPで定義されています。

プラグインを利用できる画面について

プラグインを利用できる画面は、[freo/libs/freo/plugins/config.プラグインID.php]で定義されています。
詳しくは、公式サイトの「プラグインを色々なページに表示する」を確認してください。

変数を設定している個所

プラグインの変数を設定しているのは、多くの場合[freo/libs/freo/plugins/display.プラグインID.php]です。
[freo/libs/freo/plugins/display.プラグインID.php]をエディタで開くと、最下部に、

    //データ割当
    $freo->smarty->assign(array(
        'テンプレートで利用できる配列名' => PHP内の配列,
        'テンプレートで利用できる配列名' => PHP内の配列,
        'テンプレートで利用できる配列名' => PHP内の配列,
        'テンプレートで利用できる配列名' => PHP内の配列,
    ));

のように書かれている個所があると思います。
上記が、テンプレートで利用できる変数を格納した配列を設定している個所です。

たとえば、新着エントリー表示プラグインの場合は[freo/libs/freo/plugins/display.entry_recently.php]の185~196行目

    //データ割当
    $freo->smarty->assign(array(
        'plugin_entry_recentries'          => $entries,
        'plugin_entry_recently_associates' => $entry_associates,
        'plugin_entry_recently_filters'    => $entry_filters,
        'plugin_entry_recently_securities' => $entry_securities,
        'plugin_entry_recently_tags'       => $entry_tags,
        'plugin_entry_recently_files'      => $entry_files,
        'plugin_entry_recently_thumbnails' => $entry_thumbnails,
        'plugin_entry_recently_images'     => $entry_images,
        'plugin_entry_recently_texts'      => $entry_texts
    ));

の部分です。
上記で、自分が表示したいと思っている変数が格納されているだろう配列の見当をつけることができます。
左辺の配列にどのような値が格納されているかは、PHP内を右辺の文字列で検索すると書いてあります。

たとえば、上記リストの内[$entries]を検索して、一番最初に[$entries]が登場する部分の近辺を見てみると、

    //エントリー取得
    $stmt = $freo->pdo->prepare('SELECT * FROM ' . FREO_DATABASE_PREFIX . 'entries WHERE approved = \'yes\' AND (status = \'publish\' OR (status = \'future\' AND datetime <= :now1)) AND display = \'publish\' AND (close IS NULL OR close >= :now2) ' . $condition . ' ORDER BY datetime DESC LIMIT :limit');
    $stmt->bindValue(':now1',  date('Y-m-d H:i:s'));
    $stmt->bindValue(':now2',  date('Y-m-d H:i:s'));
    $stmt->bindValue(':limit', intval($freo->config['plugin']['entry_recently']['default_limit']), PDO::PARAM_INT);
    $flag = $stmt->execute();
    if (!$flag) {
        freo_error($stmt->errorInfo());
    }

    $entries = array();
    while ($data = $stmt->fetch(PDO::FETCH_ASSOC)) {
        $entries[$data['id']] = $data;
    }

と書かれています。
HTMLではなくPHPなのでわかりにくいかもしれませんが、これは、

    //エントリー取得
    $stmt = データベースの情報を取得する
            対象:データベース名のentriesテーブル
            条件: approvedが'yes'でありかつ(statusが'publish'または(statusが'future'でありかつdatetimeが:now1以下である))でありかつ(closeが未入力またはcloseが:now2以上) + $condition(このソースよりも上で定義されている検索条件)

            表示順:日付の降順
            件数::limitまで;
    $stmtのパラメータに値を入れる(':now1'に今の日付を);
    $stmtのパラメータに値を入れる(':now2'に今の日付を);
    $stmtのパラメータに値を入れる(':limit'に[管理画面→設定管理→新着エントリープラグイン→表示件数], 数値として);

    $flag = $stmtを実行した結果;
    もし($flagがない)であれば {
        エラーを表示する
    }

    $entries = array();  空の$entry配列を作成
    繰り返す ($dataとして = $stmt実行結果を一件ずつ) {
        // $stmt実行結果を一件ずつ['id']をキーとして$entries配列に格納処理
        $entries[$data['id']] = $data;
    }

という意味です。
エントリーテーブルからエントリーの情報を取得し、エントリーIDをキーとして$entries配列に格納しています。

見てもよくわからなかった場合は、freo公式サイトのデータベースのテーブル構成を見てみてください。
データベースの各テーブルのフィールド名と内容が記載されています。

続きを読む

関連エントリー表示プラグインで関連エントリーの情報を表示する方法

freo公式サイトで、関連エントリー表示プラグインが配布されています。
個別エントリー表示(VIEW)画面で、関連エントリーを、管理画面で設定した件数分一覧表示できます。
上記画面で関連エントリーを一覧で表示する方法及び変数は以下のとおりです。

関連エントリーを一覧表示する

関連エントリーを一覧表示しているのは、関連エントリー表示プラグインで説明されているとおり、

<h2>関連エントリー</h2>
<ul>
  <!--{foreach from=$plugin_entry_relates|smarty:nodefaults item='plugin_entry_relate'}-->
  <li>{$plugin_entry_relate.datetime|date_format:'%Y/%m/%d'} <a href="{$freo.core.http_file}/view/{if $plugin_entry_relate.code}{$plugin_entry_relate.code}{else}{$plugin_entry_relate.id}{/if}">{$plugin_entry_relate.title}</a></li>
  <!--{foreachelse}-->
  <li>関連エントリーはありません。</li>
  <!--{/foreach}-->
</ul>

の部分です。

上記を解説すると

<h2>関連エントリー</h2>
<ul>
  <!--{$plugin_entry_relates配列を'plugin_entry_relate'として繰り返して表示するここから}-->
  <li>{$関連エントリーの日時|日付を整形する'年/月/日'} <a href="{$freo設置URL}/view/{関連エントリーにコードがあったらここから}{$関連エントリーコード}{そうじゃなければ}{$関連エントリーID}{関連エントリーにコードがあったここまで}">{$関連エントリーのタイトル}</a></li>
  <!--{$plugin_entry_relates配列に値がなければ}-->
  <li>関連エントリーはありません。</li>
  <!--{$plugin_entry_relates配列を'plugin_entry_relate'として繰り返して表示するここから}-->
</ul>

以上のように、関連エントリー一覧としてエントリーのタイトル及び日付を一件ずつ繰り返して表示しています。

関連エントリーの情報を取得する方法

$plugin_entry_relatesテーブルの情報をforeachする。

関連エントリーの情報は、「$plugin_entry_relates」というテーブルに格納されています。
「$plugin_entry_relates」テーブルの情報を表示したいときは、foreachしなければなりません。

とにかく、関連エントリーの情報を一覧表示したいなら、下記の通りにしなければならないってことです。

<!--{foreach from=$plugin_entry_relates|smarty:nodefaults item='plugin_entry_relate'}-->

関連エントリーの情報を表示したい部分

<!--{/foreach}-->

上記のように、関連エントリーの情報の内一覧表示したい内容は、<!--{foreach from=$plugin_entry_relates|smarty:nodefaults ~中略}-->と<!--{/foreach}-->で挟みます。
foreachの中に入れないで変数だけ書いても、関連エントリーの情報は表示されませんので注意して下さい。

関連エントリーの基本的な情報を表示するための変数
変数
{$plugin_entry_relate.id} 関連エントリーID
{$plugin_entry_relate.user_id} 関連エントリーの投稿者ユーザーID
{$plugin_entry_relate.created} 関連エントリーの投稿日時
{$plugin_entry_relate.modified} 関連エントリーの更新日時
{$plugin_entry_relate.approved} 関連エントリーの承認状況(yesまたはno)
{$plugin_entry_relate.restriction} 関連エントリーの閲覧制限(userまたはgroupまたはpasswordまたは無し)
{$plugin_entry_relate.password} 関連エントリーのパスワード
{$plugin_entry_relate.title} 関連エントリーのタイトル
{$plugin_entry_relate.status} 関連エントリーの状態(publishまたはprivateまたはfuture)
{$plugin_entry_relate.display} 関連エントリーの表示(pub;ishまたはprivate)
{$plugin_entry_relate.comment} 関連エントリーのコメントの受付(openまたはclosedまたはviewまたはuser)
{$plugin_entry_relate.trackback} 関連エントリーのトラックバックの受付(openまたはclosedまたはview)
{$plugin_entry_relate.title} 関連エントリーのタイトル
{$plugin_entry_relate.tag} 関連エントリーのタグ
{$plugin_entry_relate.datetime} 関連エントリーの日付
{$plugin_entry_relate.close} 関連エントリーの公開終了日時
{$plugin_entry_relate.file} 関連エントリーファイルのファイル名
{$plugin_entry_relate.image} 関連エントリーイメージのファイル名
{$plugin_entry_relate.memo} 関連エントリーファイルの説明
{$plugin_entry_relate.text} 関連エントリー本文
関連エントリーの添付ファイルの情報を表示する
関連エントリーファイルの情報を表示する

関連エントリープラグインは、ファイルの情報(サイズ・高さ・横幅等)を取得できるようになっていません。
関連エントリーファイルの情報で利用できる変数は下記の通りです。

変数
{$plugin_entry_relate.file} 関連エントリーファイルのファイル名
{$freo.core.http_url}{$smarty.const.FREO_FILE_DIR}entry_files/{$plugin_entry_relate.id}/{$plugin_entry_relate.file} 関連エントリーファイルのURL
関連エントリーファイルのサムネイルの情報を表示する

関連エントリープラグインは、サムネイルの情報(サイズ・高さ・横幅等)を取得できるようになっていません。
関連エントリーサムネイルの情報で利用できる変数は下記の通りです。

変数
{$plugin_entry_relate.file} 関連エントリーファイルのサムネイルのファイル名
{$freo.core.http_url}{$smarty.const.FREO_FILE_DIR}entry_thumbnails/{$plugin_entry_relate.id}/{$plugin_entry_relate.file} 関連エントリーファイルのURL
関連エントリーイメージの情報を表示する

関連エントリープラグインは、イメージの情報(サイズ・高さ・横幅等)を取得できるようになっていません。
関連エントリーファイルの情報で利用できる変数は下記の通りです。

変数
{$plugin_entry_relate.image} 関連エントリーイメージのファイル名
{$freo.core.http_url}{$smarty.const.FREO_FILE_DIR}entry_images/{$plugin_entry_relate.id}/{$plugin_entry_relate.image} 関連エントリーイメージのURL

関連エントリーのタグの情報を表示する

関連エントリープラグインは、タグの情報を取得できるようになっていません。
関連エントリープラグインでタグの情報を取得できるようにするには、プラグインの改造が必要です。

関連エントリーのカテゴリーの情報を表示する

関連エントリープラグインは、カテゴリーの情報を取得できるようになっていません。
関連エントリープラグインでカテゴリーの情報を取得できるようにするには、プラグインの改造が必要です。

関連エントリーのオプションを表示する

関連エントリープラグインは、オプションの情報を取得できるようになっていません。
関連エントリープラグインでオプションの情報を取得できるようにするには、プラグインの改造が必要です。

続きを読む

新着エントリープラグインで新着エントリーの情報とオプションの内容を表示する方法

freoには、デフォルトで新着エントリー表示プラグインが実装されています。
デフォルト・エントリー・カテゴリー・個別エントリー表示(VIEW)画面で、管理画面で設定した件数分の新着エントリーを一覧表示できます。
上記画面で新着エントリーを一覧で表示する方法及び変数は以下のとおりです。

新着エントリーを一覧表示する

新着エントリーを一覧表示しているのは、[freo/templates/utility.html]の107~119行目

        <!--{if $plugin_entry_recentries|smarty:nodefaults}-->
        <div class="utility">
            <h3>新着エントリー</h3>
            <div class="content">
                <dl>
                    <!--{foreach from=$plugin_entry_recentries|smarty:nodefaults item='plugin_entry_recently'}-->
                    <dt><a href="{$freo.core.http_file}/view/{if $plugin_entry_recently.code}{$plugin_entry_recently.code}{else}{$plugin_entry_recently.id}{/if}">{$plugin_entry_recently.title}</a></dt>
                        <dd>{$plugin_entry_recently.datetime|date_format:'%Y/%m/%d %H:%M'}</dd>
                    <!--{/foreach}-->
                </dl>
            </div>
        </div>
        <!--{/if}-->

の部分です。

上記を解説すると

        <!--{もし新着エントリーがあったらここから}-->
        <div class="utility">
            <h3>新着エントリー</h3>
            <div class="content">
                <dl>
                    <!--{$plugin_entry_recentries配列を'plugin_entry_recently'として繰り返して表示するここから}-->
                    <dt><a href="{$freo設置URL}/view/{もし新着エントリーコードがあったらここから}{$新着エントリーコード}{そうじゃなければ}{$新着エントリーID}{もし新着エントリーコードがあったらここまで}">{$新着エントリータイトル}</a></dt>
                        <dd>{$新着エントリーの日付|日付を整形する'年/月/日 時:分'}</dd>
                    <!--{$plugin_entry_recentries配列を'plugin_entry_recently'として繰り返して表示するここまで}-->
                </dl>
            </div>
        </div>
        <!--{もし新着エントリーがあったらここまで}-->

以上のように、新着エントリー一覧としてエントリーのタイトル及び日付を一件ずつ繰り返して表示しています。

新着エントリーの情報を取得する方法

$plugin_entry_recentriesテーブルの情報をforeachする。

新着エントリーの情報は、「$plugin_entry_recentries」というテーブルに格納されています。
「$plugin_entry_recentries」テーブルの情報を表示したいときは、foreachしなければなりません。

とにかく、新着エントリーの情報を一覧表示したいなら、下記の通りにしなければならないってことです。

<!--{foreach from=$plugin_entry_recentries|smarty:nodefaults item='plugin_entry_recently'}-->

新着エントリーの情報を表示したい部分

<!--{/foreach}-->

上記のように、新着エントリーの情報の内一覧表示したい内容は、<!--{foreach from=$plugin_entry_recentries|smarty:nodefaults ~中略}-->と<!--{/foreach}-->で挟みます。
foreachの中に入れないで変数だけ書いても、新着エントリーの情報は表示されませんので注意して下さい。

エントリーの基本的な情報を表示するための変数
変数
{$plugin_entry_recently.id} 新着エントリーID
{$plugin_entry_recently.user_id} 新着エントリーの投稿者ユーザーID
{$plugin_entry_recently.created} 新着エントリーの投稿日時
{$plugin_entry_recently.modified} 新着エントリーの更新日時
{$plugin_entry_recently.approved} 新着エントリーの承認状況(yesまたはno)
{$plugin_entry_recently.restriction} 新着エントリーの閲覧制限(userまたはgroupまたはpasswordまたは無し)
{$plugin_entry_recently.password} 新着エントリーのパスワード
{$plugin_entry_recently.title} 新着エントリーのタイトル
{$plugin_entry_recently.status} 新着エントリーの状態(publishまたはprivateまたはfuture)
{$plugin_entry_recently.display} 新着エントリーの表示(pub;ishまたはprivate)
{$plugin_entry_recently.comment} 新着エントリーのコメントの受付(openまたはclosedまたはviewまたはuser)
{$plugin_entry_recently.trackback} 新着エントリーのトラックバックの受付(openまたはclosedまたはview)
{$plugin_entry_recently.title} 新着エントリーのタイトル
{$plugin_entry_recently.tag} 新着エントリーのタグ
{$plugin_entry_recently.datetime} 新着エントリーの日付
{$plugin_entry_recently.close} 新着エントリーの公開終了日時
{$plugin_entry_recently.file} 新着エントリーファイルのファイル名
{$plugin_entry_recently.image} 新着エントリーイメージのファイル名
{$plugin_entry_recently.memo} 新着エントリーファイルの説明
{$plugin_entry_recently.text} 新着エントリー本文
新着エントリーの添付ファイルの情報を表示する
新着エントリーファイルの情報を表示する

エントリーファイルの情報は$plugin_entry_recently_files[$plugin_entry_recently.id]配列に格納されています。

変数
{$plugin_entry_recently.file} 新着エントリーファイルのファイル名
{$plugin_entry_recently_files[$plugin_entry_recently.id].height} 新着エントリーファイルの高さ
{$plugin_entry_recently_files[$plugin_entry_recently.id].width} 新着エントリーファイルの横幅
{$plugin_entry_recently_files[$plugin_entry_recently.id].size} 新着エントリーファイルのサイズ
{$freo.core.http_url}{$smarty.const.FREO_FILE_DIR}entry_files/{$plugin_entry_recently.id}/{$plugin_entry_recently.file} 新着エントリーファイルのURL
新着エントリーファイルのサムネイルの情報を表示する

エントリーファイルのサムネイルの情報は$plugin_entry_recently_thumbnails[$plugin_entry_recently.id]配列に格納されています。

変数
{$plugin_entry_recently.file} 新着エントリーファイルのサムネイルのファイル名
{$plugin_entry_recently_thumbnails[$plugin_entry_recently.id].height} 新着エントリーファイルの高さ
{$plugin_entry_recently_thumbnails[$plugin_entry_recently.id].width} 新着エントリーファイルの横幅
{$plugin_entry_recently_thumbnails[$plugin_entry_recently.id].size} 新着エントリーファイルのサイズ
{$freo.core.http_url}{$smarty.const.FREO_FILE_DIR}entry_thumbnails/{$plugin_entry_recently.id}/{$plugin_entry_recently.file} 新着エントリーファイルのURL
新着エントリーイメージの情報を表示する

新着エントリーイメージの情報は$plugin_entry_recently_images[$plugin_entry_recently.id]配列に格納されています。

変数
{$plugin_entry_recently.image} 新着エントリーイメージのファイル名
{$plugin_entry_recently_images[$plugin_entry_recently.id].height} 新着エントリーイメージの高さ
{$plugin_entry_recently_images[$plugin_entry_recently.id].width} 新着エントリーイメージの横幅
{$plugin_entry_recently_images[$plugin_entry_recently.id].size} 新着エントリーイメージのサイズ
{$freo.core.http_url}{$smarty.const.FREO_FILE_DIR}entry_images/{$plugin_entry_recently.id}/{$plugin_entry_recently.image} 新着エントリーイメージのURL

斟酌エントリーのタグの情報を表示する

新着エントリーのタグは、「$plugin_entry_recently_tags[$plugin_entry_recently.id]」という配列に格納されています。
$plugin_entry_recently_tags[$plugin_entry_recently.id]に格納されているタグを表示するには、foreachしなければなりません。

<!--{foreach from=$plugin_entry_recently_tags[$plugin_entry_recently.id]|smarty:nodefaults item='plugin_entry_recently_tag' name='loop'}--><a href="{$freo.core.http_file}/entry?tag={$plugin_entry_recently_tag|smarty:nodefaults|escape:'url'}">{$plugin_entry_recently_tag}</a><!--{if !$smarty.foreach.loop.last}-->,&nbsp;<!--{/if}--><!--{/foreach}-->

新着エントリーのカテゴリーの情報を表示する

新着エントリーのカテゴリーについての情報は、$plugin_entry_recently_associates[$plugin_entry_recently.id].category」という配列に格納されています。
$plugin_entry_recently_associates[$plugin_entry_recently.id].categoryに格納されているカテゴリーを表示するには、foreachしなければなりません。

<!--{foreach from=$plugin_entry_recently_associates[$plugin_entry_recently.id].category|smarty:nodefaults key='plugin_entry_recently_category' item='plugin_entry_recently_category' name='loop'}--><a href="{$freo.core.http_file}/category/{$plugin_entry_recently_category}">{$freo.refer.categories[$plugin_entry_recently_category].name}</a><!--{if !$smarty.foreach.loop.last}-->,&nbsp;<!--{/if}--><!--{/foreach}-->

上記~

変数
{$plugin_entry_recently_category} 新着エントリーに紐付けられているカテゴリーID
{$freo.refer.categories[$plugin_entry_recently_category].name} 新着エントリーに紐付けられているカテゴリーIDのカテゴリー名

新着エントリーのオプションを表示する

オプションの表示方法には、二種類あります。
一括で表示するか、個別に表示するかです。

上記をふまえて、新着エントリーのオプションを取得するときに使用する変数は以下のとおりです。

変数
オプションを一括で表示する場合
{$plugin_entry_recently_associates[$plugin_entry_recently.id].option.[$option.id]} 新着エントリーのオプションIDが[$option.id]のオプションに登録されている内容
オプションを個別に表示する場合
{$plugin_entry_recently_associates[$plugin_entry_recently.id].option.取得したいオプションID}
※「取得したいオプションID」部分にはオプションIDを代入してください。
例)取得したいオプションIDが「test1」の場合は{$plugin_entry_recently_associates[$plugin_entry_recently.id].option.test1}
新着エントリーのオプションIDが「取得したいオプションID」のオプションに登録されている内容

説明すると、

{$plugin_entry_recently_associates[$plugin_entry_recently.id].option.[$option.id]}

こんな感じです。
つまり、

{$新着エントリーIDのエントリーのオプションのテーブルを指定して.オプションが.[$どのIDのオプションなのかを指定する]}

こういうことです。

オプションを個別に表示する場合は、[$option.id]部分に、[取得したいオプションID]を書き込みます

たとえば、オプションID「test1」のオプションを取得したいなら、

{$plugin_entry_recently_associates[$plugin_entry_recently.id].option.test1}

のようになります。

オプションを一括で表示する場合は、[$option.id]部分を取得するために、オプション格納テーブルの情報を取得する必要があります。

オプション格納テーブルには、そのfreoに登録されているオプションのID、名前などが格納されています。
詳細は、freo公式サイトの機能解説→本体のテーブル構成→オプション格納テーブルのページをご覧下さい。

オプション格納テーブルの情報を取得するには、foreachを使います。
つまり、

<!--{foreach from=$freo.refer.options|smarty:nodefaults item='option'}-->

オプションの情報を表示する部分

<!--{/foreach}-->

このようにします。

よって、ページのオプションを取得する場合は、

   <!--{foreach from=$freo.refer.options|smarty:nodefaults item='option'}-->

       {$plugin_entry_recently_associates[$plugin_entry_recently.id].option.[$option.id]}
<!--{/foreach}-->

 このようになります。

オプションを個別で表示するときのテンプレート編集例はfreo公式サイトの各機能の解説から「オプションを個別に表示する」を参考にしてください。

続きを読む

エントリーの情報を個別に表示する方法(VIEW画面)

freoにはエントリーを登録・表示する機能があります。
VIEW画面(freo/index.php/view/エントリーID)では、指定されたエントリーIDのエントリーの情報を表示します。

上記画面でエントリーを表示する方法及び変数は以下のとおりです。

エントリーを表示する

VIEW画面(freo/index.php/view/エントリーID)のテンプレートは、[freo/templates/internals/view/default.html]です。
エントリーを一覧表示しているのは、[freo/templates/internals/view/default.html]の3~89行目

        <div id="entry">
            <h2>エントリー</h2>
            <div class="entry">
                <h3><a href="{$freo.core.http_file}/view/{if $entry.code}{$entry.code}{else}{$entry.id}{/if}">{$entry.title}</a></h3>
                <ul class="information">
                    <li>{$entry.datetime|date_format:'%Y/%m/%d %H:%M'}</li>
                    <!--{if $entry_associate.category}-->
                    <li>カテゴリー:<!--{foreach from=$entry_associate.category|smarty:nodefaults key='entry_category' item='entry_category' name='loop'}--><a href="{$freo.core.http_file}/category/{$entry_category}">{$freo.refer.categories[$entry_category].name}</a><!--{if !$smarty.foreach.loop.last}-->,&nbsp;<!--{/if}--><!--{/foreach}--></li>
                    <!--{/if}-->
                    <!--{if $entry_tags}-->
                    <li>タグ:<!--{foreach from=$entry_tags|smarty:nodefaults item='entry_tag' name='loop'}--><a href="{$freo.core.http_file}/entry?tag={$entry_tag|smarty:nodefaults|escape:'url'}">{$entry_tag}</a><!--{if !$smarty.foreach.loop.last}-->,&nbsp;<!--{/if}--><!--{/foreach}--></li>
                    <!--{/if}-->
                </ul>
                <div class="content">
                    <!--{if $entry.restriction == 'user' and !$entry_security}-->
                        <p class="attention">このエントリーは、登録ユーザーのみに公開されています。</p>
                    <!--{elseif $entry.restriction == 'group' and !$entry_security}-->
                        <p class="attention">このエントリーは、一部のグループのみに公開されています。</p>
                    <!--{elseif $entry.restriction == 'password' and !$entry_security}-->
                        <p class="attention">このエントリーは、パスワードで認証した人のみに公開されています。</p>
                    <!--{/if}-->
                    <!--{if $entry.file and $entry.image}-->
                        <p><a href="{$freo.core.http_url}{$smarty.const.FREO_FILE_DIR}entry_files/{$entry.id}/{$entry.file}"><img src="{$freo.core.http_url}{$smarty.const.FREO_FILE_DIR}entry_images/{$entry.id}/{$entry.image}" alt="{$entry.memo|default:$entry.file}" title="{$entry.memo|default:$entry.file}" width="{$entry_image.width}" height="{$entry_image.height}" /></a></p>
                    <!--{elseif $entry_thumbnail}-->
                        <p><a href="{$freo.core.http_url}{$smarty.const.FREO_FILE_DIR}entry_files/{$entry.id}/{$entry.file}"><img src="{$freo.core.http_url}{$smarty.const.FREO_FILE_DIR}entry_thumbnails/{$entry.id}/{$entry.file}" alt="{$entry.memo|default:$entry.file}" title="{$entry.memo|default:$entry.file}" width="{$entry_thumbnail.width}" height="{$entry_thumbnail.height}" /></a></p>
                    <!--{elseif $entry.file and $entry_file.width and $entry_file.height}-->
                        <p><img src="{$freo.core.http_url}{$smarty.const.FREO_FILE_DIR}entry_files/{$entry.id}/{$entry.file}" alt="{$entry.memo|default:$entry.file}" title="{$entry.memo|default:$entry.file}" width="{$entry_file.width}" height="{$entry_file.height}" /></p>
                    <!--{elseif $entry.file}-->
                        <p><a href="{$freo.core.http_url}{$smarty.const.FREO_FILE_DIR}entry_files/{$entry.id}/{$entry.file}">{$entry.memo|default:$entry.file}</a></p>
                    <!--{/if}-->
                    <!--{if $entry_text.excerpt}-->
                        {$entry_text.excerpt|smarty:nodefaults}
                    <!--{/if}-->
                    <!--{if $entry_text.more}-->
                        <!--{if $freo.query.continue}-->
                        <div id="continue">
                            {$entry_text.more|smarty:nodefaults}
                        </div>
                        <!--{else}-->
                        <p><a href="{$freo.core.http_file}/view/{if $entry.code}{$entry.code}{else}{$entry.id}{/if}?continue=1#continue" title="No.{$entry.id}の続き">続きを読む</a></p>
                        <!--{/if}-->
                    <!--{/if}-->
                    <!--{if $entry.restriction == 'password' and !$smarty.session.security.entry[$entry.id] and $freo.user.authority != 'root' and $freo.user.authority != 'author'}-->
                        <form action="{$freo.core.http_file}/view/{if $entry.code}{$entry.code}{else}{$entry.id}{/if}" method="post">
                            <fieldset>
                                <legend>認証フォーム</legend>
                                <dl>
                                    <dt>パスワード</dt>
                                        <dd><input type="text" name="entry[password]" size="30" value="" /></dd>
                                </dl>
                                <p><input type="submit" value="認証する" /></p>
                            </fieldset>
                        </form>
                    <!--{/if}-->
                    <!--{if $entry_associate.option}-->
                    <dl>
                        <!--{foreach from=$freo.refer.options|smarty:nodefaults item='option'}-->
                        <!--{if $entry_associate.option[$option.id] != ''}-->
                        <dt>{$option.name}</dt>
                            <dd><!--{if $option.type == 'file'}--><a href="{$freo.core.http_url}{$smarty.const.FREO_FILE_DIR}entry_options/{$entry.id}/{$option.id}/{$entry_associate.option[$option.id]}">{$entry_associate.option[$option.id]}</a><!--{else}-->{$entry_associate.option[$option.id]|nl2br}<!--{/if}--></dd>
                        <!--{/if}-->
                        <!--{/foreach}-->
                    </dl>
                    <!--{/if}-->
                </div>
                <ul class="link">
                    <li><a href="{$freo.core.http_file}/view/{if $entry.code}{$entry.code}{else}{$entry.id}{/if}" title="No.{$entry.id}の固定URL">この記事のURL</a></li>
                    <!--{if $entry.comment != 'closed'}-->
                    <li><a href="{$freo.core.http_file}/view/{if $entry.code}{$entry.code}{else}{$entry.id}{/if}#comment" title="No.{$entry.id}のコメント">コメント({$comments|smarty:nodefaults|@count})</a></li>
                    <!--{/if}-->
                    <!--{if $entry.trackback != 'closed'}-->
                    <li><a href="{$freo.core.http_file}/view/{if $entry.code}{$entry.code}{else}{$entry.id}{/if}#trackback" title="No.{$entry.id}のトラックバック">トラックバック({$trackbacks|smarty:nodefaults|@count})</a></li>
                    <!--{/if}-->
                    <!--{if $freo.user.authority == 'root' or $freo.user.id == $entry.user_id}-->
                    <li><a href="{$freo.core.http_file}/admin/entry_form?id={$entry.id}"><img src="{$freo.core.http_url}images/icons/edit.png" alt="編集" title="編集" width="16" height="16" /></a></li>
                    <!--{/if}-->
                </ul>
            </div>
            <div id="entry_link">
                <h3>ページ移動</h3>
                <ul class="entry_link">
                    <!--{if $plugin_entry_link_previous}--><li class="previous"><a href="{$freo.core.http_file}/view/{if $plugin_entry_link_previous.code}{$plugin_entry_link_previous.code}{else}{$plugin_entry_link_previous.id}{/if}">{$plugin_entry_link_previous.title}</a></li><!--{/if}-->
                    <li class="home"><a href="{$freo.core.http_file}/entry">記事一覧</a></li>
                    <!--{if $plugin_entry_link_next}--><li class="next"><a href="{$freo.core.http_file}/view/{if $plugin_entry_link_next.code}{$plugin_entry_link_next.code}{else}{$plugin_entry_link_next.id}{/if}">{$plugin_entry_link_next.title}</a></li><!--{/if}-->
                </ul>
            </div>
        </div>

の部分です。

上記を解説すると

                <h3><a href="{$freo設置URL}/view/{もしエントリーコードがあったらここから}{エントリーコード}{そうじゃなければ}{エントリーID}{もしエントリーコードがあったらここまで}">{エントリータイトル}</a></h3>
                <ul class="information">
                    <li>{エントリー日時|日付を'%Y/%m/%d %H:%M'に整形する}</li>
                    <!--{もしカテゴリーがあったらここから}-->
                    <li>カテゴリー:<!--{$entry_associates[$entry.id].category配列を'entry_category'として繰り返して表示するここから}--><a href="{$freo設置URL}/category/{エントリーに登録されているカテゴリーID}">{エントリーに登録されているカテゴリー名}</a><!--{もし最後のループじゃなかったらここから}-->,&nbsp;<!--{もし最後のループじゃなかったらここまで}--><!--{$entry_associates[$entry.id].category配列を'entry_category'として繰り返して表示するここまで}--></li>
                    <!--{もしカテゴリーがあったらここまで}-->
                    <!--{もしタグがあったらここから}-->
                    <li>タグ:<!--{$entry_tags[$entry.id]配列を'entry_tag'として繰り返して表示するここから}--><a href="{$freo設置URL}/entry?tag={エントリータグ}">{エントリータグ}</a><!--{もし最後のループじゃなかったらここから}-->,&nbsp;<!--{もし最後のループじゃなかったらここまで}--><!--{$entry_tags[$entry.id]配列を'entry_tag'として繰り返して表示するここまで}--></li>
                    <!--{もしタグがあったらここから}-->
                </ul>
                <div class="content">
                    <!--{もしエントリーの閲覧制限が'user'でエントリー保護データが入っていなかったらここから}-->
                        <p class="attention">このエントリーは、登録ユーザーのみに公開されています。</p>
                    <!--{もしエントリーの閲覧制限が'group'でエントリー保護データが入っていなかったら}-->
                        <p class="attention">このエントリーは、一部のグループのみに公開されています。</p>
                    <!--{もしエントリーの閲覧制限が'password'でエントリー保護データが入っていなかったら}-->
                        <p class="attention">このエントリーは、パスワードで認証した人のみに公開されています。</p>
                    <!--{もしエントリーの閲覧制限が'user'でエントリー保護データが入っていなかったらここまで}-->
                    <!--{もしエントリーファイルとエントリーイメージがあったらここから}-->
                        <p><a href="{freo設置URL}{ファイルディレクトリのURL}entry_files/{エントリーID}/{エントリーファイル名}"><img src="{freo設置URL}{ファイルディレクトリのURL}entry_images/{エントリーID}/{エントリーイメージ名}" alt="{エントリーファイルの説明|デフォルトはエントリーファイル名}" title="{エントリーファイルの説明|デフォルトはエントリーファイル名}" width="{エントリーイメージの横幅}" height="{エントリーイメージの高さ}" /></a></p>
                    <!--{もしエントリーファイルのサムネイルがあったら}-->
                        <p><a href="{freo設置URL}{ファイルディレクトリのURL}entry_files/{エントリーID}/{エントリーファイル名}"><img src="{freo設置URL}{ファイルディレクトリのURL}entry_thumbnails/{エントリーID}/{エントリーファイル名}" alt="{エントリーファイルの説明|デフォルトはエントリーファイル名}" title="{エントリーファイルの説明|デフォルトはエントリーファイル名}" width="{エントリーファイルのサムネイルの横幅}" height="{エントリーファイルのサムネイルの高さ}" /></a></p>
                    <!--{もしエントリーファイルが}--あってエントリーファイルの横幅があったら(画像だったら)}-->
                        <p><img src="{freo設置URL}{ファイルディレクトリのURL}entry_files/{エントリーID}/{エントリーファイル名}" alt="{エントリーファイルの説明|デフォルトはエントリーファイル名}" title="{エントリーファイルの説明|デフォルトはエントリーファイル名}" width="エントリーファイルの横幅" height="エントリーファイルの高さ" /></p>
                    <!--{もしエントリーファイルがあったら}-->
                        <p><a href="{freo設置URL}{ファイルディレクトリのURL}entry_files/{エントリーID}/{エントリーファイル名}">{エントリーファイルの説明|デフォルトはエントリーファイル名}</a></p>
                    <!--{もしエントリーファイルとエントリーイメージがあったらここまで}-->
                    <!--{もしエントリー本文があったらここから}-->
                        {$entry_texts[$entry.id].excerpt|smarty:nodefaults}
                    <!--{もしエントリー本文があったらここから}-->
                    <!--{もしエントリー本文(続き)があったらここから}-->
                        <p><a href="{freo設置ULR}/view/{もしエントリーコードがあったらここから}{エントリーコード}{そうじゃなければ}{エントリーID}{もしエントリーコードがあったらここまで}?continue=1#continue" title="No.{エントリーIDd}の続き">続きを読む</a></p>
                    <!--{もしエントリー本文(続き)があったらここまで}-->
                    <!--{もしエントリーの閲覧制限が'password'でこのエントリーの閲覧制限でパスワード認証が済んでなくてユーザーの権限が'root'でなくてユーザーの権限が'author'でなかったらここから}-->
                        <form action="{freo設置ULR}/view/{もしエントリーコードがあったらここから}{エントリーコード}{そうじゃなければ}{エントリーID}{もしエントリーコードがあったらここまで}" method="post">
                            <fieldset>
                                <legend>認証フォーム</legend>
                                <dl>
                                    <dt>パスワード</dt>
                                        <dd><input type="text" name="entry[password]" size="30" value="" /></dd>
                                </dl>
                                <p><input type="submit" value="認証する" /></p>
                            </fieldset>
                        </form>
                    <!--{もしエントリーの閲覧制限が'password'でこのエントリーの閲覧制限でパスワード認証が済んでなくてユーザーの権限が'root'でなくてユーザーの権限が'author'でなかったらここまで}-->
                    <!--{もしエントリーオプションがあったらここから}-->
                    <dl>
                        <!--{$freo.refer.options配列を'option'として繰り返して表示するここから}-->
                        <!--{もしエントリーオプションとして値が登録されているオプションであればここから}-->
                        <dt>{オプション名}</dt>
                            <dd><!--{もしオプションの種類が'file'だったらここから}--><a href="{freo設置URL}{ファイルディレクトリのURL}entry_options/{エントリーID}/{オプションID}/{エントリーオプションとして登録されている内容}">{エントリーオプションとして登録されている内容}</a><!--{そうじゃなければ}-->{エントリーオプションとして登録されている内容|改行は改行として表示する}<!--{もしオプションの種類が'file'だったらここまで}--></dd>
                        <!--{もしエントリーオプションとして値が登録されているオプションであればここまで}-->
                        <!--{$freo.refer.options配列を'option'として繰り返して表示するここまで}-->
                    </dl>
                    <!--{もしエントリーオプションがあったらここから}-->
                </div>
                <ul class="link">
                    <li><a href="{freo設置URL}/view/{もしエントリーコードがあったらここから}{エントリーコード}{そうじゃなければ}{エントリーID}{もしエントリーコードがあったらここまで}" title="No.{エントリーID}の固定URL">この記事のURL</a></li>
                    <!--{もしエントリーコメントが'closed'じゃなかったらここから}-->
                    <li><a href="{freo設置URL}/view/{もしエントリーコードがあったらここから}{エントリーコード}{そうじゃなければ}{エントリーID}{もしエントリーコードがあったらここまで}#comment" title="No.{エントリーID}のコメント">コメント({エントリーのコメント数})</a></li>
                    <!--{もしエントリーコメントが'closed'じゃなかったらここまで}-->
                    <!--{もしエントリートラックバックが'closed'じゃなかったらここから}-->
                    <li><a href="{freo設置URL}/view/{もしエントリーコードがあったらここから}{エントリーコード}{そうじゃなければ}{エントリーID}{もしエントリーコードがあったらここまで}#trackback" title="No.{エントリーID}のトラックバック">トラックバック({エントリーのトラックバック数})</a></li>
                    <!--{もしエントリートラックバックが'closed'じゃなかったらここまで}-->
                    <!--{もしユーザーの権限が'root'またはユーザーIDがエントリーの投稿者ユーザーID同じだったらここから}-->
                    <li><a href="{freo設置URL}/admin/entry_form?id={エントリーID}"><img src="{freo設置URL}images/icons/edit.png" alt="編集" title="編集" width="16" height="16" /></a></li>
                    <!--{もしユーザーの権限が'root'またはユーザーIDがエントリーの投稿者ユーザーID同じだったらここまで}-->
                </ul>
            </div>
            <!--{$entries配列を'entry'として繰り返して表示するここから}-->

以上のように、一件のエントリーの詳細を表示しています。

エントリーの基本的な情報を表示するための変数
変数
{$entry.id} エントリーID
{$entry.user_id} エントリーの投稿者ユーザーID
{$entry.created} エントリーの投稿日時
{$entry.modified} エントリーの更新日時
{$entry.approved} エントリーの承認状況(yesまたはno)
{$entry.restriction} エントリーの閲覧制限(userまたはgroupまたはpasswordまたは無し)
{$entry.password} エントリーのパスワード
{$entry.title} エントリーのタイトル
{$entry.status} エントリーの状態(publishまたはprivateまたはfuture)
{$entry.display} エントリーの表示(pub;ishまたはprivate)
{$entry.comment} エントリーのコメントの受付(openまたはclosedまたはviewまたはuser)
{$entry.trackback} エントリーのトラックバックの受付(openまたはclosedまたはview)
{$entry.title} エントリーのタイトル
{$entry.tag} エントリーのタグ
{$entry.datetime} エントリーの日付
{$entry.close} エントリーの公開終了日時
{$entry.file} エントリーファイルのファイル名
{$entry.image} エントリーイメージのファイル名
{$entry.memo} エントリーファイルの説明
{$entry.text} エントリー本文
エントリーの添付ファイルの情報を表示する
エントリーファイルの情報を表示する

エントリーファイルの情報は$entry_files配列に格納されています。

変数
{$entry.file} エントリーファイルのファイル名
{$entry_files.height} エントリーファイルの高さ
{$entry_files.width} エントリーファイルの横幅
{$entry_files.size} エントリーファイルのサイズ
{$freo.core.http_url}{$smarty.const.FREO_FILE_DIR}entry_files/{$entry.id}/{$entry.file} エントリーファイルのURL
エントリーファイルのサムネイルの情報を表示する

エントリーファイルのサムネイルの情報は$entry_thumbnails配列に格納されています。

変数
{$entry.file} エントリーファイルのサムネイルのファイル名
{$entry_thumbnails.height} エントリーファイルの高さ
{$entry_thumbnails.width} エントリーファイルの横幅
{$entry_thumbnails.size} エントリーファイルのサイズ
{$freo.core.http_url}{$smarty.const.FREO_FILE_DIR}entry_thumbnails/{$entry.id}/{$entry.file} エントリーファイルのURL
エントリーイメージの情報を表示する

エントリーイメージの情報は$entry_images配列に格納されています。

変数
{$entry.image} エントリーイメージのファイル名
{$entry_images.height} エントリーイメージの高さ
{$entry_images.width} エントリーイメージの横幅
{$entry_images.size} エントリーイメージのサイズ
{$freo.core.http_url}{$smarty.const.FREO_FILE_DIR}entry_images/{$entry.id}/{$entry.image} エントリーイメージのURL

エントリーのタグの情報を表示する

エントリーのタグは、「$entry_tags」という配列に格納されています。
$entry_tagsに格納されているタグを表示するには、foreachしなければなりません。

<!--{foreach from=$entry_tags|smarty:nodefaults item='entry_tag' name='loop'}--><a href="{$freo.core.http_file}/entry?tag={$entry_tag|smarty:nodefaults|escape:'url'}">{$entry_tag}</a><!--{if !$smarty.foreach.loop.last}-->,&nbsp;<!--{/if}--><!--{/foreach}-->

エントリーのカテゴリーの情報を表示する

エントリーのカテゴリーについての情報は、$entry_associates.category」という配列に格納されています。
$entry_associates[$entry.id].categoryに格納されているカテゴリーを表示するには、foreachしなければなりません。

<!--{foreach from=$entry_associates.category|smarty:nodefaults key='entry_category' item='entry_category' name='loop'}--><a href="{$freo.core.http_file}/category/{$entry_category}">{$freo.refer.categories[$entry_category].name}</a><!--{if !$smarty.foreach.loop.last}-->,&nbsp;<!--{/if}--><!--{/foreach}-->

上記~

変数
{$entry_category} エントリーに紐付けられているカテゴリーID
{$freo.refer.categories[$entry_category].name} エントリーに紐付けられているカテゴリーIDのカテゴリー名

エントリーのオプションを表示する

オプションの表示方法には、二種類あります。
一括で表示するか、個別に表示するかです。

上記をふまえて、ページのオプションを取得するときに使用する変数は以下のとおりです。

変数
オプションを一括で表示する場合
{$entry_associate.option.[$option.id]} エントリーのオプションIDが[$option.id]のオプションに登録されている内容
オプションを個別に表示する場合
{$entry_associate.option.取得したいオプションID}
※「取得したいオプションID」部分にはオプションIDを代入してください。
例)取得したいオプションIDが「test1」の場合は{$entry_associate.option.test1}
エントリーのオプションIDが「取得したいオプションID」のオプションに登録されている内容

説明すると、

{$entry_associate.option.[$option.id]}

こんな感じです。
つまり、

{$エントリーのオプションのテーブルを指定して.オプションが.[$どのIDのオプションなのかを指定する]}

こういうことです。

オプションを個別に表示する場合は、[$option.id]部分に、[取得したいオプションID]を書き込みます

たとえば、オプションID「test1」のオプションを取得したいなら、

{$entry_associate.option.test1}

のようになります。

オプションを一括で表示する場合は、[$option.id]部分を取得するために、オプション格納テーブルの情報を取得する必要があります。

オプション格納テーブルには、そのfreoに登録されているオプションのID、名前などが格納されています。
詳細は、freo公式サイトの機能解説→本体のテーブル構成→オプション格納テーブルのページをご覧下さい。

オプション格納テーブルの情報を取得するには、foreachを使います。
つまり、

<!--{foreach from=$freo.refer.options|smarty:nodefaults item='option'}-->

オプションの情報を表示する部分

<!--{/foreach}-->

このようにします。

よって、ページのオプションを取得する場合は、

   <!--{foreach from=$freo.refer.options|smarty:nodefaults item='option'}-->

       {$entry_associate.option.[$option.id]}

   <!--{/foreach}-->

 このようになります。

エントリーのオプションを一括で表示しているのは、[freo/templates/internals/view/default.html]の57~66行目の部分です。
オプションを個別で表示するときのテンプレート編集例はfreo公式サイトの各機能の解説から「オプションを個別に表示する」を参考にしてください。

続きを読む

ExcelVBAで文字列を置換する方法

ExcelVBAで文字列を置換するには、Replace関数を利用します。
下記のように記述すると、「置換前の文字列」から「検索する文字列」を検索し、「置換する文字列」に置換します。

Replace("置換前の文字列","検索する文字列", "置換する文字列",開始位置,置換回数,比較モード)

※「開始位置」「置換回数」「比較モード」は省略可能です。
※「置換する文字列」を「""(入力無し)」にすると、「検索する文字列」を削除することができます。

Replace関数を利用して文字列を置換する
Sub sample()
    Dim sample, test, result As String
    
    sample = 'SAMPLE'
    test = 'TEST'
    
    result = Replace(sample, sample, test)
    
    MsgBox(result)

End Sub

上記のようにすると、「SAMPLE」という文字列が「TEST」に置換され、結果的に「TEST」という文字列が表示されます。

Replace関数を利用してスペースを削除する

スペースを削除するときは、全角スペース用のReplace関数と半角スペース用のReplace関数を重ねて利用します。

Sub sample()
    Dim sample, result As String

    sample = 'この文字列には「 (全角スペース)」と「 (半角スペース)」が含まれています。'

    result = Replace(Replace(sample," ","")," ","")

    MsgBox(result)

End Sub

下記のようにすると、「この文字列には「 (全角スペース)」と「 (半角スペース)」が含まれています。」からスペースが削除されて、「この文字列には「(全角スペース)」と「(半角スペース)」が含まれています。」と表示されます。

Replace関数を利用して改行を削除する

Excel内ではAlt+Enterで改行を行うことができます。
上記改行を削除するときは、下記のようにします。

Sub sample()
    Dim result As String
    result = Replace(ActiveCell, vbLf, "")

    MsgBox(result)

End Sub

Excelでは改行コードは「vbLf」を利用していますが、その他の改行コードを削除するときは、「vbLf」部分を下記のように変更してください。

  • CR……vbCr
  • LF……vbLf
  • CR+LF……vbCrLf

続きを読む

ワークシートをコピーして名前を変更するマクロ

ワークシートをコピーするには、Copyメソッドを使用します。
Copyメソッドには、BeforeとAfterの2種類の引数があります。

たとえば、「Sheet1」というシートをコピーする場合は下記のようになります。

新規ワークブックにコピーしたシートを挿入する場合
Worksheets("Sheet1").Copy
2番目のシートの前(左)にコピーしたシートを挿入する場合
Worksheets("Sheet1").Copy Before:=Worksheets(2)
1番目のシートの後(右)にコピーしたシートを挿入する場合
Worksheets("Sheet1").Copy After:=Worksheets(1)

ワークシートをコピーして名前を変更するマクロ

Copyメソッドを利用すると、コピーしたシートはActiveSheetに格納されます。
下記のようにすると、コピーしたシートの名前を変更することができます。

Sub Sample()
    Dim wsName As String
    wsName = 'test'

    Worksheets("Sheet1").Copy
    ActiveSheet.Name = wsName
End Sub

 

続きを読む

ブック内の全てのワークシートの名前を確認するマクロ

ブック内の全てのワークシートの名前を取得し、任意の文字列と一致するかどうか確認するマクロは以下の通りです。
今回は、「test」というシートが存在するか確認します。

Sub Get_wsName()
'===========================================================
'   ブック内のワークシートの名前を確認するマクロ
'===========================================================
    Dim wsName As String
    wsName = "test"
    
    Dim ShOne As Worksheet
    Dim wsFlg As Boolean
    
    For Each ShOne In Worksheets
        If wsName = ShOne.Name Then
            wsFlg = True
        End If
    Next ShOne
    
    If wsFlg = True Then
        MsgBox (wsName & "シートは存在します。")
    Else
        MsgBox (wsName & "シートは存在しません。")
    End If

End Sub

 

続きを読む

同人イベントプラグインで未来のイベントがなかったときに特定の文字列を表示する方法

同人イベントプラグインで未来のイベントのみ表示する方法を利用すると、未来のイベントのみ表示することができます。
この時、未来のイベントがなかった場合に特定の文字列を表示する方法は、たとえば以下のようにします。

<table>
<tbody>
<!--{foreach from=$plugin_events|smarty:nodefaults item='plugin_event'}-->
<!--{if $plugin_event.datetime|date_format:'%Y/%m/%d' >= $smarty.now|date_format:'%Y/%m/%d'}-->
{assign var='eventFlg' value='true'}
<tr>
    <td><a href="{$freo.core.http_file}/event/view/{$plugin_event.id}">{$plugin_event.datetime|date_format:'%Y/%m/%d'}<!--{if $plugin_event_files[$plugin_event.id].file}--><br /><img src="{$freo.core.http_url}{$smarty.const.FREO_FILE_DIR}plugins/event_files/{$plugin_event.id}/{$plugin_event_files[$plugin_event.id].file}" alt="{$plugin_event.title}" /><!--{/if}--></a></td>
    <td>
        <!--{if $plugin_event.url}--><a href="{$plugin_event.url}" target="_blank">{$plugin_event.title}</a>
        <!--{else}-->{$plugin_event.title}
        <!--{/if}-->
    </td>
    <td>
        <!--{if $plugin_event.space}--><!--{if $plugin_event.hall}-->{$plugin_event.hall} <!--{/if}-->{$plugin_event.space}<!--{/if}--><br /><!--{if $plugin_event.style}-->({$plugin_event.style}<!--{if $plugin_event.itakucircle}-->|<!--{if $plugin_event.itakuurl}--><a href="{$plugin_event.itakuurl}" target="_blank">{$plugin_event.itakucircle}様</a><!--{else}-->{$plugin_event.itakucircle}様<!--{/if}--><!--{/if}-->)<!--{/if}-->
    </td>
    <td>{$plugin_event.name}</td>
    <td>
        <!--{if $plugin_event.category_id}-->【カテゴリー:<a href="{$freo.core.http_file}/event?category_id={$plugin_event.category_id}">{$plugin_event_categories[$plugin_event.category_id].name}</a>】<br /><!--{/if}-->
        <!--{if $plugin_event_tags[$plugin_event.id]|smarty:nodefaults}-->【タグ:<!--{foreach from=$plugin_event_tags[$plugin_event.id]|smarty:nodefaults item='plugin_event_tag' name='loop'}--><a href="{$freo.core.http_file}/event?tag={$plugin_event_tag|smarty:nodefaults|escape:'url'}">{$plugin_event_tag}</a><!--{if !$smarty.foreach.loop.last}-->,&nbsp;<!--{/if}--><!--{/foreach}-->】<br /><!--{/if}-->
        <!--{if $plugin_event.coupling}-->カップリング:{$plugin_event.coupling}<br /><!--{/if}-->
        <!--{if $plugin_event.text}-->{$plugin_event.text|smarty:nodefaults|strip_tags|mb_truncate:20:'...'|escape}<!--{/if}-->
    </td>
</tr>
<!--{/if}-->
<!--{/foreach}-->
<!--{if $eventFlg != 'true'}-->
    <tr><td>次回のイベント参加は未定です。</td></tr>
<!--{/if}-->
</tbody>
</table>

解説するとこんな↓感じです。

<table>
<tbody>
<!--{$plugin_events配列を繰り返して表示するここから}-->
<!--{もしイベント開催日が今よりも未来だったらここから}-->
    {eventFlgというテンプレート内変数に'true'という値を代入する}
    ~繰り返す内容(イベント情報表示部分)~
<!--{もしイベント開催日が今よりも未来だったらここまで}-->
<!--{$plugin_events配列を繰り返して表示するここまで}-->
<!--{もし$eventFlgが'true'じゃなければここから}-->
    ~未来のイベントがなかった場合に表示する特定の文字列~
<!--{もし$eventFlgが'true'じゃなければここから}-->
</tbody>
</table>

今回は、条件を判断するのにsmartyで利用できるテンプレート変数を活用しています。
詳しくは下記サイトを参考にしてください。

I'll be NET|smartyのassignでテンプレート内変数を定義する方法

PHPを利用して特定の文言を表示する場合は下記サイトを参考にして下さい。

夏草生産農家|同人イベント&イベントリストプラグインをちょっと便利にするカスタマイズ

続きを読む

エントリーページ移動

ページ上部へ