Magentoで探しているコードブロックをどのように見つけますか?
質問
私は愚かな状況に苦しんでいます。顧客から、「高度な検索」ページを変更していくつかのオプションを追加するように依頼されました。このページのURLは http://www.domainname.com/index.php/catalogsearch/advanced/
これはMagentoストアであり、このフレームワークの経験はありません。私はそれを学ぼうとしましたが、学習曲線が急すぎてプロジェクトを予定通りに完了するのに十分な知識を得ることができませんでした。
最初に、すべてのソースファイルで検索語を検索し、ヒット数を報告する小さなPHPツールを作成しました。このツールを使用して、高度な検索ページに表示される一意の文字列を探しました。しかし、テキストはどこにも見つかりません!
次の試みは、データベースを調べて文字列を見つけることでした。そのため、すべてのDBデータをエクスポートし、結果のクエリをコードエディターにコピーして再度検索しましたが、何も見つかりませんでした!
これは非常に厄介で、私を怒らせています。高度な検索オプションを出力するコードブロックが見つかりません!
「どんな」助けも大歓迎です。
ありがとう、 マジッド
解決
MagentoのURLは、特定のモジュールのテンプレートファイルの場所を示します。
たとえば、 catalogsearch / advanced /
を探している場合、すべてのテンプレートファイルはapp / design / frontend / default / your-theme /
の場所にあります。
そのフォルダの中を見てください。 catalogsearch
というフォルダーがあり、その中に advanced
というフォルダーがあります。内部には2つのファイルがあります:
-
form.phtml
-
result.phtml
他のヒント
これまでのところ、ローカルの開発ボックスで次の戦術を使用してきました。明らかにライブストアでこれを試さないでください!:
- テンプレートパスヒント+システムのブロック名をオンにする->構成->開発者。これにより、最終レンダリングを行うphtmlファイルと、それが使用するブロックオブジェクトタイプが表示されます。これをIPで制限しない限り、すべての訪問者にこれらが表示されます!
- さらに掘り下げるために、phtmlファイルで簡単にZend_Debug :: dump($ var)を使用して、問題の変数/オブジェクトを検査し、オブジェクトタイプなどを見つけることができます。
- エディタまたはgrepで/ app / codeディレクトリを検索して、見つけたオブジェクトタイプを定義しているファイルを見つけます-Zendに基づいているため、ほとんどの場合、オブジェクトから正しいファイルパスを見つけることができますクラス。
また
- 便利なトリックは、意図的にphp / phtmlファイルにエラーを挿入することです。Magentoは、読みやすい興味深い呼び出しスタックを備えた、適切にフォーマットされたエラー画面を提供します コアファイル内の
- echo()ステートメントは通常非常によく機能します。Magentoのセットアップでは、通常はhtmlヘッダーが間違ったタイミングで送信されることはありません
- Netbeans / Eclipse / Zend studioなどのIDEを使用して、すべてのMagentoコードをプロジェクトに配置します。結果のphpdoc情報、「オープン宣言」、およびコードアシストにより、検索時間を節約できます
- 時間をかけて、Xdebugを使用できるテストサーバーでXdebugを動作させます。 (Macで)最初からセットアップするのに最も簡単な方法は、NetbeansをIDEとして使用するローカルMampインストールです。Netbeansサイトでは、この手順を順を追って説明します。他のトリック!
これらは私が今まで試したものです-さらなる提案をお願いします! Magentoが使用する多数のXMLファイルのXMLの問題から構成の問題をデバッグする技術はまだ見つかりませんでしたが、ここでの問題は静かに失敗する傾向があり、その結果、XML文書がひどく追跡するのが非常に困難です