Your SlideShare is downloading. ×
簡単なTYPO3エクステンションの作成
簡単なTYPO3エクステンションの作成
簡単なTYPO3エクステンションの作成
簡単なTYPO3エクステンションの作成
簡単なTYPO3エクステンションの作成
簡単なTYPO3エクステンションの作成
簡単なTYPO3エクステンションの作成
簡単なTYPO3エクステンションの作成
簡単なTYPO3エクステンションの作成
簡単なTYPO3エクステンションの作成
簡単なTYPO3エクステンションの作成
簡単なTYPO3エクステンションの作成
簡単なTYPO3エクステンションの作成
簡単なTYPO3エクステンションの作成
Upcoming SlideShare
Loading in...5
×

Thanks for flagging this SlideShare!

Oops! An error has occurred.

×
Saving this for later? Get the SlideShare app to save on your phone or tablet. Read anywhere, anytime – even offline.
Text the download link to your phone
Standard text messaging rates apply

簡単なTYPO3エクステンションの作成

1,508

Published on

TYPO3のエクステンション開発に関する一番初歩のチュートリアル。 …

TYPO3のエクステンション開発に関する一番初歩のチュートリアル。
Kickstarterというエクステンションを利用してサッカー選手のプロフィールデータを管理できるようにするというシナリオの元、簡単なフィールド追加操作を学習します。

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,508
On Slideshare
0
From Embeds
0
Number of Embeds
2
Actions
Shares
0
Downloads
7
Comments
0
Likes
0
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. 簡単な TYPO3 エクステンションの作成 Extension Key: player_profile_basic Copyright 2000-2002, Oliver Hofmann, <marketing@viv-it.de> This document is published under the Open Content License available from http://www.opencontent.org/opl.shtml The content of this document is related to TYPO3 - a GNU/GPL CMS/Framework available from www.typo3.com 翻訳: コトトイ・ファクトリー株式会社 (http://kototoy.jp/) 藤田 拓 < taku.fujita@kototoy.jp >目次簡単な TYPO3 エクステンションの作成.......1 フロントエンド表示のための準備..............................5 はじめに........................................................................... 2 エクステンションの拡張(Last name フィールドを追 加).............................................................................9 何を作る?.................................................................. 2 このエクステンションを拡張する際の留意点..........10 チュートリアル................................................................ 2 TypoScript によるエクステンション対応................. 10 Kickstarter ウィザード................................................ 2 エクステンション - 本サンプルをさらに拡張したもの Frontend plugin........................................................... 4 (コードのみ)......................................................... 11 Static TypoScript code................................................ 4 既知の問題..................................................................... 13 エクステンションの保存............................................ 4 To-Do list........................................................................ 13 エクステンションのインストール..............................5 Changelog...................................................................... 13 選手のデータを作成する............................................ 5 簡単な TYPO3 エクステンションの作成 - 1
  • 2. はじめにこのチュートリアルは初心者向けです。初心者じゃない人たちもこのチュートリアルをベースに、より発展的な理解を得ることができるでしょう。このチュートリアルを読めば、初心者もそうじゃない人も TYPO3 の理解を一歩進めることができると思います。そして、TYPO3 をもっと使いこんで見てください!TYPO3 コミュニティの栄光はあなたのものとなりえます :-)もしこのチュートリアルに間違いやおかしい部分があったら直接メールを送っていただくか、注釈をおねがいします。typo3.org のユーザーに登録してログインしていただくと直接注釈ができます。何を作る?このチュートリアルでは「フロントエンド画面に画像とテキストフィールドを表示する」簡単なエクステンションを作成します。そして、それらを作った後、さらにもう1つテキストフィールドを追加しフロントエンドで表示する拡張を行います。ここでは PHP コードと TypoScript を利用してこのエクステンションを作成します。チュートリアルこのチュートリアルではフロントエンドにコンテンツを表示する簡単なエクステンションの作り方を紹介しています。あくまでエクステンション Kickstarter の使い方とフロントエンドでの表示のやり方をお見せしているだけで、初歩中の初歩とお考えください。そして、この初歩を手始めに今後のアイディアを拡げていただければ幸いです。シナリオとしては、 TYPO3 を利用しているサッカークラブが選手のプロフィールを管理できるようにしたいという要件に対応するエクステンションを開発する流れです。プロフィールには選手の写真と名前、そしてさらに詳しい情報を付与するためのフィールドも求められています。Kickstarter ウィザードKickstarter ウィザードを利用すればエクステンションがとても簡単に作成できます。まずはバックエンド管理画面にログインし、ツールモジュールの Extension Manager をクリックしてください。そして、ドロップダウンメニューから「Make new extension」を選択した後、extension key として適当な名前を入力してください。今回は「player_profile」という名前にします。では、はじめてみましょう。• エクステンションについての属性情報を入力します。 General info Title(Player Profile)、Description(Display profile of soccer player )、Category(Frontend Plugins)、State(alpha)、Dependencies(cms)、Author Name(あなたの名前)、Author email(あなたの E メールアドレス)• 新しいデータベーステーブルを作成します。といっても、管理画面の設定を行えば作成できます。 New Database Tables Tablename: tx_playerprofile_list Title of the table: Display player profile、 Add Deleted field: 、 Add Hidden flag: 、 Add Access group 、 Manual ordering of records: Allowed on pages: Allowed in Insert Records field in content elements: Add Save and new button in forms: 簡単な TYPO3 エクステンションの作成 - 2
  • 3. • 言語の設定 Setup languages 第二言語も含めてエクステンションを作成するため、本ケースでは German にチェックをいれます。その後、各 German のフィール ドにドイツ語の翻訳を入力することが可能です。• 画像を扱う image フィールドを作成 NEW FIELD: image Field name や Field tile、Field type、Is Exclude-field を入力して update を押します。 and そして、Max number of files(今回は 1)や Max filesize allowed(今回は 1000kb)、Size of selector box(今回は 1)、Show thumbnails 等の画像ファイルのプロパティ を決めていきます。• 名前を入力する first_name フィールドを作成 FIELD: first_name Enter field name (今回は first_name)、 field title (今回は First name)、 field type (今回は string input)、 Is Exclude-field を入 力して update を押します。 and その後、Field width (今回は 30)、 Max characters (今回は 50)、 Required 、 Create VARCHAR, not TINYTEXT field 等のプロパティを決めていきます。 簡単な TYPO3 エクステンションの作成 - 3
  • 4. Frontend pluginフロントエンドで利用できるエクステンションとして登録するため、Frontend plugin をクリックします。プラグインの英語のタイトルとしてPlayer profile、 ドイツ語のタイトルとして Spielerprofil を入力します。 Insert Plugin list in Content Elements のラジオボタンはそのままにしておきます。その他は今回はそのままにしておきます。Static TypoScript codeあとで画像の幅と高さを設定するためにちょっとしたコードを追加します。なので、Static TypoScript code の Setup フィールドにいくつかのダミーテキスト(ここでは#Constants)を入力しておきましょう。エクステンションの保存• まず、View result をクリックします。• ページが再度読み込まれたら、ドロップダウンメニューの Write to location から Local を選択してダイアログボックスの OK を押して ください。• ページが再読み込みされ、the Extension got copied successfully to the server といったメッセージが表示されます。 簡単な TYPO3 エクステンションの作成 - 4
  • 5. エクステンションのインストール• これで Kickstarter での操作はひと通り終わりました。エクステンション Player Profile をインストールすることが可能です。• Make updates をクリックして、完了です。選手のデータを作成する• ページツリーを開いて、Our Players という新規ページを作成しましょう。このページは選手のプロフィールを表示 します。• 新規ページコンテンツ要素(例えば regular text element.)を作成しましょう。例)• タイプを insert plugin.に変更します。• ドロップダウンメニューから Player profile を選択し保存します。• Our players のページアイコンをクリックして 新規データを作成します。• Display player profile を選択します。• それから選手のデータを入力します。たとえば First name には Franz を入力し、画像をアップします。• 保存します。フロントエンド表示のための準備Kickstarter での操作はひと通りおえましたが、フロントエンドには何も表示されないでしょう。選手のデータを表示させるには数行のコードを書く必要があります。• Kickstarter が出力したファイルを編集するため、まずは Extension Manager を開きます。そして、 Player Profile extension を探しましょう。• Extension Manager で右上のドロップダウンメニューから Edit files を選択しましょう。• Player Profile のフロントエンド表示を変更するために pi1/class.tx_playerprofile_p1.php を編集します。今回は下記のコードをコ ピー&ペーストすることもできます。コードをみると「Last name」用の記述がコメントアウトされていることに気づくでしょう。この部分は あとでこのエクステンションを拡張して Last name 用のフィールドを作るためのものです。ですが、今は無視してください。• 特定の幅と高さの画像のポップアップを表示するために ext_typoscript_setup.txt というファイルを編集します。このコードも下記に 用意してあるのでコピー&ペーストしてもよいです。• 保存してください。 簡単な TYPO3 エクステンションの作成 - 5
  • 6. pi1/class.tx_playerprofile_pi1.phpコードとコメント<?php/**************************************************************** Copyright notice** (c) 2003 Oliver Hofmann (marketing@viv-it.de)* All rights reserved** This script is part of the Typo3 project. The Typo3 project is* free software; you can redistribute it and/or modify* it under the terms of the GNU General Public License as published by* the Free Software Foundation; either version 2 of the License, or* (at your option) any later version.** The GNU General Public License can be found at* http://www.gnu.org/copyleft/gpl.html.** This script is distributed in the hope that it will be useful,* but WITHOUT ANY WARRANTY; without even the implied warranty of* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the* GNU General Public License for more details.** This copyright notice MUST APPEAR in all copies of the script!***************************************************************//** * Plugin Player profile for the player_profile extension. * * @author Oliver Hofmann <marketing@viv-it.de>, Michael Dengler <info@diacc.de>, Andreas Schwarzkopf<info@meinsystem.de> */require_once(PATH_tslib."class.tslib_pibase.php");class tx_playerprofile_pi1 extends tslib_pibase { var $prefixId = "tx_playerprofile_pi1"; // Same as class name – no _ allowed var $scriptRelPath = "pi1/class.tx_playerprofile_pi1.php"; // Path to this script relative to theextension dir. var $extKey = "player_profile"; // The extension key. var $conf; /** * [Output for image, first name and last name] */ function main($content,$conf) { $this->conf = $conf; $content=""; $rows=$this->getItems(); while(list($c,$row)=each($rows)) { $this->conf["image."]["file"] = "uploads/tx_playerprofile/".($row["image"]); //The imagefield name $theImgCode=$this->cObj->IMAGE($this->conf["image."]); $content.=$theImgCode."<br>"; $content.=($row["first_name"])."&nbsp;"; //This outputs thefirst name // $content.=($row["last_name"])."<br><br>"; //This is theadditional field //next, the output displayed in a table $content.="<table border=1><tr><td>".($row["first_name"])."</td></tr>"; $content.="<tr><td>".($row["last_name"])."</td></tr></table>"; }#t3lib_div::debug($conf);#t3lib_div::debug($this->getItems()); return $content; } 簡単な TYPO3 エクステンションの作成 - 6
  • 7. /** * function. */ function getItems() { // pid_list is the pid/list of pids from where to fetch the guest items. $config["pid_list"] = trim($this->cObj->stdWrap($this->conf["pid_list"],$this->conf["pid_list."])); $config["pid_list"] = $config["pid_list"] ? implode(t3lib_div::intExplode(",",$config["pid_list"]),",") : $GLOBALS["TSFE"]->id; list($pid) = explode(",",$config["pid_list"]); $query = "SELECT * FROM tx_playerprofile_list WHERE pid IN (".$pid.") ORDER BY sorting"; $res = mysql(TYPO3_db,$query); $out=array(); while($row = mysql_fetch_assoc($res)) { $out[]=$row; } return $out; }}if (defined("TYPO3_MODE") && $TYPO3_CONF_VARS[TYPO3_MODE]["XCLASS"]["ext/player_profile/pi1/class.tx_playerprofile_pi1.php"]) { include_once($TYPO3_CONF_VARS[TYPO3_MODE]["XCLASS"]["ext/player_profile/pi1/class.tx_playerprofile_pi1.php"]);}?>ext_typoscript_setup.txt詳細を知りたい場合は TypoScript リファレンスの 49 ページを参照してください。plugin.tx_playerprofile_pi1 {image { file.maxW = {$plugin.player_profile.maxW_single} imageLinkWrap = {$plugin.player_profile.clickEnlarge} imageLinkWrap { enable = 1 bodyTag = <BODY bgColor=white> wrap = <A href="javascript:close();"> | </A> width = 400m height = 400 JSwindow = 1 JSwindow.newWindow = 1 JSwindow.expand = 17,20 } }}ext_typoscript_constants.txtここでサムネイル画像の大きさを 70 ピクセルに指定します。file.maxW = {$plugin.player_profile.maxW_single} = 70 簡単な TYPO3 エクステンションの作成 - 7
  • 8. pi1/class.tx_playerprofilebasic_pi1.phpplayer_profile_basic エクステンションのサンプルコードtyposcript_setup.txt と typoscript.constants.txt は適宜変更してください。<?php/**************************************************************** Copyright notice** (c) 2003 Oliver Hofmann (marketing@viv-it.de)* All rights reserved** This script is part of the Typo3 project. The Typo3 project is* free software; you can redistribute it and/or modify* it under the terms of the GNU General Public License as published by* the Free Software Foundation; either version 2 of the License, or* (at your option) any later version.** The GNU General Public License can be found at* http://www.gnu.org/copyleft/gpl.html.** This script is distributed in the hope that it will be useful,* but WITHOUT ANY WARRANTY; without even the implied warranty of* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the* GNU General Public License for more details.** This copyright notice MUST APPEAR in all copies of the script!***************************************************************//** * Plugin Player profile for the player_profile_basic extension. * * @author Oliver Hofmann <marketing@viv-it.de>, Michael Dengler <info@diacc.de>, Andreas Schwarzkopf<info@meinsystem.de> */require_once(PATH_tslib."class.tslib_pibase.php");class tx_playerprofilebasic_pi1 extends tslib_pibase { var $prefixId = "tx_playerprofilebasic_pi1"; // Same as class name – no _ allowed var $scriptRelPath = "pi1/class.tx_playerprofilebasic_pi1.php"; // Path to this scriptrelative to the extension dir. var $extKey = "player_profile"; // The extension key. var $conf; /** * [Output for image, first name and last name] */ function main($content,$conf) { $this->conf = $conf; $content=""; $rows=$this->getItems(); while(list($c,$row)=each($rows)) { $this->conf["image."]["file"] = "uploads/tx_playerprofilebasic/".($row["image"]); //Theimage field name $theImgCode=$this->cObj->IMAGE($this->conf["image."]); $content.=$theImgCode."<br>"; $content.=($row["first_name"])."&nbsp;"; //This outputs thefirst name // $content.=($row["last_name"])."<br><br>"; //This is theadditional field //next, the output displayed in a table $content.="<table border=1><tr><td>".($row["first_name"])."</td></tr>"; $content.="<tr><td>".($row["last_name"])."</td></tr></table>"; }#t3lib_div::debug($conf);#t3lib_div::debug($this->getItems()); return $content; } /** * function. */ function getItems() { 簡単な TYPO3 エクステンションの作成 - 8
  • 9. // pid_list is the pid/list of pids from where to fetch the guest items. $config["pid_list"] = trim($this->cObj->stdWrap($this->conf["pid_list"],$this->conf["pid_list."])); $config["pid_list"] = $config["pid_list"] ? implode(t3lib_div::intExplode(",",$config["pid_list"]),",") : $GLOBALS["TSFE"]->id; list($pid) = explode(",",$config["pid_list"]); $query = "SELECT * FROM tx_playerprofilebasic_list WHERE pid IN (".$pid.") ORDER BYsorting"; $res = mysql(TYPO3_db,$query); $out=array(); while($row = mysql_fetch_assoc($res)) { $out[]=$row; } return $out; }}if (defined("TYPO3_MODE") && $TYPO3_CONF_VARS[TYPO3_MODE]["XCLASS"]["ext/player_profile_basic/pi1/class.tx_playerprofilebasic_pi1.php"]) { include_once($TYPO3_CONF_VARS[TYPO3_MODE]["XCLASS"]["ext/player_profile_basic/pi1/class.tx_playerprofilebasic_pi1.php"]);}?> 簡単な TYPO3 エクステンションの作成 - 9
  • 10. エクステンションの拡張(Last name フィールドを追加)選手の First name と画像だけではなく Last Name も入力できるように拡張してみましょう。これまでは Kickstarter をひと通り操作し、フロントエンド表示のためのファイルも編集してきました。Last name フィールドを追加するには class ファイルを編集しなくてはなりません。• まず、Extension Manager を開き、Player Profile を探します。そして、KickStarter で作成された現在のファイルを 編集します。• 右上のドロップダウンメニューから Backup/Delete を選択し、 start new. をクリックします。• Last name フィールドをデータベースのテーブルに追加するために Display player profile をクリックします。• 新しいフィールド名として Last_name を追加し field title (Last name)、 field type (string input)、 Is Exclude-field を入力、そして、 Field width (30)、 Max characters (50)、 Required 、 Create VARCHAR、 not TINYTEXT field といったプロパティを設定し ます。• 注意! update ボタンをクリックしたら Extension Manager は既存の設定を上書きします。pi1/class.tx_playerprofile_pi1.php や ext_typoscript_setup.txt はあらかじめ別途保存しておいてください。• Update します。• View result が表示されます。• Extension Manager を開き、Player Profile のドロップダウンメニューから edit files を選択します。• the pi1/class.tx_playerprofile_pi1.php を開き、すでにこのファイルにコメントアウトして記述されている Last name フィールド用の1 下記行のコメントアウトを外します。• $content.=$row["last_name"].";エクステンションを拡張する際の留意点もしこのサンプルコードをベースに独自のエクステンションを作ろうとする場合は、Kickstarter を利用しつつ、このチュートリアルの内容に沿ってファイルを編集していってください。また、player_profile_basic と名付けられエクステンションの class ファイルでは playerprofile と書かれています。エクステンション名に含まれるアンダースコアは消されています。例えば、my_gallery と命名したエクステンションを新しく作ると、class ファイル内では mygallery と記載されます。 簡単な TYPO3 エクステンションの作成 - 10
  • 11. TypoScript によるエクステンション対応PHP クラスを使わず、TypoScript を使うこともできます。例えば、フロントエンド表示をコントロールするために template setup フィールドにTypoScript を記述して対応することも可能です。この例では機能的にちょっとだけ違うものを用意しました。まず、選手の画像と Lastname が表示され、選手をクリックすると詳細情報が表示されます。page.10.subparts.CONTENT > // overwrites statements in theroot templatepage.10.subparts.CONTENT = CONTENTpage.10.subparts.CONTENT { table = tx_playerprofile_2_listextended // takes the table created withthe kickstarter select.pidInList = this // the current pidwhere the plugin is installed – could be also an uid wrap = <table>|<tr><td><a href="javascript:history.back()">back tolist</a><td></tr></table> // link back to player overview list renderObj = COA renderObj.10 = IMAGE // definitions for theimage start here renderObj.10.file.import = uploads/tx_playerprofile_2/ // the upload folder for the images renderObj.10.file.import.field = image // defines that the image fieldshould be taken renderObj.10.file.import.listNum = 0 renderObj.10.stdWrap.typolink.parameter.data = TSFE:id renderObj.10.stdWrap.typolink.additionalParams.dataWrap = &playeruid={field:uid} renderObj.10.stdWrap.wrap = <tr><td>|</td></tr> // image put in first table row renderObj.10.stdWrap.typolink.no_cache = 1 renderObj.20 = TEXT renderObj.20.field = first_name renderObj.20.wrap = <tr><td>|</td></tr> // first name field displayed insecond table row renderObj.30 = TEXT renderObj.30.field = last_name renderObj.30.wrap = <tr><td>|</td></tr> // last name field displayed inthird table row}// Start of conditions for the above typoscript code, similar to if / else statement[globalVar = GP:playeruid > 0]page.10.subparts.CONTENT.select.where = 1=1page.10.subparts.CONTENT.select.andWhere.dataWrap = uid={GPvar:playeruid}[else]page.10.subparts.CONTENT.wrap = <table>|</table># page.10.subparts.CONTENT.renderObj.20 > // the first name will be shown on the overviewlist because here it is commented outpage.10.subparts.CONTENT.renderObj.30 > // the last name is taken out from beingdisplayed[global]// Conditions end here 簡単な TYPO3 エクステンションの作成 - 11
  • 12. エクステンション - 本サンプルをさらに拡張したもの(コードのみ)下記ポイントに留意して今までの基本バージョンを拡張したコードです。• 一覧表示と個別表示の対応<?php/**************************************************************** Copyright notice** (c) 2003 Oliver Hofmann (marketing@viv-it.de)* All rights reserved** This script is part of the Typo3 project. The Typo3 project is* free software; you can redistribute it and/or modify* it under the terms of the GNU General Public License as published by* the Free Software Foundation; either version 2 of the License, or* (at your option) any later version.** The GNU General Public License can be found at* http://www.gnu.org/copyleft/gpl.html.** This script is distributed in the hope that it will be useful,* but WITHOUT ANY WARRANTY; without even the implied warranty of* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the* GNU General Public License for more details.** This copyright notice MUST APPEAR in all copies of the script!***************************************************************//** * Plugin Player profile for the player_profile extension. * * @author Oliver Hofmann <marketing@viv-it.de>, Michael Dengler <info@diacc.de>, Andreas Schwarzkopf<info@meinsystem.de> */require_once(PATH_tslib."class.tslib_pibase.php");class tx_playerprofile_pi1 extends tslib_pibase { var $prefixId = "tx_playerprofile_pi1"; // Same as class name var $scriptRelPath = "pi1/class.tx_playerprofile_pi1.php"; // Path to this script relative to theextension dir. var $extKey = "player_profile"; // The extension key. var $conf; /** * [Put your description here] */ function main($content,$conf) { $this->conf = $conf; $content=""; $GLOBALS["TSFE"]->set_no_cache(); if(t3lib_div::GPvar("player")) { $row = $this->getSingle(t3lib_div::GPvar("player")); $this->conf["image."]["file"] = "uploads/tx_playerprofile/".$row["image"]; $theImgCode=$this->cObj->IMAGE($this->conf["image."]); $content.="<table border=0><tr><td></td><td>".$theImgCode."</td></tr>"; $content.="<tr><td>Name:</td><td>".$row["last_name"]."&nbsp;".$row["first_name"]."</td></tr>"; $content.="<tr><td>Year:</td><td>".$row["year"]."</td></tr>"; $content.="<tr><td valign=top>Nationality:</td><td>".$row["nationality"]."</td></tr>"; $content.="<tr><td>Position:</td><td>".$row["position"]."</td></tr>"; $content.="<tr><td valign=top>Formerclubs:</td><td>".nl2br($row["club"])."</td></tr>"; $content.="<tr><td>Favorite clubs:</td><td>".$row["favorite_club"]."</td></tr>"; $content.="<tr><td valign=top>Hobbies:</td><td>".$row["hobbies"]."</td></tr>"; $content.="<tr><td valign=top> Favorite meal:</td><td>". 簡単な TYPO3 エクステンションの作成 - 12
  • 13. $row["food"]."</td></tr>"; $content.="<tr><td valign=top>Music:</td><td>".$row["music"]."</td></tr>"; $content.="<tr><td valign=top>Profession/studies:</td><td>".$row["profession"]."</td></tr>"; $content.="<tr><td valign=top>Message to the fans:</td><td>".$row["message"]."</td></tr>"; $content.="<tr><td colspan=2><a href=index.php?id=".$GLOBALS["TSFE"]->id.">back</a></td></tr></table>"; } else { $rows=$this->getItems(); while(list($c,$row)=each($rows)) { $this->conf["image."]["file"] = "uploads/tx_playerprofile/".$row["image"]; $theImgCode=$this->cObj->IMAGE($this->conf["image."]); $content.="<table border=0><tr><td></td><td>".$theImgCode."</td></tr>"; $content.="<tr><td>Details -->:</td><td align=center><ahref=index.php?id=".$GLOBALS["TSFE"]->id."&player=".$row["uid"].">".$row["last_name"]."</a></td></tr></table>"; } }#t3lib_div::debug($conf);#t3lib_div::debug($this->getItems()); return $content; } /** * function. */ function getItems() { // pid_list is the pid/list of pids from where to fetch the guest items. $config["pid_list"] = trim($this->cObj->stdWrap($this->conf["pid_list"],$this->conf["pid_list."])); $config["pid_list"] = $config["pid_list"] ? implode(t3lib_div::intExplode(",",$config["pid_list"]),",") : $GLOBALS["TSFE"]->id; list($pid) = explode(",",$config["pid_list"]); $query = "SELECT * FROM tx_playerprofile_list WHERE pid IN (".$pid.") ORDER BY sorting"; $res = mysql(TYPO3_db,$query); $out=array(); while($row = mysql_fetch_assoc($res)) { $out[]=$row; } return $out; } /** * function. */ function getSingle($uid) { // pid_list is the pid/list of pids from where to fetch the guest items. $config["pid_list"] = trim($this->cObj->stdWrap($this->conf["pid_list"],$this->conf["pid_list."])); $config["pid_list"] = $config["pid_list"] ? implode(t3lib_div::intExplode(",",$config["pid_list"]),",") : $GLOBALS["TSFE"]->id; list($pid) = explode(",",$config["pid_list"]); $query = "SELECT * FROM tx_playerprofile_list WHERE pid IN (".$pid.") AND uid = ".$uid."ORDER BY sorting"; $res = mysql(TYPO3_db,$query); $row = array(); $row = mysql_fetch_assoc($res); return $row; }}if (defined("TYPO3_MODE") && $TYPO3_CONF_VARS[TYPO3_MODE]["XCLASS"]["ext/player_profile/pi1/class.tx_playerprofile_pi1.php"]) { include_once($TYPO3_CONF_VARS[TYPO3_MODE]["XCLASS"]["ext/player_profile/pi1/class.tx_playerprofile_pi1.php"]);}?> 簡単な TYPO3 エクステンションの作成 - 13
  • 14. 既知の問題• 今のところ確認されている問題はありません。何か問題があればご連絡ください!To-Do list• Extending the basic and extended version of the extension with other basic functions (commented in detail).• List view and single view settings of basic extension should be made modifiable through TypoScript in the setup field .• View of images currently vertically shown in list view should be positioned also e.g. three in a row or more...• Through TypoScript in the setup field, the database table fields shown on the frontend, should be managable.Changelog• 03-26-2003 - document first published, created on Typo3 Snowboard Tour in Splügen/Swizerland. Thanks to Michael Dengler (diacc.de) and Andreas Schwarzkopf (meinsystem.de) for there great efforts to this extension!• 03-27-2003 – cleaned up setup.txt and constants.txt as well as php class file of player_profile_pi1.php according to the tutorial example. Added the php class code for the extension player_profile_basic to show how the code needs to be changed. 簡単な TYPO3 エクステンションの作成 - 14

×