csv2newpage.inc.php

サマリCSVページからレコードを読み込んでページを自動生成するプラグイン
リビジョン0.14
対応バージョン1.4.3
投稿者sha
投稿日2003-08-08 (FRI) 00:28:00

背景

「質問箱/234」を受けて試しに作成。ユーザは若干1名以下かもしんないけど(^_^;)。という事情から、バージョンアップは、なるべくしない予定。。。需要があるなら考えますが。。。とか言ってるうちに、なかなか使い勝手の良いプラグインになってしまったようです。これで誰も使ってくれなかったらどうしよう。。。

質問箱/234 から抜粋

例えば、以下のようにデータが記録されているCSVファイルがあるとします。

"商品名","価格","メーカー名","備考"
"商品A","5000円","ABC","サンプル"
・
・

このCSVファイルを読み込み、

■ページ名:商品A
○価格:5000円
○メーカー名:ABC
○備考:サンプル
○コメント欄

といった新規ページを一括して作ることはできないでしょうか? カード型データベースのためのプラグインでできないかと思ったのですが、ファイルから読み込むことができないようなので……。

概要

操作概要

【0】準備
  1. :config/plugin/tracker/設定名/page」に自動作成するページのテンプレートを用意。
  2. :config/plugin/tracker/設定名」に、上のテンプレートで用いられるパラメータの定義を記述。同様に、「.../list」や「.../form」も用意しておく。

【1】CSVをページに添付すると同時に実行する場合
  1. 上層となるページを[新規]で作成し、そこに、#csv2newpage(設定名, upload, <スキップレコード数>, <フィールド順にパラメータ名を記述>)を記入。
  2. 「ページの更新」をすると、画面に#attachと同様の添付フィールドが出現するので、CSVファイルを指定して「添付&実行」ボタンを押す。
  3. そのページの各行が処理されて、そのページの下層に新規ページが自動生成される。

【2】CSVをページに記載して実行する場合
  1. 上層となるページを[新規]で作成し、CSVファイルをコピー&ペーストする。
  2. そのすぐ上の行に、#csv2newpage(設定名,<フィールド順にパラメータ名を記述>)を記入。
  3. 「ページの更新」をすると、画面に「実行」ボタンが表示されるので、それを押す。
  4. そのページの各行が処理されて、そのページの下層に新規ページが自動生成される。

使用法

ブロック型プラグイン

使用例

【0】準備

【1】CSVをページに添付すると同時に実行する方法
  1. 今、下記のようなCSVファイルがあったとする。
    製品名,モデル名,販売価格,担当者,電話番号
    オレンジPC,3H0123P,100000,担当A,03-1111-xxxx
    パイナップルPC,3H0124P,100000,担当B,03-1111-xxxx
    愛媛みかんPC,3H0125P,100000,担当C,03-1111-xxxx
    ごーやPC,3H0126P,100000,担当D,03-1111-xxxx
      ..... と続く .....
  2. このときに次のように「ページA」に記載する。
    #csv2newpage(製品テーブル, upload, 1, product, model, price, name, phone)
    • upload, 1,で、アップロード用フォームの表示と、CSVを先頭から1行スキップする指定となる。
    • 第1レコードの例では、productが「オレンジPC」、modelが「3H0123P」、priceが「100000」以下同様、と対応付く。
    • カンマや縦棒を、""で囲ってもフィールド区切りを避けることはできない。それらを含む文字列をCSVに用いてはいけない。面倒なので、これは仕様です。→v0.11より対応しました。
    • もちろん、各パラメータ「product, model, price, name, phone」は前述の「:config/plugin/tracker/製品テーブル{,/form,/page,/list}」にて定義されていなければならない。
  3. すると、その場に、#attachと同様のファイルの添付フォームが出現するので、CSVファイルを指定して[添付&実行]ボタンを押す。
  4. すると、CSVファイルが「ページA」に添付されると同時に、CSVファイルの各行が処理されて、新規ページが「ページA」の下に生成される。
    • 同じCSVファイル名のファイルを実行しても、ファイル名が修正されて「ページA」に添付されます。この方法で実行したファイルは添付の形で残るので、どんな新規ファイルを生成したのかのログとして利用できます。

【2】CSVをページに記載して実行する方法
  1. 今、「ページA」にて下記のように記載する。CSVファイルの部分はコピー&ペーストして記載する。
    #csv2newpage(製品テーブル, product, model, price, name, phone)
    ,オレンジPC,3H0123P,100000,担当A,03-1111-xxxx
    ,パイナップルPC,3H0124P,100000,担当B,03-1111-xxxx
    ,愛媛みかんPC,3H0125P,100000,担当C,03-1111-xxxx
    ,ごーやPC,3H0126P,100000,担当D,03-1111-xxxx
      ..... と続く .....
    • CSVの各レコード(行)を入力する場合、その行頭に、カンマ「,」か半角スペース「 」か半角縦棒「|を挿入しておかなければならない。上の例はカンマ。
    • また、CSVのレコード以外に、これらを行頭に置いた行を作ってはいけない。誤動作する。
    • #csv2newpageの直後(子要素)のCSVを処理する。空行(半角空白行も含む)または次の#csv2newpageが来るまで、対象となるCSV行をサーチする。
    • それ以外の注意点は、前述(【1】2.)と同じ。
  2. 編集画面で[ページの更新]を押すと、「ページA」に[実行]ボタンが現れるので、それを押す。
  3. すると、CSVファイルの各行が処理されて、新規ページが「ページA」の下に生成される。

【表示例】↓


新規ページ生成:[実行]

オレンジPC3H0123P100000担当A03-1111-xxxx
パイナップルPC3H0124P100000担当B03-1111-xxxx
愛媛みかんPC3H0125P100000担当C03-1111-xxxx
ごーやPC3H0126P100000担当D03-1111-xxxx

【3】実行結果の表示
  • 【1】【2】の両方の場合で実行すると、「ページA/1」〜「ページA/4」というページ名で「:config/plugin/tracker/製品テーブル/page」のテンプレートに従って、新規生成され、新規されたページ名のリストを出力する。
    *Newpages under [[ページA]]
    + [[ページA/1]] --- オレンジPC,3H0123P,100000,担当A,03-1111-xxxx 
    + [[ページA/2]] --- パイナップルPC,3H0124P,100000,担当B,03-1111-xxxx
    + [[ページA/3]] --- 愛媛みかんPC,3H0125P,100000,担当C,03-1111-xxxx
    + [[ページA/4]] --- ごーやPC,3H0126P,100000,担当D,03-1111-xxxx
  • ちなみに、パラメータとして「_page」を用意しておくと、ページ名が数字ではない、CSVのフィールドの内容をページ名とする「ページA/ページ名」のページを生成する。<==-もう少し詳しく書いていただけないでしょうか。どうしても、パラメータで渡したファイル名がうまく生成できません。連番のファイルはできるのですが。お願いします。
  • 特に【2】の場合、「ページA」内は、CSVの行頭にコメント記号「//」が挿入され、結局下記のようになる。
    #csv2newpage(製品テーブル, product, model, price, name, phone)
    //,オレンジPC,3H0123P,100000,担当A,03-1111-xxxx
    //,パイナップルPC,3H0124P,100000,担当B,03-1111-xxxx
    //,愛媛みかんPC,3H0125P,100000,担当C,03-1111-xxxx
    //,ごーやPC,3H0126P,100000,担当D,03-1111-xxxx
  • こうして完了する。
  • ちなみに、「ページA」内に#tracker_list(製品テーブル)を記述しておくと、生成されたページのリストが展開表示される。

ダウンロード

需要調査

このプラグインを使用していますか?一人1回のみ投票して下さい。

選択肢投票
使用している72

コメント


添付ファイル: filecsv2newpage.inc.php.14 4785件 [詳細] filetest2.csv 1355件 [詳細] filecsv2newpage.inc.php.13 2939件 [詳細] filecsv2newpage.inc.php.12 2821件 [詳細] filecsv2newpage.inc.php.11 2719件 [詳細]

トップ   編集 凍結 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2023-11-21 (火) 23:42:13
Site admin: PukiWiki Development Team

PukiWiki 1.5.4+ © 2001-2022 PukiWiki Development Team. Powered by PHP 8.2.12. HTML convert time: 0.450 sec.

SourceForge