問題タブ [smarty3]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - 例外と賢い
私はblocktry--catchを持っていて、テンプレートのエラーを$errorに割り当てたいと思っています。私は試した:
また試した:
しかし、エラーがない場合、smartyはこの変数を必要とし、すべてがクラッシュします。ifを使わずに対処する方法はありますか?それとも私は最初から間違っているのでしょうか?
smarty - Smarty テンプレートのサブパーツを fetch() する方法
背景Smarty は、Web アプリケーションのロジック層からプレゼンテーション層を分離するテンプレート エンジンです。これは、Web アプリケーションを開発するための Model-View-Control アプローチに適しています。ビューは、HTML と Smarty タグのみを含む Smarty テンプレートで表すことができます。コントロールは、PHP コードを介して含まれるロジックに基づいて適切なビューを提供する PHP ファイルによって実装できます。ビューは、コマンドを介してテンプレートを表示することによってインスタンス化されますdisplay()
。または、テンプレートをコマンドで表示せずに変数として読み込むこともできますfetch()
。テンプレートのファイル名は、これら両方のコマンドの引数です。
問題コマンドはfetch()
テンプレート全体を読み取ることができます。テンプレートのパーツ/サブパーツを読み取るには、通常、これらの各パーツを、コマンドの引数にできる独自の名前で別のファイルに保存する必要があります。これにより、不要なファイルが作成されます。
質問テンプレートのセクションに何らかの方法でマークを付けて、Smarty テンプレートの一部だけを取得することは可能ですか?
ケース例以下に、Smarty と HTML タグを含むサンプル テンプレート ファイルと、対応する PHP コードを含むコントローラー ファイルを示します。
テンプレート ファイル (index.tpl)
コントローラーファイル (index.php)
上記の例では、$template
変数にはテンプレート ページからの完全な出力が含まれます。以下は、例からの内容のダンプです。
しかし、各 DIV コンテナーから個別にコードを読み取り、それらを個別の変数に格納したいとします。これを実現するにはどうすればよいでしょうか。たとえば、 という魔法の関数があるとしfetch_sub()
ます。これが私の使用に対する私の期待です。
次に$div1
、などには、テンプレート全体ではなく、関連するサブパーツのみが含まれます。
その他の情報私はSmarty の初心者ではありませんが、基本的な概念だけでなく、Smarty の高度な概念についてもかなりよく理解しています。以下は、問題を概念化し、解決策に到達するためのこれまでの私の試みです。私の最初の大まかなアイデアは、 を使用してテンプレートをセクションに区切り、{capture}
次にこれらの各セクションを何らかの方法で参照することです。以下にアイデアの概要例を示します。
php - SmartyをSmartyv2からv3にアップグレードする
PHPベースのサイトをSmarty2からSmarty3にアップグレード中です。require_once('Smarty.class.php'
次のように置き換えることで、両方のバージョンでほとんどすべてが機能するようになりました。
次に、/ usr / local / lib / php / Smartyに、バージョン2またはバージョン3のいずれかを指すシンボリックリンクがあります。2つを切り替えるには、シンボリックリンクを変更するだけです。互換性レイヤークラス(SmartyBC)を使用することにより、ほとんどすべてがすでに両方のバージョンで機能します。すべてが完全にテストされるまで両方のバージョンとの互換性を維持し、古いテンプレートへの変更をできるだけ少なくしたいと思います。それを念頭に置いて、これが私がアップグレードしようとしているコードの一部です:
これはV3では機能しませんが、次のようになります。
これらの定数(かなりの数)は至る所で使用されているので、理想的にはバージョン3で最初の方法を機能させる方法を見つけたいと思います。これが不可能な場合、サポートするための最もクリーンな方法は何ですか。一時的に両方のバージョン?
php - Smarty 内から Mysql の結果セットにアクセスするにはどうすればよいですか?
私のサイトには一連の div が表示されており、それぞれが 5 つの異なるタイプのコンテンツを保持するコレクションを表しています。各 div は、そのコレクション内の各タイプのコンテンツの項目数を示します。
現在、次のようにデータベースから各タイプの番号を取得しています。
等
問題は、div ごとに 5 つのデータベース クエリを実行していることです。これらを 1 つにまとめたいと考えています。php を使用すると、単純に行うことができます
次に、「mysql_fetch_array」で「while」ループを使用して、変数にタイプ量を割り当てます。
Smarty で同様のことを行うことは可能ですか? Smarty が結果セットにアクセスするための mysql_fetch_array の代替手段はありますか?
前もって感謝します!
編集: php からこれを行うべきであることが提案されていますが、それがどのように機能するかは明確ではありません。私のphpファイルには、次のものがあります。
次に、stack.tplに次のものがあります。
Smarty ループから一度に 1 つずつ div を構築しているので、ループ内で各 div の mysql データを一度に 1 つずつ取得するしかないと考えました。php ファイルの各 div のデータを取得し、それを割り当てて、ループ中に Smarty で使用する方法はありますか?
php - 文字列から最初の単語を取り除く
Smarty の最初の単語を文字列から削除する方法は次のようになります。
$variable = "Word Quick brown fox";
その後、出力で次のようにします。
$variable = "Quick brown fox";
修飾子なしでこれを行う方法はありますか? カスタム修飾子を作成してから、必要なものを使用して取得できることは知っていますが$variable|customModifier
、そのための組み込みのソリューションが既にあると思いましたか?
javascript - Google AdWords コンバージョン トラッキング (javascript) コードを PrestaShop / Smarty ページに追加する
PrestaShop サイトを運営しており、Google AdWords およびコンバージョン トラッキング機能と統合したいと考えています。PrestaShop コードは Smarty 3 にあります。
これで、Google の JS コードを tpl ファイルの末尾に配置できることがわかりました: order-confirmation.tpl。Googleコードは次のとおりです。
問題は、JS 変数google_conversion_value
に合計注文値の内容を入力することです。
私は Smarty 3 を使用しており、{literal} タグの間に JS ブロック全体を含めようとしました。または中括弧をスペースで囲むだけでなく、スペースなしで、何でも動作するようです。
また、同じコンバージョン値が、googleadservices へのリンクのパラメーターであるセクションにあり、現在は 0 に設定されていますが、$total 値もそこに移動したいと考えています。
php - smarty を使用して文字列からスペースを削除する
私はスマートに慣れていません。
Smarty で特定の文字列からすべての空白文字を削除する方法を知りたいですか?
「これは私の文字列です」のような文字列があります。出力は「thisismystring」である必要があります。
これどうやってするの?
templates - Smartyサブテンプレートブロックは更新時に壊れます
Smartyforphpを使用してテンプレートを作成しようとしています。テンプレートを再利用できるようにしたいので、テンプレートを継承し、ブロックを使用して値を置き換えます。サブテンプレートでこれらのブロック値にアクセスする必要がある場合を除いて、これは正常に機能します。smartyの{include}関数を使用してこれらのサブテンプレートを呼び出しています。
例:
テンプレート-親(template.tpl):
サブテンプレート(sub_template.tpl)
テンプレート-子(template_child.tpl)
サイトを表示すると、出力は次のようになります。
いくつかの調査を行った後、smartyのWebサイトで、{include}関数をダミーの{block}タグで囲むことについてのメモを目にしましたが、これを機能させるにはさまざまなレベルの成功がありました。
注:{include}に含まれるサブテンプレートがあり、それに{block}領域が含まれている場合、{include}自体が周囲の{block}内から呼び出された場合にのみ機能します。最終的な親テンプレートでは、ダミーの{block}が必要になる場合があります。(http://www.smarty.net/docs/en/advanced.features.template.inheritance.tpl)
このため、私は試しました:
これは、サブテンプレートに変更を加えるまでは機能するようです。サブテンプレートに変更が加えられるとすぐに、子に設定されたブロック値への応答が再び停止します。
{include}をダミーブロックタグに配置することについての通知が何を指しているのか誤解しましたか、それともこれはsmartyのバグですか?私は現在キャッシングを使用していませんが、他の考えでは、これはサブテンプレートのキャッシングの問題である可能性があります。
どんな洞察も大歓迎です、ありがとう!
php - Smarty で HTML エスケープをオフにする方法
html_checkboxes
選択メニューの生成に使用しています。問題は、チェックボックス名にいくつかの html コードがあり、Smarty がそれをエスケープすることです。
私は持っている:
私は得る:
ステータスが青になる必要があります。