{dede:php} //echo 'vvvv'; {/dede:php} {dede:php} //print_r($refObj->Fields); $sql = "select ars.*, art.typedir from dede_archives AS ars LEFT JOIN dede_arctype AS art ON ars.typeid=art.id where typeid=2 ORDER BY weight ASC "; $dsql->SetQuery($sql);//将SQL查询语句格式化 $dsql->Execute();//执行SQL操作 //通过循环输出执行查询中的结果 while($row = $dsql->GetArray()){ $link = $refObj->Fields['indexurl'].'/'.$row['typedir'].'/'.$row['id']; $link = str_replace('{cmspath}', '', $link); $class = "ahy"; if($refObj->Fields['id'] == $row['id']) $class="ahytt"; echo '<a href="'.$link.'.html" class="'.$class.'">'; echo $row['title']; echo '</a> '; } {/dede:php}
{dede:sql} タグの使用法
sql タグは、データベースにクエリを実行して出力します。
1.たとえば、公開された記事の総数を数えてみましょう。このアイデアは、記事 dede_addonarticle の追加テーブル コンテンツの総数を出力することです。
{dede:sql sql="SELECT COUNT(*) AS nums FROM dede_addonarticle"} [field:name = "nums"/] {/dede:sql}
2. ~field~ を使用して特別なクエリを実行します。たとえば、フォーラムの多くのメンバーは、現在記事を公開しているメンバーの関連コンテンツを出力する必要がありました。これは、各記事が原因で、以前は sql タグや arclist タグを使用することはできませんでした。内容は異なりますが、ここではデモンストレーションとして 5.5 SQL ステートメントを使用します。
まず、記事テンプレート内の対応する位置に次のタグを追加します
{dede:sql sql="SELECT * FROM dede_archives WHERE writer=~writer~"} [field:id/], DEDE模板 {/dede:sql}
これをarticle_article.htmページに配置します。これにより、現在のメンバーによって公開された関連記事が取得されます。ここでの ~writer~ は環境に基づきます。現在の内容の変数 クエリを実行する前に置換を実行します。
SQL ステートメントの条件付きクエリに表示される ~writer~、つまり、$refObj->Fields[$value] の関連コンテンツです
テンプレートで PHP を使用します
多くの人は、DreamWeaver のテンプレートタグはより柔軟になり、PHP を実行する機能が追加されました。DedeCMS V5.5 では、PHP ステートメントを実行できる特別なタグ {dede:php}{/dede:php} が追加されました。
一般的に使用される例をいくつか示します:
1. 最も単純な出力内容:
{dede:php} $numA = 1; $numB = 2; echo $numA + $numB; {/dede:php}
{dede:php} 内の情報を出力したい場合は、print や echo などを直接使用して出力し、 assign it to @me 無効です
この出力の内容は計算結果です:
3
2. SQL クエリと組み合わせて単一の内容を出力します
{dede:php} $row = $dsql->GetOne('select id,typename from dede_arctype where id=2'); print_r($row); {/dede:php}
この出力の内容は
Array ( [id] => 2 [typename] => 问答 )
3現在のページの変数を取得します
たとえば、ここではシステムの背景 [テンプレート]-[グローバル マーク テスト] を入力し、コードに次の内容を入力します:
{dede:php} print_r($refObj->Fields); {/dede:php}
PHP で特定のフィールド値をデデするには、$refObj->Fields オブジェクトを使用して列を取得します。タイトルを取得 => 環境変数テストを見てみましょう。ここではテストとしてローカル列を使用します。
このようにして、現在のページのローカル変数が取得され、前の SQL ステートメントを組み合わせて、さまざまな列からさまざまな環境 ID を実装できます。
例:
Array ( [typeid] => 0 [phpurl] => /plus [indexurl] => / [templeturl] => /templets [memberurl] => /member [specurl] => /special [indexname] => 主页 [templetdef] => /templets/default )
これは、現在の列のタイトルを呼び出すためのものです。このラベル関数は {dede:field.typename/} に似ています。
次に、クエリを実行して SQL を処理し、変数を出力します。
このようにして、クエリ結果が基になるテンプレートに表示される関連変数に置き換えられ、出力文字列が生成され、すべての文字列情報が $revalue に保存されます。 最後にこの値を返します return $revalue; ファイル全体の内容は次のとおりです:Array ( [id] => 3 [reid] => 0 [topid] => 0 [sortrank] => 1 [typename] => 产品 [typedir] => {cmspath}/product … … [indexname] => 主页 [templetdef] => /templets/default [position] => 主页 > 产品 > [title] => 产品 )
関連する推奨事項 :
dedecms5.7 最新の SQL エクスプロイト、guestbook.php インジェクションの脆弱性
dedecms SESSION 変数の上書きにより SQL インジェクションが発生する common.inc.php ソリューション
PHPコマンドインジェクション dedecms リモート書き込みファイルリンク例共有
以上がdede で SQL で php タグを使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。