コアとサービス、パブリック モデル、プラグイン、ウィジェット、およびサードパーティ ライブラリが一緒になってシステムの基盤を形成し、その上に他のすべてのアプリケーションが構築されます。
用語の説明
コア: ThinkPHP フレームワークから派生し、MVC 分離や基礎となるデータベース サポートなどのコア機能をシステムに提供し、システムの他の部分で使用するための便利なクラス ライブラリと関数ライブラリを多数提供します。 /core/ ディレクトリにあります。
サービス: 特定の関数をカプセル化する一連のグローバル クラス ライブラリ。電子メール送信 (Mail)、ユーザー認証 (Passport) など、/addons/services/ ディレクトリにあります。
パブリック モデル: グローバルな一般モデルのセット。アタッチメント モデル (AttachModel)、エリア モデル (AreaModel) など、/addons/models/ ディレクトリにあります。
プラグイン: 特定の機能を実現するために追加されるプログラム ファイル。 /addons/plugins/ ディレクトリにあり、サードパーティ プラットフォームのログイン プラグインとメダルが含まれています。
ウィジェット: 任意の HTML ページで呼び出すことができるコード ブロックのセット。 /addons/widgets/ ディレクトリにあり、Comment、SelectFriend などが含まれます。
サードパーティ ライブラリ: 他のオープンソースのサードパーティ ライブラリ。 phpmailer など、/addons/libs/ ディレクトリにあります。
アプリケーション: 上記のシステム構造に基づいて構築された、特定の機能を実装する独立したモジュール。ブログ、写真などの /apps/ ディレクトリにあります。
API: アプリケーション プログラミング インターフェイス。 Weibo API、ユーザー プロファイル API など、/api/ ディレクトリにあります。
------------------------------------------------- -------------------------------------------------- ----------------------------------
ウェイボー
Weibo は (図 1 に示すように) システムの独立したアプリケーションとしても表示されますが、システムのコア アプリケーションの役割も担っています。多くのシステム要素は完全に Weibo アプリケーション上に構築されています。たとえば、Weibo ウィジェット (つまり、「共有」機能) は Weibo を直接操作しますが、WAP アプリケーションは完全に Weibo API アーキテクチャを使用します。
ローミングプラットフォーム
システム アプリケーションのもう 1 つの特殊なケースは、ローミング アプリケーションです。ローミング アプリケーションは Kangsheng のローミング プラットフォームから取得されます。ローミング プラットフォームの URL は ThinkSNS のディレクトリ構造とは完全に異なる UCHome のディレクトリ構造に従って生成されるため、ローミング プラットフォームの移植性を考慮する必要があります。標準の ThinkSNS2.0 コアは、ローミング アプリケーション内に実装されたフレームワークの最小限のバージョンを使用します。
テンプレート開発者の場合は、特に注意する必要があります。パブリックディレクトリのヘッダーとページの左側を変更した後、ローミング下のヘッダーとページの左側も変更する必要があるためです
(/apps/myop/themes/classic/ ディレクトリにあります)。
------------------------------------------------- -------------------------------------------------- --------------------------------------
ディレクトリ構造
SNS2.0を考える
§─ _runtime ------------- ランタイムキャッシュ
─ アドオン ------------- 拡張ライブラリ
│ §─ ライブラリ ------------- サードパーティ ライブラリ
│ §─ モデル ------------- 公開モデル
│ §─ プラグイン ------------- プラグイン
│ │ §─ ログイン ------------- サードパーティプラットフォームのログインプラグイン
│ │ §─ メダル ------------- メダル
│ │ └─ タグ ------------- タグ
│ §─ サービス ------------- システムサービス
│ └─ ウィジェット ------------- システムウィジェット
─ API ------------- API ライブラリ
─ アプリ ------------- システム アプリケーション
│ §─ 管理人 ------------- 運営経歴
│ §─ ホーム ------------- ホームアプリ
│ §─ myop ------------- ローミング アプリケーション
│ §─ wap ------------- モバイル WAP 端末
│ └─ weibo ------------- Weibo アプリケーション
─ コア ------------- コア
│ §─ sociax ------------- システムコアファイル
│ §─ ThinkPHP ------------- ThinkPHP コア
│ └─ sociax.php ------------- コアブートファイル
─ データ ------------- サイトデータ
─ インストール ------------- システムインストールファイル
─公開
│ §─ 管理者 ------------- 管理者のバックエンド スタイル
│ §─ js ------------- システムJSライブラリ
│ └─ テーマ ------------- システムテンプレート
─ access.php ------------- ノード権限制御ファイル
─ cleancache.php ------------- キャッシュクリーニングファイル
─ config.inc.php ------------- サイト設定ファイル
─index.php ------------- サイトエントリーファイル
─ shorturl.php ------------- ショートアドレスファイル
└──thumb.php ------------- サムネイル自動生成ファイル
------------------------------------------------- -------------------------------------------------- ------------------------
アプリケーションのアーキテクチャとディレクトリ構造
アプリディレクトリの場所と構造:
SNS2.0を考える
§─ アプリ
§─アプリ
§─ Appinfo ------------- インストール情報、インストールおよびアンインストールの実行ファイル、アイコン
─ 共通 ----------─ 関数ライブラリ common.php
─ Conf ------------- プロジェクト構成 config.php
─ 言語 ------------- 通知、動的言語パック
§─リブ
│ §─ アクション ------------- オペレーションクラスライブラリ
│ §─ モデル ------------- モデルクラスライブラリ
│ └─ウィジェット ------------- プラグインライブラリ
└─ Tpl ------------- テンプレート、css、js ファイル
エントリーファイル
ThinkSNS2.0 には、パブリック エントリ ファイルが 1 つだけあり、それは ThinkSNS ディレクトリにあるindex.php.
です。
URLパターン
URLのアクセス方法はindex.php?app=APP_NAME&mod=Action&act=functionです
関数ライブラリ
アプリケーション独自の関数ライブラリはアプリケーション ディレクトリの Common/common.php に配置でき、ここにある関数はアプリケーションと一緒にロードされ、アプリケーション内で自由に呼び出すことができます。システム関数ライブラリについては、付録の「関数ライブラリ」を参照してください。
テンプレート
アプリケーションのスタイル ファイルは、Tpl の下の Public/ ディレクトリに均一に保存され、../Public/xxx.css を通じて参照されます。アプリケーションの JS ファイルは、Tpl/ の下の Public/js/ ディレクトリに均一に配置されます。アプリケーション プロジェクトの下にあり、../Public/xxx.css を通じて参照されます。
------------------------------------------------- -------------------------------------------------- ------------------
開発ガイド
3.1 命名標準とコーディング標準
ThinkPHP の命名とコーディングの仕様を参照してください: http://thinkphp.cn/Manual/20
3.2 関数ライブラリ、クラスライブラリ、ウィジェットの使用
システム関数ライブラリを使用する
システム関数は /core/sociax/functions.php および /core/sociax/extend.php ファイルにあり、グローバルに有効な関数であり、直接呼び出すことができます。
ユーザーニックネームの取得方法: $uname = getUserName($uid);
サービスを利用する
サービスは /addons/services/ ディレクトリにあります。サービスを使用するには、service('serviceName')->method ($param); を使用します。
たとえば、ユーザーがログインしているかどうかを確認する方法: $is_logged = service('Passport')->isLogged();
パブリックモデルを使用する
パブリック モデルは /addons/models/ ディレクトリにあります。model('modelName')->method ($param); を通じてパブリック モデルを使用します。
エリアリストの取得方法: $area_list = model('Area')->getAreaList();
ウィジェットを使用する
ウィジェットは /addons/widgets/ ディレクトリにあり、W('widgetName',array('param'=> 'value')) 経由で呼び出されます。通常、ウィジェットはページ内で使用されるため、呼び出しメソッドは次のようになります: {:W('widgetName',
)
11/32
array('param'=>'value'))}。
ページ上に知り合いの可能性のある人を表示する方法: {:W('ManyUse',array('uid'=>'1'))}
サードパーティのライブラリを使用する
サードパーティのライブラリは通常 /addons/libs/ ディレクトリに配置されており、使用前に include_once やその他の関数を通じてファイルをインポートできます。
3.3 ポップアップ ウィンドウ、プロンプト メッセージ、エディターを使用する
ThinkSNS2.0 の世界では、jQuery ライブラリがデフォルトの JS フレームワークであり、ページの先頭に自動的にロードされます。 ThinkSNS2.0 は、jQuery をベースにポップアップウィンドウ、プロンプトメッセージ、KISSY エディタをカプセル化しています (jQuery ライブラリ公式ドキュメント: http://docs.jquery.com/Main_Page)。
ポップアップ
図 2 ポップアップ ウィンドウのレンダリング
図 2 に示すように、ポップアップ ウィンドウには少なくともタイトル、閉じるボタン、コンテンツの 3 つの部分が含まれており、ユーザー操作の継続性を確保するために、通常はコンテンツ部分に「OK」ボタンと「キャンセル」ボタンが追加されます。 。
ポップアップウィンドウの呼び出し方法:
<スクリプト>
関数 yourFunc() {
ui.box.load(your_url, {title:'これがタイトルです'});
}
スクリプト>
ポップアップコンテンツを your_url に配置します。注: [OK] ボタンと [キャンセル] ボタンもコンテンツの一部です。
ポップアップ ウィンドウを閉じます:
<スクリプト>
関数 close() {
ui.box.close();
}
スクリプト>
12/32
プロンプトメッセージ
図 3 プロンプト メッセージのレンダリング
呼び出し方法:
<スクリプト>
関数成功() {
ui.success("アップデートが完了しました");
}
関数エラー() {
ui.error("新しいメールはすでに存在します");
}
スクリプト>
編集者
編集関連の JS はページの先頭に自動的に読み込まれます。E = KISSY.Editor("idOfTextarea"); を呼び出すだけでエディターの読み込みが完了します。例:
<フォームアクション=" "メソッド="投稿">
<スクリプト>
$(ドキュメント).ready(function(){
E = KISSY.Editor("idOfTextarea");
});
スクリプト>
3.4 ThinkPHP 開発ガイド
ThinkPHP 公式ドキュメント – 開発ガイド: http://thinkphp.cn/Manual/50
ThinkPHP 公式ドキュメント – テンプレートガイド: http://thinkphp.cn/Manual/194
3.5 アプリケーション開発
これまでの紹介と説明を読んだ後は、誰もが始める準備ができていると思います。この章では、ギフト アプリケーションの開発を例として、アプリケーション開発の全体的なプロセスを説明します。 ThinkPHP 開発の専門家であれば、アプリケーションの開発が実際には新しいプロジェクトを作成していることに気づくでしょう。これが ThinkSNS2.0 の魅力でもあります。アプリケーションの独立性です。
13/32
開発プロセス
ThinkSNS2.0アプリケーション開発の一般的なプロセス:
1. データベースとデータテーブルを作成します (データベース操作をスキップすることはできません)
2. プロジェクトに名前を付け、プロジェクト ディレクトリを作成します
3. コントローラークラスを作成する
4. モデルクラスを作成する
5.テンプレートファイルを作成します
6. 実行とデバッグ
開発要件と開発目標
ギフト アプリケーションには次の機能を実装する必要があります:
1. ユーザーはフォロワーやファンにギフトを送信できます
2. ユーザーは自分が送ったすべてのギフトを見ることができます
3. ユーザーは他の人から贈られたすべてのギフトを見ることができます
4. ユーザーは友達にギフトを贈ることができます
5. ユーザーはギフトを送ると同時に通知メッセージを送信できます
6. ギフトの送信に成功したら、ユーザーは Weibo 共有メッセージを送信できます
7. 管理者はバックグラウンドでギフトとギフトの種類を追加、変更、削除できます
8. 管理者はバックグラウンドでギフトのポイント消費タイプを設定できます: ポイント?経験?
9. ユーザーのポイントが不足している場合、ギフトを贈ることができない機能を実装します。
データテーブルを作成する
上記の需要分析によると、ギフトの分類情報を保存するテーブル、ギフト情報を保存するテーブル、そしてユーザー間のギフト贈与記録を保存するテーブルの 3 つのデータ テーブルを設計する必要があります。データ テーブルを追加するときは、テーブルの命名形式 (データベース テーブル プレフィックス + テーブル名) に注意してください。データベース テーブル プレフィックスは、config.inc.php の DB_PREFIX 定数で定義されています。
ギフト分類表を追加:
フィールド
タイプ
手順
ID
int
名前
varchar
カテゴリ名
ステータス
tinyint
有効にするかどうか 0 無効 1 有効(デフォルト)
cTime
int
作成時間
人気のギフトと最新の到着品の 2 つのデフォルト カテゴリを追加します
ギフト情報テーブルを追加:
フィールド
タイプ
手順
ID
int
カテゴリID
int
カテゴリID、上記の分類表のIDに対応します
名前
varchar
プレゼント名
番号
int
在庫
14/32
価格
int
価格
画像
varchar
写真をプレゼント
ステータス
tinyint
有効にするかどうか 0、無効にする 1、有効(デフォルト)
cTime
int
作成時間
ここで、もちろん、ギフトの一部、つまり初期化されたギフト情報も事前に準備する必要があります。
ギフトレコードリストを追加しました:
フィールド
タイプ
手順
ID
int
ユーザーIDから
int
ギフト贈り主ID
toUserId
int
ギフトの受取人
ギフト価格
int
価格
ギフト画像
varchar
写真をプレゼント
情報を送る
テキスト
追加情報
ウェイを送る
tinyint
寄付方法: 1 公的 2 民間 3 匿名
cTime
int
作成時間
この時点で、データテーブルの設計は完了です。
アプリケーション ディレクトリの /gift/Appinfo/ フォルダーにある install.sql ファイルには、テーブルを作成し、事前定義されたデータを挿入するための上記の SQL ステートメントが含まれています。
アプリケーションディレクトリを作成する
図 4 アプリケーションのディレクトリ構造
上の図に示すように、まず /apps/ ディレクトリの下にギフト ディレクトリ Gift を追加し、次に /apps/gift/ ディレクトリの下に上の図に示すディレクトリを作成します (大文字に注意してください)。
アプリケーションディレクトリライブラリ:
アクションコントローラーとモデルのファイルはアプリケーションディレクトリに保存されます。
アプリテンプレートディレクトリTpl:
このギフト アプリケーションにはテンプレートのセットが 1 つしかないため、Tpl/ ディレクトリにデフォルトのテンプレート ディレクトリdefault/ を直接作成し、必要なインデックス テンプレートとパブリック テンプレート ディレクトリ Public/ をdefault/ ディレクトリに追加します。
公開機能ディレクトリ 共通:
このアプリケーションのパブリック関数はここに保存できます。ファイル名は common.php です。これらの関数は、実行中に自動的にロードされます。これらの関数は、Action/ および Model/ ディレクトリ内のファイルで直接使用できます。ファイルを再度導入します。同時に、ThinkSNS2.0 のパブリック関数を直接使用することもできます。これらの関数は
に保存されています。
15/32
/core/sociax/ フォルダーの下の function.php および extend.php。これには、h()、t() フィルター関数、getUserName() 関数 (テンプレート ファイル内) など、最も一般的に使用されるデータ処理またはデータ取得が含まれます。呼び出しメソッドは、{$userId|getUserName})、getUserFace() 関数、および FriendlyDate() 関数です (使用法は getUserName() と同じです)。上記の機能はすべての人に使用することをお勧めします。
アプリ構成ディレクトリ Conf:
アプリケーションがシステムのデフォルト定数を変更する必要がある場合、またはプロジェクトに必要な構成パラメータを追加する必要がある場合は、プロジェクトの Conf/ ディレクトリに config.php という名前の構成ファイルを作成する必要があります。このファイルも自動的にロードされます。パブリック機能ディレクトリとアプリケーション構成ディレクトリは、必須ではないディレクトリです。これらが必要かどうかは、アプリケーション開発の決定によって異なります。今回のギフト展開では公開機能フォルダーのみを使用しております。
言語カタログ言語:
システム通知テンプレートとアプリケーションの動的テンプレートを保存するために使用されます。今回のギフト開発ではシステム通知テンプレートを使用します。 Language/ ディレクトリに中国語言語パック ディレクトリ cn/ を作成し、通知テンプレート ファイル Notice.php (ダイナミックは同じですが、ファイル名は feed.php) を追加します。
インストールパッケージディレクトリ Appinfo:
ThinkSNS バックグラウンドでのアプリケーションのインストール/アンインストール操作には、info.php ファイル (アプリケーション情報の取得に使用) が含まれている必要があります。このファイルに install.php または uninstall.php ファイルが含まれている場合、アプリケーションのインストール時に自動的に呼び出されます。またはアンインストールされました。
プログラミングを始めましょう
パブリック機能レイヤー
Common/ ディレクトリで、新しい common.php ファイルを作成し (ファイル名の大文字と小文字に注意してください)、アプリケーション構成パラメーターを取得する関数などの必要な関数を記述します。
関数 getConfig($key=NULL){
[…]
}
詳細なコードについては、このファイルを参照してください。
このファイル内の関数は、Action/、Model/、および Tpl/ ディレクトリ内のファイルで直接使用できます。
=モデルレイヤー
Lib/Model/ ディレクトリに、 GiftCategoryModel.class.php、 GiftModel.class.php 、 User GiftModel.class.php という 3 つの新しいファイルを作成します。それぞれのコードは次のとおりです。
クラス GiftCategoryModel は Model を拡張します{ }
クラス GiftModel はモデルを拡張します{ }
クラス User GiftModel はモデルを拡張します{ }
上記の手順により、データベース テーブルとモデル クラスの間の関連付けが確立されました。プロジェクトの Action クラスと Model クラスでは、データベース上で関連する操作を直接実行できます。
MVC 仕様により準拠して Model クラスにいくつかのメソッドをカプセル化することに慣れている人もいれば、プログラムを読みやすくするためにすべてのメソッドを Action に記述することに慣れている人もいます。これは主に個人の習慣に依存します。 。この開発では、基本的なメソッドがモデル層に書き込まれます。詳細なコードについては、対応するファイルを参照してください。
アクションレイヤー
Lib/Action/ ディレクトリに IndexAction.class.php を作成し、次のようにコードを作成します。
クラス IndexAction は Action{ }
を拡張します
詳細なコードはこのファイルに含まれています。
テンプレートレイヤー
16/32
Tpl/default/ ディレクトリには、Index と Public という 2 つのフォルダーが必要です。 Index フォルダー名は IndexAction.class.php ファイルに対応します。つまり、Index フォルダー内のファイルは、IndexAction.class.php ファイルに必要なすべてのテンプレートです。通常、ギフト アプリケーションのギフト画像、JS ファイル、CSS ファイル、アプリケーション ヘッダー ファイル _mainNav.html など、アプリケーションのパブリック ファイルは Tpl/default/Public/ ディレクトリに配置されます。もちろん、呼び出しファイルへのパスが正しい限り、これらのディレクトリの設定は完全に開発者次第です。
まず ThinkSNS2.0 テンプレート ファイルの一般的な構造を見てみましょう。開発者はアプリケーション独自のスタイル ファイルと JS ファイルを導入した後、対応する表示コードをキャンバス レイヤーに直接追加できます。
詳細については、特定のコードを参照してください。以下に、学習に役立つテンプレート ファイル内のいくつかのコードを紹介します。
1. ThinkSNS2.0 は jQuery テクノロジーを完全に使用しています。jQuery は、JS アプリケーションを迅速に開発し、JavaScript コードを記述する習慣をある程度変えるのに役立つ優れた軽量 JS フレームワークです。 ThinkSNS2.0ではすでにヘッダファイルにjQueryライブラリが導入されているため、開発者が再度導入する必要はありません。
2. Tpl/default/Index/ ディレクトリにあるindex.html ファイルはギフト センターのテンプレートです。友達に送信する友達を選択する機能は、{:W(" を追加するだけです。 SelectFriend") をテンプレートに追加します。 }、$_POST['fri_ids'] を使用して、選択したフレンド ID を取得します。
3. findPage() メソッドを使用して送受信されたギフトのリストを取得するため、返されるデータには既にページネーション変数が含まれています。次のコードをテンプレート内の適切な場所に追加するだけです。
{$gifts.html}
17/32
ポイント消費機能を追加しました
上記のプログラムでギフトの操作はほぼ完了しました。次に、ポイント消費機能を追加します。ギフト消費のポイントの種類(ポイントまたは経験値)については、バックグラウンドプログラムの説明を参照してください。まず、ギフト送信ページに現在のユーザーの保有ポイントを表示する機能を追加します。 IndexAction.class.php ファイルのindex()メソッドに以下のプログラムを追加するだけです。
//現在のユーザーのポイントを取得します
$money = X('クレジット')->getUserCredit($this->mid);
$moneyType = getConfig('credit');
$this->assign('money',$money[$moneyType]);
次のコード行をギフト送信テンプレートに追加します:
私が現在持っている {$money.alias} は次のとおりです: {$money.credit}
次に、ギフトを送信する関数 (User GiftModel.class.php の sendgif() メソッド) に、選択したギフトを差し引くための対応するポイント プログラムを追加します。
//該当するポイントを減点します
$giftPrice = intval($giftInfo['price']);
$prices = $userNum*$giftPrice;
$moneyType = getConfig('credit');
//ポイント操作
$setCredit = X('クレジット');
//ポイントが足りているか確認してください
$userCredit = $setCredit->getUserCredit($fromUid);
if($userCredit[$moneyType]['credit']<$prices){
return $userCredit[$moneyType]['alias'].'不十分です、ギフトは失敗しました~';
}
$setCredit->setUserCredit($fromUid,array($moneyType=>$prices),-1);
ここでは、パブリック クラス ライブラリ サービスのポイント操作クラス、つまり X('Credit') と呼ばれます。
ここにポイント消費機能が追加されました。
通知機能を追加しました
まず、ギフト通知テンプレートを追加する必要があります。 Language/ ディレクトリに cn フォルダーを作成し、cn フォルダーに通知テンプレート ファイル Notice.php を作成します。 コードは次のとおりです。
配列を返す(
'gift_send' => array(
'タイトル' => '{俳優} があなたにプレゼントをくれました',
'body' => $img.'
'.$sendback.'
行って見てください
18/32
'、
)、
);
?>
ギフトを正常に送信した後、次の手順を追加します:
//受信者に通知を送信します
$this->__doNotify($toUser,$sendInfo,$giftInfo,$fromUid,$appId);
__doNotify() メソッドの実装については、特定のコードを参照してください。
ここでは、パブリック クラス ライブラリ サービスのシステム通知クラス、つまり X('Notify') を呼び出します。
これで通知機能は完了です。
ダイナミック送信機能を追加しました
更新を送信するメカニズムは、通知を送信するメカニズムとまったく同じです。唯一の違いは、次の 2 つの点です。
通知は/Language/cn/feed.phpを使用し、動的は/Language/cn/notify.phpを使用します
通知サービスはX('Notify')またはservice('Notify')を使用し、動的はX('Feed')またはservice('Feed')を使用します
ギフトアプリはダイナミクスを使用していないため、ここでは詳細は説明しません。
Weibo共有機能を追加しました
まず、「Admin Backstage - Content - Template Management」にギフト テンプレートを追加する必要があります:
19/32
通知データを組み立てる前に、ギフトオブジェクト変数を初期化します:
//ギフトオブジェクトの名前は、Weibo の公開ギフトに使用されます
$toUserName = NULL;
パブリックギフトの通知メッセージに次のコードを追加して、@各受信者に到達します:
//ギフト受取人の名前
$toUserName .= '@'.getUserName($fid).' ';
通知情報が組み立てられたら、次のコードを追加して、Weibo 情報を SESSION に一時的に保存します:
// 公開する場合は、小さなメッセージを送ってください
if($toユーザー名){
$_SESSION['gift_send_weibo'] = urlencode ( シリアル化 ( array(
'user' => $toUserName,
'タイトル' => $giftInfo['名前'],
'コンテンツ' => $data['コンテンツ'],
'url' => U('ギフト/インデックス/インデックス', array(
'uid' =>$fid,
'タイプ' =>1,
'type_data'=>realityImageURL($giftInfo['img']))),
)));
}
Lib/Index/IndexAction.class.php ファイルの sendbox() 関数に次のコードを追加します。
//公開ギフト情報があるかどうかを判断し、存在する場合は、Weibo 送信用のテンプレートに割り当てます if(isset($_SESSION['gift_send_weibo'])&&!empty($_SESSION['gift_send_weibo'])){
$this->assign('tpl_data',$_SESSION['gift_send_weibo']);
unset($_SESSION['gift_send_weibo']);
}
Tpl/default/Index/ ディレクトリの下にあるギフト sendbox.html テンプレート ファイルに、次のように WeiboWidget 参照 (送信された Weibo 情報が存在する場合にのみロードされる) を追加します。
{:W('Weibo',array(
'tpl_name'=>'gift_send_weibo',
'button_title'=>'共有',
))}
<script>_widget_weibo_start('', '{$tpl_data}');</script>
Weiboへの公開投稿・投稿機能が完成しました。
アプリケーションの背景を追加する
ThinkSNS2.0 アプリケーションに管理バックグラウンドを追加する方法は非常に簡単です。アプリケーションのアクション/ディレクトリに AdminAction.class.php ファイルを直接追加し、次に AdministratorAction クラスをインポートして継承して権限管理を完了します。
20/32
//バックグラウンド管理クラスの紹介
import('admin.Action.AdministratorAction');
クラス AdminAction は AdministratorAction {
を拡張します
関数_initialize(){
// 管理権限決定
親::_initialize();
[…]
}
[…]
}
?>
注: _initialize 関数では、最初にparent::_initialize() を実行して管理権限を決定する必要があります。
より詳細なコードについては、特定のドキュメントを参照してください。
次に、対応する管理ページ テンプレートを追加し、Tpl/default/ ディレクトリの下に Admin/ ディレクトリを追加して、このディレクトリに _header.html、_footer.html、_tab.html、index.html、giftlist.html、category を追加します。 .html、edit_gift_tab.html、edit_category_tab.html いくつかのテンプレート ファイル。テンプレートの開発方法はフロントエンド テンプレートと同じであるため、ここでは繰り返しません。
インストール/アンインストールパッケージを作成する
アプリケーション ディレクトリの下にインストール情報ディレクトリを追加し、「Appinfo」という名前を付け、この中にアプリケーション アイコン (ico_app.gif、ico_app_large.gif)、アプリケーション構成ファイル (info.php)、およびアプリケーション インストール ファイル (install.php) を追加します。ディレクトリ、アプリケーション データベース ファイル (install.sql)、およびアプリケーション アンインストール ファイル (uninstall.php)。
設定ファイルの内容:
if (!define('SITE_PATH')) exit();
配列を返す(
//アプリケーション名[必須]
「名前」=>「ギフト」、
// アプリ紹介【必須】
「説明」 => 「贈り物」、
// ホスティングタイプ [必須] (0: ローカルアプリケーション、1: リモートアプリケーション)
'HOST_TYPE' => '0',
// フロント入口【必須】 (形式: アクション/行為)
'APP_ENTRY' => 'インデックス/インデックス',
// アプリケーションアイコン[必須]
'ICON_URL' => SITE_URL '/apps/gift/Appinfo/ico_app.gif',
// アプリケーションアイコン[必須]
'LARGE_ICON_URL' => SITE_URL '/apps/gift/Appinfo/ico_app_large.gif',
//楽屋入口[オプション]
'ADMIN_ENTRY' => '管理者/インデックス',
// 統計の入り口 [オプション] (形式: モデル/メソッド)
21/32
'STATISTICS_ENTRY' => 'ギフト統計/統計',
[…]
);
?>
注: SITE _URL はサイトのルート ディレクトリの URL であり、これを直接使用すると、プログラムが自動的に絶対 URL として解釈します。また、Web サイトを転送するときにこの情報を変更する必要がないことも利点です。プログラムは新しい URL を自動的に解釈します。もちろん、絶対 URL も使用できます。
インストールファイルの内容:
データベース操作のステートメントはすべてデータベース ファイル install.sql に配置され、install.php の機能はこのファイルを実行することです。
if (!define('SITE_PATH')) exit();
header('Content-Type: text/html; charset=utf-8');
$sql_file = APPS_PATH.'/gift/Appinfo/install.sql';
//SQLファイルを実行する
$res = M('')->executeSqlFile($sql_file);
if(!empty($res)){//エラー
echo $res['error_code'];
エコー '
';
echo $res['error_sql'];
//インポートされたデータをクリア
include_once(APPS_PATH.'/gift/Appinfo/uninstall.php');
終了;
}
?>
データベースファイルの内容:
まず、アプリケーションの 3 つのデータ テーブルの追加ステートメントを作成します。次に、アプリケーションのシステム構成情報と Weibo テンプレートの挿入ステートメントを追加します。ポイント ルールを設定するアプリケーションがある場合は、次の挿入ステートメントも追加します。ポイントルールは、ログやフォトアルバムなどのアプリケーションのデータベースファイルを参照してください。 コードは次のとおりです。
FOREIGN_KEY_CHECKS=0 を設定;
[...3 つのデータ テーブルの SQL ステートメントとそのプリセット情報]
#ts_system_data データを追加します
`ts_system_data` (`uid`、`list`、`key`、`value`、`mtime`) に置き換えます
価値観
(0, 'ギフト', 'クレジット', 's:5:"スコア";', '2010-12-24 11:22:17');
#テンプレートデータ
`ts_template` WHERE `name` = 'gift_send_weibo';
から削除してください
`ts_template` に挿入します (`name`、`alias`、`title`、`body`、`lang`、`type`、`type2`、`is_cache`、`ctime`)
22/32
価値観
('gift_send_weibo', 'ギフト', '','{user} にギフトを贈りました: [{title}] {content} ギフト贈呈に参加します {url}', 'zh', 'gift', 'weibo '、0、1290417734);
ここでは、ツールによってエクスポートされた SQL ファイルとステートメントを直接使用できます。
アンインストールファイルの内容:
アプリケーションのデータテーブル、アプリケーションシステム構成情報、Weiboテンプレートを削除します。アプリケーションにポイントルールも設定されている場合は、ログやフォトアルバムなどのアプリケーションのアンインストールファイルも同時に削除する必要があります。
if (!define('SITE_PATH')) exit();
$db_prefix = C('DB_PREFIX');
$sql = 配列(
// ギフトデータ
"存在する場合はテーブルを削除 `{$db_prefix}gift`;",
"存在する場合はテーブルを削除 `{$db_prefix}gift_category;",
"存在する場合はテーブルを削除 `{$db_prefix}gift_user;",
// ts_system_data データ
"DELETE FROM `{$db_prefix}system_data` WHERE `list` = 'gift'",
// テンプレートデータ
"DELETE FROM `{$db_prefix}template` WHERE `name` = 'gift_send_weibo';",
);
foreach ($sql as $v)
M('')->実行($v);
?>
この時点で、パッケージのインストールとアンインストールは完了です。
バックエンドにログインした後、「アプリケーション -> アプリケーション管理 -> アプリケーションの追加」に移動し、アプリケーションの「インストール」をクリックします。次に、システム キャッシュを更新すると、前面のアプリケーション リストにギフト アプリケーションが表示されます。
デバッグ
プログラムをデバッグするにはさまざまな方法があります。ここでは、一般的に使用されるいくつかのデバッグ方法をお勧めします。
ThinkPHP に付属の dump() メソッドを使用してプロセス変数を出力し、結果が期待どおりかどうかを確認します
ThinkPHP の getLastSql() メソッドを使用して最後の SQL ステートメントを取得し、dump() で出力して SQL ステートメントが正しいかどうかを確認します
● Conf/config.php ファイルに DEBUG_MODE 定数を追加し、それを true に割り当てます。つまり、ThinkPHP のデバッグ モードをオンにします (注: 変更後はキャッシュをクリアする必要があります)
http://www.bkjia.com/PHPjc/477150.htmlwww.bkjia.comtruehttp://www.bkjia.com/PHPjc/477150.html技術記事コアとサービス、パブリック モデル、プラグイン、ウィジェット、およびサードパーティ ライブラリが一緒になってシステムの基盤を形成し、その上に他のすべてのアプリケーションが構築されます。 用語の説明 コア: ThinkPHP フレームワークから派生した...
声明:この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。