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

> Entry

編集画面で複数のテキストエリアをHTMLエディタに変更する方法(ver.1.20.0より前)

本記事は、freoの1.20.0より前のバージョンでのみ利用可能です。
1.20.0以降のバージョンではこちらの記事を参考にしてください。

freoの編集画面では、HTMLエディタが利用できます。
初期状態のfreoで利用できるHTMLエディタは、「TinyMCE」です。

例えば、エントリー登録画面、ページ登録画面の「本文」箇所にHTMLエディタが採用されています。

tinymce.png

オプションでテキストエリア(複数行テキストボックス)を増やした時など、本文以外にもHTMLエディタ化したいテキストエリアが発生することがあると思います。
この記事では、編集画面内にある複数のテキストエリアをHTMLエディタに変更する方法を紹介します。

初期状態の解説

初期状態のfreoの編集画面では、idに「tiny_mce」が付与されているテキストボックスのみが、TinyMCE形式で表示されます。
エントリー編集画面では、[freo/templates/internals/admin/entry_form.html]の24行目、ページ編集画面では、[freo/templates/internals/admin/page_form.html]の26行目に、

<textarea name="page[text]" cols="65" rows="30" id="tiny_mce">{$input.page.text}</textarea>

のように、id=tiny_mceが付与されています。

また、初期状態では、1画面内に表示できるHTMLエディタは1つのみです。
HTMLエディタ化するためのidが「tiny_mce」のみに限定されているから、また、idは画面内に1度しか使ってはならないからです。
よって、複数のテキストエリアをHTMLエディタ化するには、下記のようにしなければなりません。

TinyMCE化するテキストエリアに付与するIDを増やす

TinyMCE化するテキストエリアに付与するIDを増やせば、複数のテキストエリアをTinyMCEとして利用することができます。

  1. [freo/js/admin.js]を開く。
  2. 120行目にTinyMCE化するテキストエリアに付与するIDを下記のように追加する。
    (この例では、[sample1][sample2]のIDを追加してみます。)
        elements: 'tiny_mce,sample1,sample2',
    
  3. [freo/js/admin.js]を上書きしてアップロードする。

上記の方法で、TinyMCE化するためのidを増やすことができます。
あとは、複数のテキストエリアを利用する編集画面のテンプレート内のテキストエリアに、上記方法で増やしたIDを付与すればOKです。

全てのテキストエリアをTinyMCEにする。

全てのテキストエリアをTinyMCEにする方法は下記の通りです。

  1. [freo/js/admin.js]を開く。
  2. 119行目を下記のように変更する。
        mode: 'textareas',
    
  3. 120行目(下記の行)を削除する。
        elements: 'tiny_mce',
    
  4. [freo/js/admin.js]を上書きしてアップロードする。

上記の方法で、全てのテキストエリアをTinyMCE化することができます。

テキストエリアをTinyMCEにした後の注意

テキストエリアにTinyMCEを利用すると、入力する内容にHTMLタグを利用できます。
HTMLを利用しなくとも、改行タグ(<br />)や段落タグ(<p>~</p>)は自動的に挿入されてしまいます。
入力されたHTMLタグを反映した状態で画面上に表示するには、変数に[|smarty:nodefaults]という修飾子をつけなくてはなりません。

たとえば、ページのオプションID[arasuji]のテキストエリアにTinyMCEを使った場合、入力されている文章をタグを反映して表示するには、ページ用のテンプレート(例えば[freo/templates/internals/pages/default.html])の任意の箇所に、

{$page_associate.option.arasuji|smarty:nodefaults}

と入力してください。

続きを読む

プラグインの編集画面のテキストエリアをHTMLエディタに変更する方法(ver.1.20.0より前)

本記事は、freoの1.20.0より前のバージョンでのみ利用可能です。
1.20.0以降のバージョンではこちらの記事を参考にしてください。

freoでは、エントリー登録画面・ページ登録画面の本文入力用テキストエリア(複数行テキストボックス)などに、HTMLエディタが採用されています。
プラグインの編集画面でもHTMLエディタを利用する方法は下記の通りです。

今回は、ブログパーツ管理プラグインの編集画面の「内容」のテキストエリアをHTMLエディタに変更してみます。
なお、採用するHTMLエディタは「TinyMCE」とします。

  1. プラグインの編集画面のテンプレートをエディタで開く
    ブログパーツ管理プラグインの場合は、[freo/templates/plugins/parts/admin_form.html]を開く。
  2. HTMLエディタを採用したいテキストエリアに[id="tiny_mce"]を追加する。
    ブログパーツ管理プラグインの場合は、29・30行目を下記のように変更する。
                        <dt>内容</dt>
                            <dd><textarea name="plugin_parts[text]" cols="50" rows="5" id="tiny_mce">{$input.plugin_parts.text}</textarea></dd>
    
  3. テンプレートを上書きしてアップロードする。

ワンポイント

テキストエリアをHTMLエディタにするためのIDは、初期では「tiny_mce」になっていますが、他のIDに変更している場合は、他のIDを使用してください。
テキストボックスをHTMLエディタにするためのIDは、[freo/js/admin.js]の[elements]で確認できます。
編集画面上に2つ以上のHTMLエディタを使用する場合は、別の処理が必要です。

参考リンク:【freoTIPS】【テンプレート系TIPS】編集画面で複数のテキストエリアをHTMLエディタに変更する方法

続きを読む

【イラスト編(06)】メディアを表示するプラグインについて

前回説明したとおり、メディア機能とは、サイトに関連する様々なファイル、たとえばGIF・JPEG・PNGなどの画像ファイルや、PDF・TXTなどのドキュメント、ZIPファイルを登録できる機能です。
メディアを利用してギャラリーを作成するときに利用できるプラグインは以下のとおりです。

ギャラリーを作成するのに利用できるメディア関連プラグイン

登録されているメディアを使ってギャラリーを作成するには、freo公式で配布されているプラグインを利用します。

それぞれのプラグインの特徴は下記のとおりです。

メディア一括表示プラグインとは

freo公式サイトで配布されているメディア一括表示プラグインは、メディア一括表示画面[http://freo設置フォルダ/index.php/media_all]にアクセスしたとき、あらかじめ指定したディレクトリ内のメディアを一覧表示するプラグインです。
画面上に表示するメディア数の制限はできません

特定のディレクトリ以下のメディアを、すべて同じ画面内に一覧表示したい場合は、メディア一括表示プラグインを利用するといいでしょう。
また、当サイトでトップページとかでもメディア一括表示プラグインを利用するためのdisplayプラグインを配布していますので、それを利用すると、スライドショーをメディア機能で管理してページ画面やデフォルト画面に表示することができるようになります。

アクセスするURLにより、表示するディレクトリを変更したい場合や、1画面内に表示するメディアの数を指定したい場合は、下記に紹介するメディア表示プラグインを利用して下さい。

メディア表示プラグインとは

freo公式サイトで配布されているメディア表示プラグインは、メディア表示画面[http://freo設置フォルダ/index.php/media_list]にアクセスしたとき、[freo/files/medias]ディレクトリ内に登録されているメディアを、管理画面で設定された件数分一覧表示するプラグインです。

ディレクトリ内に管理画面で設定された件数以上のメディアが登録されている場合は、[http://freo設置フォルダ/index.php/media_list?page=2]にアクセスすると、2ページ目が表示されます。

アクセスするパラメータ(URL)を変更すると、表示するディレクトリを変更することができます。
例えば、[freo/files/medias/test]ディレクトリのメディアを一覧表示するときは、[http://freo設置フォルダ/index.php/media_list?directory=test]というURLにアクセスしてください。

アクセスするパラメータ(URL)を変更すると、メディアではなくディレクトリを一覧表示することができます。
例えば、[freo/files/medias]ディレクトリ内のディレクトリを一覧表示したいときは、[http://freo設置フォルダ/index.php/media_list?target=directory]というURLにアクセスしてください。
このとき、表示されたディレクトリをクリックすると、そのディレクトリ内のメディアを一覧表示できます。

このように、アクセスするURLにより、表示するディレクトリや、表示されるファイルの種類(ディレクトリを表示するかメディアを表示するか)を変更したい場合や、1画面内に表示するメディアの数を指定したい場合は、メディア表示プラグインを利用するといいでしょう。
大量のフォルダをまたがけたギャラリーを作成したい場合などに便利です。

特定のディレクトリ以下のメディアを、すべて同じ画面内に一覧表示したい場合は、上記にご紹介しているメディア一括表示プラグインを利用して下さい。

漫画表示プラグインとは

freo公式サイトで配布されている漫画表示プラグインは、漫画表示画面[http://freo設置フォルダ/index.php/media_comic/特定のディレクトリ名]にアクセスしたとき、特定のディレクトリ内に登録されているメディアを、漫画形式で表示するプラグインです。

漫画表示プラグインの導入方法、注意点などはfreo公式サイトに説明されていますが、更に付け加えるとすれば、

画像のルール補足

表紙が必要な場合、画像のファイル名は、0 からの連番にしてください。(2ページずつ表示させた場合、0 は表紙に、最後は裏表紙になります。)
表紙が不要な場合、画像のファイル名は、1 からの連番にしてください。(2ページずつ表示させた場合、最初から2ページずつ表示されます。)

連番とは、例えば表紙を含めて12ページなら、「0,1,2,3,4,5,6,7,8,9,10,11」という番号のことです。
「00,01,02,03~11」のように、桁を合わせないように気をつけて下さい。

漫画表示プラグインは、指定したディレクトリを漫画のように表示するプラグインであり、漫画のように表示したいメディアが登録されているディレクトリを一覧表示するプラグインではありません。
漫画のように表示するディレクトリを一覧表示するには、上記に紹介した、メディア一括表示プラグイン(及びトップページとかでもメディア一括表示プラグインを利用するためのdisplayプラグイン)や、メディア表示プラグインを利用するといいでしょう。

以上のように、メディアを利用してギャラリーを作成するプラグインには3つの種類があり、それぞれ違いがあります。

続きを読む

【更新履歴編(03)】ニュースプラグインについて。

これまで、freoで更新履歴、ニュース、トピックスを管理する方法として、

  • エントリー機能
  • インフォメーション機能

をご紹介しました。

その他に、更新履歴として利用できそうなその他の機能を復習しておきます。

新着エントリー表示プラグイン

新着エントリー表示プラグインは、freoにデフォルトで備わっているプラグインで、登録されたエントリーを、新着としてみなすと設定された件数分一覧表示するプラグインです。
エントリーを登録する度に自動的に新着エントリーとして表示されるので、更新履歴を更新する手間が省けます。

しかし、過去の記事でご説明したとおり、「カテゴリー『更新履歴』の記事だけを一覧表示する」ということはできません。
また、新着エントリーとして表示したくないエントリーも、新着表示されてしまう可能性があります。

新着エントリーとして表示したくないエントリーがある場合は、該当するエントリーの編集画面で、日時を「過去の日時にする」などして対応してください。

datetimeedit.png

新着ページ表示プラグイン

新着ページ表示プラグインは、freo公式サイトで配布されているプラグインで、登録されたページを新着としてみなすと設定された件数分一覧表示するプラグインです。
ページを登録する度に自動的に新着ページとして表示されるので、更新履歴を更新する手間が省けます。

しかし、新着ページとして表示したくないページも、新着表示されてしまう可能性があります。
新着ページとして表示したくないページがある場合は、該当するページの編集画面で、日時を「過去の日時にする」などして対応してください。

datetimeedit.png

その他のプラグイン

上記に紹介した新着エントリープラグイン・新着ページプラグインは、新着として表示する内容を自由に選べないというデメリットがあります。
また、新着としてみなされる間は表示されるものの、過去の履歴(記録)が残らないというデメリットがあります。

更新履歴として、サイトの更新内容を記録しておきたい場合は、ニュースプラグインを利用するといいでしょう。

ニュースプラグインとは

ニュースプラグインは、当サイトで配布しているプラグインです。
機能的にはエントリーに似ています。
タイトルの他に、本文、URL、カテゴリー、タグ、オプション、添付ファイルなどを登録できます。

当サイトのニュースのように、サイトの更新に関する記録をつけたり、こちらのサンプルのように、エントリー以外のブログとして利用することができます。

ニュースプラグインのメリット
  • 更新履歴を独立して管理することができます。
  • タイトル、本文以外に様々な情報を登録できます。
  • twitterとも連携できます。
  • エントリーとは別にニュースとしてfeed配信することができます。
ニュースプラグインのデメリット
  • エントリーやページで更新した内容を自動で取得できません(更新内容の内、更新履歴として残しておきたいものを、サイトを更新する都度、自分で登録しなければなりません。)。
ニュースの分類について

ニュースは、カテゴリーとタグで分類することができます。
ここでいうカテゴリーとは、ニュースのカテゴリーのことであって、エントリーのカテゴリーとは違うものです。

ニュースプラグイン実装後、管理画面→プラグイン→ニュースプラグイン→カテゴリーの管理でカテゴリーを追加・削除できます。

新しいニュースを表示する。

ニュースプラグインでは、「ニュースプラグイン画面(freo/news)で表示するニュース件数」と、「デフォルト・ページ・エントリー画面で表示するニュース件数」を設定できます。
よって、ニュースプラグイン画面では20件のニュースを表示し、デフォルト画面では5件分のニュースを表示するということが可能です。

例えば下記のように、当サイトのトップページでは、全カテゴリーのニュースを、新しいものから順に5件分、デフォルト画面に表示しています。

news_default.png

また、それとは別に、新着ニュース表示プラグインをご用意しています。
新着ニュース表示プラグインでは、カテゴリーを特定して、あるカテゴリーの新着ニュースのみ表示させることができます。
たとえば当サイトでは、下記のように、「topics」というカテゴリーのニュースのみ一覧表示させています。

news_recentry.png

 

まとめ

これまでご紹介したように、freoサイトの更新履歴・お知らせ・トピックスとしては、

  • 日記の中に更新情報を載せたいならエントリー機能
  • サイトについてのお知らせを中~長期間表示させておきたいならインフォメーション機能
  • 更新履歴を独立したコンテンツとして管理したいならニュースプラグイン

ご利用いただくとよいかと思います。

続きを読む

【更新履歴編(02)】インフォメーション機能について。

freoには、「インフォメーション」という機能がデフォルトで搭載されています。
インフォメーション機能とは、

特定のエントリーやページを表示したり、専用のメッセージを登録して表示する

機能です。
閲覧者向けのお知らせとして便利に活用することができます。

インフォメーション機能とは

freoで登録したエントリー記事は、日付の昇順または降順で一覧表示されます。
しかし、古い記事であっても、ある記事をエントリー一覧の最上部に表示しておきたいことがあると思います。

また、サイトのトップページ(freoのデフォルト画面)に、サイトについての説明が書かれたページから引用した文章などを表示しておきたいことがあると思います。

上記とは別に、サイトのトップページ(freoのデフォルト画面)に、サイトについてのお知らせなどを表示したいこともあるでしょう。

そういった時に利用できるのが、インフォメーション機能です。

インフォメーション機能の種類

インフォメーションには3つの種類があります。

インフォメーションエントリー 1件のエントリーIDのみ登録できます。
エントリー機能を使って登録したエントリーのうち、インフォメーションエントリーとして使用したいエントリーのIDを、管理メニュー→インフォメーション機能→インフォメーションエントリーの箇所に入力することによって設定します。
インフォメーションページ 1件のページIDのみ登録できます。
ページ機能を使って登録したページのうち、インフォメーションページとして使用したいページのIDを、管理メニュー→インフォメーション機能→インフォメーションページの箇所に入力することによって設定します。
インフォメーション本文 任意の内容を自由に入力できます。
HTMLエディタ・メディアを利用して、内容は自由に編集することができます。
シチュエーションから見るインフォメーション利用例

インフォメーション機能は、「あるエントリー」や「あるページ」を表示する機能なので、更新履歴として使用したいと考えると、特定のエントリーまたはページ、あるいはインフォメーション本文に、サイトを更新する度に更新内容を手入力していく必要があるため、利用しづらいかもしれません。
しかし、閲覧者向けのお知らせとして利用することを考えると、とても便利な機能です。

シチュエーションから見るインフォメーション利用例は下記の通りです。

インフォメーションエントリーを利用するシチュエーション

日記を頻繁に更新するサイトで、長期間最新として表示しておきたい日記ができた場合、たとえば、2ヶ月後のイベントなどの告知などは、告知エントリー記事をインフォメーションエントリーとして設定しておき、常に最新記事として表示させるといいかもしれません。

サンプルはこちらです。

インフォメーションページを利用するシチュエーション

ブログサイトなどでよくあるように、サイトについての紹介(当サイトでいえばABOUTのページ)を日記一覧の最上部に表示させておきたい場合は、インフォメーションページとして「ABOUT」のページを設定しておき、常に最上部に表示させるといいかもしれません。

インフォメーション本文を利用するシチュエーション

トップページに表示させる内容として、あるページの本文を一部のみ引用して表示したり、画像やリンクを自由に表示させたい場合は、インフォメーション本文を利用するといいでしょう。
たとえば、当サイトだと下記のように利用しています。

informationtext.png

インフォメーションを表示できる画面

インフォメーションを表示できるのは、「デフォルト画面」と「エントリー画面」です。
インフォメーションを表示させているのは、テンプレートでいうと、デフォルト画面なら[freo/templates/internals/default/default.html]の3~69行目の部分です。

なお、エントリー画面、カテゴリー画面用のテンプレートが別途用意されている場合は、エントリー画面なら[freo/templates/internals/entry/default.html]の3~69行目になります。

該当箇所は下記のとおりです。

        <!--{if $freo.config.view.information and !$smarty.get.category}-->
        <div id="information">
            <!--{if $information_entry}-->
                ~中略~
            <!--{/if}-->
            <!--{if $information_page}-->
                ~中略~
            <!--{/if}-->
            <!--{if $information.text}-->
                ~中略~
            <!--{/if}-->
        </div>
        <!--{/if}-->

解説は下記のとおりです。

        <!--{もし 管理画面→設定管理→表示設定→インフォメーションの表示で「利用する」にしていて かつ カテゴリーで検索していない場合ここから}-->
        <div id="information">
            <!--{もしインフォメーションエントリーが設定されていたらここから}-->
                ~中略~
            <!--{もしインフォメーションエントリーが設定されていたらここまで}-->
            <!--{もしインフォメーションページが設定されていたらここから}-->
                ~中略~
            <!--{もしインフォメーションページが設定されていたらここから}-->
            <!--{もしインフォメーション本文が設定されていたらここから}-->
                ~中略~
            <!--{もしインフォメーション本文が設定されていたらここから}-->
        </div>
        <!--{もし 管理画面→設定管理→表示設定→インフォメーションの表示で「利用する」にしていて かつ カテゴリーで検索していない場合ここまで}-->

続きを読む

シート内のリストのデータでフィルタリングして項目ごとの別シートを作成してフィルタリングしたリストをコピペするVBA例

1番目のシートに下記のようなリストが保存されているとします。

01.png

上記のリストをA列でフィルタリングすると、下記のようになります。

02.png
03.png
04.png

A列の情報をもとに重複のないワークシートを挿入し、上記3つのリストをそれぞれのシートにコピペする方法は以下のとおりです。

Sub Make_Fruits_Sheet()
'====================================================================================
' A列のデータでフィルタリングして別シートを作成しフィルタリングしたリストをコピペする
'====================================================================================
ThisWorkbook.Activate
'//変数の定義
    Dim arrayData, i, maxRow As Long
    Dim cellData As String
    Set arrayData = CreateObject("Scripting.Dictionary")
    On Error Resume Next
'//A列の最終行を取得
    If Len(Worksheets(1).Range("A1").Value) = 0 Then
        maxRow = 0
    ElseIf Len(Worksheets(1).Range("A2").Value) = 0 Then
        maxRow = 1
    Else
        maxRow = Worksheets(1).Range("A1").End(xlDown).Row
    End If
'//A列のデータを連想配列に格納する
    For i = 2 To maxRow
        '//セルの値を変数cellDataに格納
            cellData = Range("A" & i).Value
        '//連想配列に未登録であればセルの値を連想配列に格納する
            If Not arrayData.Exists(cellData) Then
                arrayData.Add cellData, cellData
            End If
    Next i
'//連想配列のキーを定義する
    arrayDataKeys = arrayData.Keys
'//連想配列のデータ分繰り返して作業する
    For i = 0 To arrayData.Count - 1
        '//新しいワークシートを挿入する
            Dim NewWorkSheet As Worksheet
            Set NewWorkSheet = Worksheets.Add(after:=Worksheets(Worksheets.Count))
        '//新しいワークシートの名前を変える
            NewWorkSheet.Name = arrayDataKeys(i)
        '//元のシートをフィルタリングしてコピーする
            With Worksheets(1).Range("A1")
                .AutoFilter Field:=1, Criteria1:=arrayDataKeys(i)    '1列目を連想配列のデータで絞り込む
                .CurrentRegion.Copy
            End With
        '//新しいワークシートにペーストする
            Sheets(arrayDataKeys(i)).Paste
    Next i
'//フィルタを解除する
    With Worksheets(1)
        .Activate                    '最初のシートをアクティブにする
        .Range("A1").AutoFilter      'フィルタを解除する
    End With
'//オブジェクトを初期化して終了
    Set arrayData = Nothing
End Sub

続きを読む

特定のシートをコピーして別のワークブック(CSVファイル)として保存するVBA例

特定のシートをコピーして、別のワークブック(CSVファイル)として保存するときのコードサンプルです。
新しく作成するファイル名は、シート1のA1セルの値とします。

Sub Save_Copy_Sheet()
'====================================================================================
' 特定のシートをコピーして別のワークブック(CSVファイル)として保存するマクロ
'====================================================================================
    '//変数の定義
        Dim newFileName, newFileFolder, newFile As String
        Dim ShCopy As Worksheet
        Set ShCopy = Worksheets(1)                            '保存するシート
        newFileName = ShCopy.Range("A1").Value                '新しいファイルのファイル名
        newFileFolder = ThisWorkbook.Path                     '新しいファイルの保存先フォルダ名
        newFile = newFileFolder & "\" & newFileName & ".csv"  '新しいファイルをフルパスで定義
    '//新しいファイルと同名のファイルが開かれていないか確認
        On Error Resume Next
        Open newFile For Append As #1
        Close #1
        If Err.Number > 0 Then
            '//生成しないで終了
                MsgBox "生成するCSVと同名のファイルがすでに開かれています。" & vbCrLf & newFileName & ".csvファイルを閉じてやり直してください。"
                Workbooks(newFileName & ".csv").Activate
        Else
            '//処理を続行
                '//エラーダイアログを表示しない
                    Application.DisplayAlerts = False
                '//保存するシートをコピー
                    ShCopy.Copy
                '//コピーしたシートを新しいファイルとして保存
                    ActiveWorkbook.SaveAs fileName:=newFile, FileFormat:=xlCSV
                '//新しいファイルを閉じる
                    ActiveWindow.Close
                '//エラーダイアログを表示する
                    Application.DisplayAlerts = True
                '//終了メッセージ
                    MsgBox ("ファイルの作成に成功しました。")
        End If
End Sub

ワンポイント

CSV形式ではなく、XLSX形式で保存するときは、11行目及び18行目の「csv」を「xlsx」に変更してください。
また、27行目を下記の通り変更してください。
                '//コピーしたシートを新しいファイルとして保存
                    ActiveWorkbook.SaveAs fileName:=newFileFolder & "\" & newFileName & ".xlsx", FileFormat:=xlOpenXMLWorkbook

続きを読む

選択した複数のファイルに同じ処理をするVBA例

ファイルを開くダイアログを表示し、選択した複数のファイルに同じ作業を行うときのコードサンプルです。

例として、複数のCSVファイルに

  1. 開く
  2. A1セルの値を変更する
  3. 上書き保存する
  4. 閉じる

を繰り返して行うものとします。

Sub Open_File_Edit()
'====================================================================================
' 複数のCSVファイルを選択し、同じ作業を繰り返すマクロ
'====================================================================================
'//ファイルを開くダイアログを開く
    selectFileName = _
        Application.GetOpenFilename( _
            FileFilter:="CSVファイル(*.csv),*.csv", _
            FilterIndex:=1, _
            Title:="読み込むファイルを選択してください。", _
            MultiSelect:=True _
        )
'//選択したファイルに対する処理
    If IsArray(selectFileName) Then
        '//全てのファイルで繰り返し処理を行う
            For Each oneFileName In selectFileName
                '//選択されたファイルを開く
                    Workbooks.Open oneFileName
                '//変数を定義
                    Dim nameCSV As String
                    Dim newCSV As Workbook
                    Dim sh1st As Worksheet
                    nameCSV = Dir(oneFileName)      'ファイル名を取得
                    Set newCSV = Workbooks(nameCSV) 'ワークブックとして定義
                    Set sh1st = newCSV.Worksheets(1) '1枚目のワークシートを定義
                '//値を変更する
                    sh1st.Range("A1").Value = "セルの値変更テスト"
                '//ワークブックを保存する
                    On Error Resume Next
                    newCSV.Save
                '//ワークブックを閉じて次へ
                    Application.DisplayAlerts = False
                    newCSV.Close
                    Application.DisplayAlerts = True
            Next
    Else
        MsgBox ("ファイルを選択しないで終了")
    End If

End Sub

 

続きを読む

ログインしているユーザーに関連付けられているグループIDで表示を変える方法

freoにログインしているユーザーIDは、[$freo.user.id]で取得できます。
[$freo.user.id]に関連付けられているグループIDは、[$freo.user.groups配列]に格納されています。
一個のユーザーIDに複数のグループIDが関連付けられている可能性があるので、グループIDによって表示を切り替える場合は、下記のようにしてください。

<!--{if in_array(任意のグループID1,$freo.user.groups)}-->
    ログインしているユーザーに関連付けられているグループIDが「任意のグループID1」だった場合の表示
<!--{elseif 任意のグループID2|in_array:$freo.user.groups}-->
    ログインしているユーザーに関連付けられているグループIDが「任意のグループID2」だった場合の表示
<!--{else}-->
    ログインしているユーザーに関連付けられているグループIDに「任意のグループID1」も「任意のグループID2」もなかった場合の表示
<!--{/if}-->

 また、[$freo.user.id]に関連付けられているグループIDを一覧表示する場合は下記のとおりです。

<!--{foreach from=$freo.user.groups item='group_id'}-->
    グループID「{$group_id}」が関連付けられています。
<!--{/foreach}-->

 

続きを読む

ニュースプラグインとかの添付ファイルを増やす方法

当サイトで配布しているニュースプラグインや、バナー付きリンクプラグイン、スケジュールプラグイン、同人イベントプラグインなどは、添付ファイルを登録することができます。
下記の方法を利用すれば、添付ファイルを増やすことができます。

(freo公式で配布されているプロフィール拡張プラグイン、サークル管理プラグイン、ショッピングカートプラグインなども、下記の方法でファイルを増やすことは出来ると思いますが、動作の保証はいたしかねます。)

PHPを編集して登録できるファイル数を増やす

まずは、PHPを編集して登録できるファイル数を増やしましょう。
編集するPHPは、ファイル数を増やしたいプラグインに同梱されている「page.プラグインID.php」です。
(ニュースプラグインの場合なら、[freo/libs/freo/plugins/page.news.php]です)

  1. page.プラグインID.phpをエディタで開く
  2. 「//ファイル番号定義」で検索する。(2箇所以上あると思うので注意すること。)
  3. $numbersがファイル数を決める配列になっているので、下記を参考にしてファイル数を増やす。
    現状、
        //ファイル番号定義
        $numbers = array('', '01', '02', '03', '04', '05', '06', '07', '08', '09', '10');
    
    のようになっていると思う(上記の場合はfile、file01~file10まで登録できるという意味)ので、たとえば登録できるファイル数を20件にしたいなら、
        //ファイル番号定義
        $numbers = array('', '01', '02', '03', '04', '05', '06', '07', '08', '09', '10','11','12','13','14','15','16','17','18','19','20');
    
    のように編集する。
  4. ファイルを上書き保存してアップデートする。

設定ファイルを編集して登録できるファイルの名前を設定項目を増やす

次に、iniファイルを編集して登録できるファイルの名前の設定項目を増やしましょう。
編集するiniファイルは、ファイル数を増やしたいプラグインに同梱されている「プラグインID.ini」です。
(ニュースプラグインの場合なら、[freo/configs/plugins/config.news.ini]です)

  1. news.iniファイルをエディタで開く
  2. 上部の「;」から始まる行が設定項目の内容を定義している箇所なので、たとえば11~20件目を増やしたいなら、、
    ;file01_name   char(30)
    ;file02_name   char(30)
    
      ~ 中略 ~
    
    ;file09_name   char(30)
    ;file10_name   char(30)
    
    の直後に、下記のように加筆する
    ;file11_name   char(30)
    ;file12_name   char(30)
    ;file13_name   char(30)
    ;file14_name   char(30)
    ;file15_name   char(30)
    ;file16_name   char(30)
    ;file17_name   char(30)
    ;file18_name   char(30)
    ;file19_name   char(30)
    ;file20_name   char(30)
    
  3. 下部の「[ファイル]」以降の行が実際に管理画面→設定管理→各プラグインの設定画面で表示される項目箇所なので、たとえば11~20件目を増やしたいなら、
    [ファイル]
    
    ;ファイル01の名前
    file01_name = "ファイル1"
    
    ;ファイル02の名前
    file02_name = "ファイル2"
    
      ~中略~
    
    ;ファイル09の名前
    file09_name = ""
    
    ;ファイル10の名前
    file10_name = ""
    
    の直後に、下記のように加筆する
    ;ファイル11の名前
    file11_name = "ファイル1"
    
    ;ファイル12の名前
    file12_name = "ファイル2"
    
    ;ファイル13の名前
    file13_name = ""
    
    ;ファイル14の名前
    file14_name = ""
    
    ;ファイル15の名前
    file15_name = ""
    
    ;ファイル16の名前
    file16_name = ""
    
    ;ファイル17の名前
    file17_name = ""
    
    ;ファイル18の名前
    file18_name = ""
    
    ;ファイル19の名前
    file19_name = ""
    
    ;ファイル20の名前
    file20_name = ""
    
  4. ファイルを上書き保存してアップデートする。

テンプレートを編集して記事編集フォームにファイルを登録する部品を増やす

最後に、テンプレートを編集して、各プラグインの記事編集フォームにファイルを登録するための部品を増やしましょう。
編集するテンプレートは、ファイル数を増やしたいプラグインに同梱されている「admin_form.html」です。
form.html」が存在するなら、そちらも下記の通り編集する必要があります。
(ニュースプラグインの場合なら、[freo/templates/plugins/admin_form.html]です)

  1. [admin_form.html]をエディタで開く。
  2. <form action="{$freo.core.http_file}/プラグインID/admin_form{if $freo.query.id}?id={$freo.query.id}{/if}" method="post" enctype="multipart/form-data">~</form>内部にファイルを登録するための参照ボタンを増やす。
    たとえば、
                    <h3>添付ファイル</h3>
                    <dl>
                        <!--{if $freo.config.plugin.プラグインID.file01_name}-->
                        <dt>{$freo.config.plugin.プラグインID.file01_name}</dt>
                            <dd>
                                <input type="file" name="plugin_プラグインID[file01]" size="30" />
                                <!--{if $input.plugin_プラグインID.file01}-->
                                    <input type="checkbox" name="plugin_プラグインID[file01_remove]" id="label_file01" value="{$input.plugin_プラグインID.file01}"{if $input.plugin_プラグインID.file01_remove} checked="checked"{/if} /> <label for="label_file01">{$input.plugin_プラグインID.file01}を削除</label>
                                    <input type="hidden" name="plugin_プラグインID[file01]" value="{$input.plugin_プラグインID.file01}" />
                                <!--{/if}-->
                            </dd>
                        <!--{/if}-->
                        
                        ~中略~
                        
                        <!--{if $freo.config.plugin.プラグインID.file10_name}-->
                        <dt>{$freo.config.plugin.プラグインID.file10_name}</dt>
                            <dd>
                                <input type="file" name="plugin_プラグインID[file10]" size="30" />
                                <!--{if $input.plugin_プラグインID.file10}-->
                                    <input type="checkbox" name="plugin_プラグインID[file10_remove]" id="label_file10" value="{$input.plugin_プラグインID.file10}"{if $input.plugin_プラグインID.file10_remove} checked="checked"{/if} /> <label for="label_file10">{$input.plugin_プラグインID.file10}を削除</label>
                                    <input type="hidden" name="plugin_プラグインID[file10]" value="{$input.plugin_プラグインID.file10}" />
                                <!--{/if}-->
                            </dd>
                        <!--{/if}-->
                    </dl>
    
    <dl>~</dl>内部に、のように加筆する。
                        <!--{if $freo.config.plugin.プラグインID.file11_name}-->
                        <dt>{$freo.config.plugin.プラグインID.file11_name}</dt>
                            <dd>
                                <input type="file" name="plugin_プラグインID[file11]" size="30" />
                                <!--{if $input.plugin_プラグインID.file11}-->
                                    <input type="checkbox" name="plugin_プラグインID[file11_remove]" id="label_file11" value="{$input.plugin_プラグインID.file11}"{if $input.plugin_プラグインID.file11_remove} checked="checked"{/if} /> <label for="label_file11">{$input.plugin_プラグインID.file11}を削除</label>
                                    <input type="hidden" name="plugin_プラグインID[file11]" value="{$input.plugin_プラグインID.file11}" />
                                <!--{/if}-->
                            </dd>
                        <!--{/if}-->
                        <!--{if $freo.config.plugin.news.file12_name}-->
                        <dt>{$freo.config.plugin.news.file12_name}</dt>
                            <dd>
                                <input type="file" name="plugin_news[file12]" size="30" />
                                <!--{if $input.plugin_news.file12}-->
                                    <input type="checkbox" name="plugin_news[file12_remove]" id="label_file12" value="{$input.plugin_news.file12}"{if $input.plugin_news.file12_remove} checked="checked"{/if} /> <label for="label_file12">{$input.plugin_news.file12}を削除</label>
                                    <input type="hidden" name="plugin_news[file12]" value="{$input.plugin_news.file12}" />
                                <!--{/if}-->
                            </dd>
                        <!--{/if}-->
                        <!--{if $freo.config.plugin.news.file13_name}-->
                        <dt>{$freo.config.plugin.news.file13_name}</dt>
                            <dd>
                                <input type="file" name="plugin_news[file13]" size="30" />
                                <!--{if $input.plugin_news.file13}-->
                                    <input type="checkbox" name="plugin_news[file13_remove]" id="label_file13" value="{$input.plugin_news.file13}"{if $input.plugin_news.file13_remove} checked="checked"{/if} /> <label for="label_file13">{$input.plugin_news.file13}を削除</label>
                                    <input type="hidden" name="plugin_news[file13]" value="{$input.plugin_news.file13}" />
                                <!--{/if}-->
                            </dd>
                        <!--{/if}-->
                        <!--{if $freo.config.plugin.news.file14_name}-->
                        <dt>{$freo.config.plugin.news.file14_name}</dt>
                            <dd>
                                <input type="file" name="plugin_news[file14]" size="30" />
                                <!--{if $input.plugin_news.file14}-->
                                    <input type="checkbox" name="plugin_news[file14_remove]" id="label_file14" value="{$input.plugin_news.file14}"{if $input.plugin_news.file14_remove} checked="checked"{/if} /> <label for="label_file14">{$input.plugin_news.file14}を削除</label>
                                    <input type="hidden" name="plugin_news[file14]" value="{$input.plugin_news.file14}" />
                                <!--{/if}-->
                            </dd>
                        <!--{/if}-->
                        <!--{if $freo.config.plugin.news.file15_name}-->
                        <dt>{$freo.config.plugin.news.file15_name}</dt>
                            <dd>
                                <input type="file" name="plugin_news[file15]" size="30" />
                                <!--{if $input.plugin_news.file15}-->
                                    <input type="checkbox" name="plugin_news[file15_remove]" id="label_file15" value="{$input.plugin_news.file15}"{if $input.plugin_news.file15_remove} checked="checked"{/if} /> <label for="label_file15">{$input.plugin_news.file15}を削除</label>
                                    <input type="hidden" name="plugin_news[file15]" value="{$input.plugin_news.file15}" />
                                <!--{/if}-->
                            </dd>
                        <!--{/if}-->
                        <!--{if $freo.config.plugin.news.file16_name}-->
                        <dt>{$freo.config.plugin.news.file16_name}</dt>
                            <dd>
                                <input type="file" name="plugin_news[file16]" size="30" />
                                <!--{if $input.plugin_news.file16}-->
                                    <input type="checkbox" name="plugin_news[file16_remove]" id="label_file16" value="{$input.plugin_news.file16}"{if $input.plugin_news.file16_remove} checked="checked"{/if} /> <label for="label_file16">{$input.plugin_news.file16}を削除</label>
                                    <input type="hidden" name="plugin_news[file16]" value="{$input.plugin_news.file16}" />
                                <!--{/if}-->
                            </dd>
                        <!--{/if}-->
                        <!--{if $freo.config.plugin.news.file17_name}-->
                        <dt>{$freo.config.plugin.news.file17_name}</dt>
                            <dd>
                                <input type="file" name="plugin_news[file17]" size="30" />
                                <!--{if $input.plugin_news.file17}-->
                                    <input type="checkbox" name="plugin_news[file17_remove]" id="label_file17" value="{$input.plugin_news.file17}"{if $input.plugin_news.file17_remove} checked="checked"{/if} /> <label for="label_file17">{$input.plugin_news.file17}を削除</label>
                                    <input type="hidden" name="plugin_news[file17]" value="{$input.plugin_news.file17}" />
                                <!--{/if}-->
                            </dd>
                        <!--{/if}-->
                        <!--{if $freo.config.plugin.news.file18_name}-->
                        <dt>{$freo.config.plugin.news.file18_name}</dt>
                            <dd>
                                <input type="file" name="plugin_news[file18]" size="30" />
                                <!--{if $input.plugin_news.file18}-->
                                    <input type="checkbox" name="plugin_news[file18_remove]" id="label_file18" value="{$input.plugin_news.file18}"{if $input.plugin_news.file18_remove} checked="checked"{/if} /> <label for="label_file18">{$input.plugin_news.file18}を削除</label>
                                    <input type="hidden" name="plugin_news[file18]" value="{$input.plugin_news.file18}" />
                                <!--{/if}-->
                            </dd>
                        <!--{/if}-->
                        <!--{if $freo.config.plugin.news.file19_name}-->
                        <dt>{$freo.config.plugin.news.file19_name}</dt>
                            <dd>
                                <input type="file" name="plugin_news[file19]" size="30" />
                                <!--{if $input.plugin_news.file19}-->
                                    <input type="checkbox" name="plugin_news[file19_remove]" id="label_file19" value="{$input.plugin_news.file19}"{if $input.plugin_news.file19_remove} checked="checked"{/if} /> <label for="label_file19">{$input.plugin_news.file19}を削除</label>
                                    <input type="hidden" name="plugin_news[file19]" value="{$input.plugin_news.file19}" />
                                <!--{/if}-->
                            </dd>
                        <!--{/if}-->
                        <!--{if $freo.config.plugin.プラグインID.file20_name}-->
                        <dt>{$freo.config.plugin.プラグインID.file20_name}</dt>
                            <dd>
                                <input type="file" name="plugin_プラグインID[file20]" size="30" />
                                <!--{if $input.plugin_プラグインID.file20}-->
                                    <input type="checkbox" name="plugin_プラグインID[file20_remove]" id="label_file20" value="{$input.plugin_プラグインID.file20}"{if $input.plugin_プラグインID.file20_remove} checked="checked"{/if} /> <label for="label_file20">{$input.plugin_プラグインID.file20}を削除</label>
                                    <input type="hidden" name="plugin_プラグインID[file20]" value="{$input.plugin_プラグインID.file20}" />
                                <!--{/if}-->
                            </dd>
                        <!--{/if}-->
    
  3. ファイルを上書き保存してアップデートする。

注意事項

上記手順でファイルを登録する数を増やすことはできますが、いざファイルを一括登録する時には、サーバーのphp.iniの設定に注意しなければなりません。

サーバーによっては、1度にアップロードできるファイル数、また、アップロードできるファイルサイズに制限がある場合があります。
詳しくは、freoを設置しているサーバーの、php.iniの下記項目をご確認ください。

max_file_uploads … 最大アップロードファイル数
post_max_size … POSTデータの最大サイズ(合計サイズ)
upload_max_filesize … 1ファイルあたりの最大アップロードサイズ

続きを読む

エントリーページ移動

ユーティリティ

Twitter

記事検索

ページ上部へ