DEDE テンプレートで複数分岐判定に if を使用する方法は?
DEDE をテンプレートとして使用する場合, dede テンプレートの複数分岐判定である特定の条件判定に基づいて、異なるコンテンツを個別に表示する必要がある状況によく遭遇します。たとえば、通常は、リスク管理データベース テーブルのリスク レベル フィールド Risklevel のさまざまな値に応じて、さまざまなリスク プロンプト アイコンを表示する必要があります。図 1 に示すように。
赤枠内の投資プロジェクト名の前にあるアイコンは、異なるリスク レベルを表しており、AA、D、E、HR の 4 つのリスク レベルがあります。データベース テーブルに保存されるのは、図 2 に示すように、これら 4 つのレベル値のいずれかです。
リスク レベル フィールド Risklevel は、リスト テンプレートの値に含められるようにコンテンツ モデルにこのフィールドを設定しているため、リスト テンプレートでその値を取得できます。 。
図 3 に示すように。
このようにして、リスト テンプレートの
{dede:listpagesize='10'} [field:risklevel/] {/dede:list}
を通じてリスク レベルの値を簡単に取得できます。
しかし、さまざまなリスク レベルに対応するプロンプト アイコンは画像ディレクトリにあり、これらのプロンプト画像ファイルの名前にはルールがないため、if 判断を使用して、状況に従って異なる値を設定する必要があります。さまざまなリスクレベル プロンプトイメージのパス。
では、どのように判断すればよいのでしょうか?
[field:array]タグを使用する必要があるのですが、どのように判断すればよいのでしょうか?
まず、非常に便利な dede タグである [field:array] タグを紹介します。これは、リストで使用されるタグ {dede:field name='array' /} の省略形です。タグ内。例: {dede:list} タグ、{dede: arclist} およびその他のタグ。
リスト タグ内では、[フィールド:フィールド名/] の形式でデータベース テーブル フィールドの値を取得できることがわかっています。次に、たとえば、リスクに基づいて分岐判断を行う場合に使用します。レベルの値が異なるとアイコンのパスも異なります このとき[field:array]タグを使用する必要があります [field:array]タグはクエリで取得したデータベーステーブル内のレコードを表します 具体的な判定コードは以下の通りです
[field:array runphp='yes'] if(@me['risklevel']=="HR")@me="HR.png"; else if(@me['risklevel']=="D")@me="D.png"; else if(@me['risklevel']=="AA")@me="AA.png"; [/field:array] {/dede:list}
クエリで取得したリスクレベルフィールドの値がHRの場合、HR.pngを出力することを意味し、クエリで取得したリスクレベルフィールドの値がDの場合、クエリで取得したリスクレベルフィールドの値が AA の場合、AA.png が出力されます。ここでの HR.png は、画像ファイルの場所を表す単なる文字列です。任意の画像パスにコピーします 上記のコードは分岐条件付き出力ステートメントです @me は出力変数を表します 最初にラベル field:array を入力すると、@me はデータベース内のレコードを表し、そのデータ型は配列になります@meにはrisklevelの値を元に判断し、異なる値が設定されているため、タグfield:arrayを抜けると元の位置に@meの値が表示されます。
このタグの機能は非常に強力です。最も一般的なシナリオに適しています。テンプレート ページに異なるコンテンツを表示するために、特定の条件に基づいて if 分岐判定を実行する必要がある場合は、field:array を使用します。タグを付けると非常に便利になります。
以上がDEDEテンプレートで複数分岐判定を行う場合のifの使い方の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。