問題タブ [adminhtml]

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.

0 投票する
1 に答える
5631 参照

magento - Magento: 管理注文詳細ページにタブを追加

いくつかのカスタム ユーザー入力でコア販売注文機能を拡張するカスタム Magento モジュールを作成しました。注文後、このデータを管理エリアの注文詳細ページのカスタム タブに表示したいと考えています。タブリストに新しいタブを表示することができましたが、タブをクリックすると404が表示されます。

これが私のコードです:

アプリ/コード/ローカル/ザック/攻撃/etc/config.xml:

app/code/local/Zac/Attack/Block/Adminhtml/Sales/Order/View/Tab/Attack.php:

app/code/local/Zac/Attack/controllers/Adminhtml/Sales/OrderController.php:

app/design/adminhtml/default/default/layout/attack.xml

失敗しているように見えるのは、コントローラーのオーバーライドです。オーバーライドされたメソッド「viewAction()」もカスタム アクション「attackAction()」も呼び出されません。「Mage::getConfig()->getNode('admin/routers/adminhtml')」を出力すると、次の出力が表示されるため、構成が取得されていることがわかります。

そこで、私の最初の質問は、カスタム タブをページに追加するための正しいアプローチに従っているかということです。

正しいアプローチに従っていない場合は、正しいアプローチを教えてください。または、アプローチ全体を明確に概説するリンクを提供してください (Magento 情報を検索すると、回答の断片が多すぎて、回答全体が十分ではありません)。

正しいアプローチに従っている場合、コントローラーがオーバーライドされないのはなぜですか?

さて、問題を明確にするのに十分な詳細を提供できたことを願っています。そうでない場合は、コメントにフォローアップの質問を投稿してください。方法がわかれば、喜んで詳しく説明します.

提供されたヘルプに事前に感謝します。

乾杯、ザック

PSコミュニティセクションに同じコントローラーをオーバーライドする別のモジュールがあることに気付きましたが、そのオーバーライドも有効になっていないようです。とにかく、干渉がないことを確認するために、デバッグの目的でサードパーティのモジュールを完全に削除しました。

0 投票する
1 に答える
764 参照

php - カスタム モジュールの管理ルート

すべてのストック magento モジュールには、バックエンドに「admin」(デフォルト) 部分を持つ URL パスがあります。ただし、カスタム モジュールではそれを達成できませんでした。これは不可能ですか、それとも意図的に行われますか?

ありがとう

0 投票する
1 に答える
5942 参照

ajax - Magentoのデフォルトのadminhtml form.phpでajaxを使用するには?

"gallerydata.php" というルート フォルダにあるファイルに対して、form.php で ajax 呼び出しを行う方法。バックエンドから画像をアップロードするための「ギャラリー」という拡張機能があります。そのため、そのファイル「gallerydata.php」を呼び出すajaxを使用して、ドロップダウンからアーティストのIDを取得したいと考えています。

0 投票する
3 に答える
17665 参照

magento - 管理者のカスタム Magento 構成での 404 エラー

Magento 1.6 でカスタム SMS モジュールを開発しています。

system.xml関連するカスタム構成フィールドを管理するファイルをセットアップしました。

メニュー エントリが表示されますが、それをクリックすると、予想される構成フィールド リストの代わりに 404 エラー ページが表示されます。

コードにエラーが表示されますか?

ベンの要求の後、adminhtml.xml ファイルを配置しました。XMLファイルの内容を配置しました。

しかし、404エラーが来るまで...

0 投票する
3 に答える
4730 参照

magento - Magentoカスタムモジュールadminhtml/base / default

私のカスタムモジュールは、indexControllerを表示しようとするたびに、システムログにこのエラーを生成しています。

私はモジュールコードを何時間も探し続けてきましたが、何も問題がないようです。何が原因でしょうか?base/defaultフォルダーはadminhtmlの下にも存在しません。

0 投票する
1 に答える
3979 参照

templates - デフォルトのテンプレートを編集せずに、Magentoバックエンドにカスタムダッシュボード「ボックス」を追加する適切な方法は何ですか?

私は、いつか公開されるMagento拡張機能になることを望んでいるものの作成に取り組んでいます(ここで「正しいこと」を行うことが重要であるため、この部分について説明します)。私がやりたいことの1つは、デフォルトのMagentoダッシュボードにボックスを追加することです。基本的には、自分のコンテンツを除いて、「上位5つの検索用語」とまったく同じ新しい「ボックス」です。新しいカスタムボックスを(理想的には)最後に表示されるボックスにしたいと思います。

私が遭遇している問題は、ダッシュボードのレンダリングを担当するテンプレートがレンダリングされる特定のブロックを呼び出し、これらのブロックがhtml内にネストされていることです。言い換えると、子ブロックが適切なHTML要素にレンダリングされる領域が頻繁にある場合、この状況では、特定のブロックがレンダリングされているように見えます。/app/design/adminhtml/default/default/template/dashboard/index.phtmlの内容は次のとおりです

自分のストアでこれを行っていた場合、上記のベースMagentoダッシュボードテンプレートindex.phtmlを編集し、ブロックをレンダリングするために必要なものを追加することで、これを比較的簡単に達成できると思います。

しかし、これは私自身の店ではないので、これは実際には選択肢のようには思えません。

さて、いくつか考えた後、私の選択肢は次のように見えます(これらのほとんどは「悪い」ように見え、公の場で見たことを非常に誇りに思うものではないことに注意してください):

0)あなたが私に言うことを私が見ていないことは明らかな何かが完璧で正しい解決策です

1)この領域(「topSearches」、「sales」など)の他のブロックの1つにカスタムブロックを追加して、ブロックをレンダリングできる可能性があります(多分?)。これはあまり「クリーン」ではないようです

2)ダッシュボードページの別の場所にブロックをレンダリングしてから、JavaScriptを使用して正しい場所に移動できる場合があります。これは私が推測しているようにかなり簡単ですが、明らかな理由で非常に「ハッキー」に感じます。

誰かがこれを行う方法についてフィードバックがありますか、または方法がある場合はありますか?このモジュールを公開したいので、私の目標は良い仕事をし、「ハッキング」をできるだけ少なくすることです。

読んでいただきありがとうございます!

0 投票する
1 に答える
1779 参照

magento - Magento: フロントエンドで管理構成フォームを使用するには?

ユーザー (magento バックエンドで管理者としてログイン) に、フロントエンド領域でいくつかの構成を変更する機能を提供する拡張機能があります。フロントエンドに、ajax を介して構成領域をロードし、ロードされた div でこの構成を編集して保存できるようにするリンクが必要です。これには magento バックエンド フォームを使用したいので、自分でフォームをコーディングする必要はありません。

私の現在のアプローチでは、ページにリンクがあり、ajax を介して正しいバックエンド ページをロードします (例: System > Configuration > Design)。このアプローチのために、Mage_Adminhtml_Controller_Action を拡張するコントローラーを作成しました。このコントローラーは、ajax 要求からパラメーターを取得し、アクション (クラス Mage_Adminhtml_System_ConfigController の editAction など) を使用して、バックエンドで適切な構成ページを取得します。

私の問題は次のとおりです。-正しいエリアのみを表示します(システム>構成>デザインの下のセクション「テーマ」のみをユーザーに編集してもらいたいだけです)他のすべては利用できないはずです...したがって、この構成に関するすべての情報を削除する方法セクション?

  • フォームには JS 変数 Form_Key が必要です。(フロントエンドで) 現在の Form_Key を取得するには?

  • ajax がコンテンツをロードした後、フォームが正しく初期化されません。したがって、フォームを送信しようとすると、firebug に「JS エラー: configForm が定義されていません」と表示されます。このフォームの初期化を解決するにはどうすればよいですか? 何か案は?

ここにいる誰かが、この問題を解決してフロントエンドでバックエンド構成を機能させる方法のヒントを教えてくれることを本当に願っています。

0 投票する
1 に答える
156 参照

magento - モジュールが最初にインストールされたときに、データベースに関係のない PHP を実行する適切な/ベスト プラクティスの方法は?

モジュールのインストール時に (1 回だけ) いくつかのことを行う必要があるモジュールを作成しています。やらなければならないことがたくさんあるかもしれませんが、私がやらなければならない最も基本的なことは、サーバーへの API 呼び出しを行って、モジュールがインストールされたことを外部サーバーに知らせ、いくつかの更新された構成を取得することです。アイテム。

私はstackoverflowでこの質問を読みましたが、私の状況では、データベース、フィクスチャ、テーブルの更新などとは関係のないコードの実行に本当に興味があります。また、明確にするために、このモジュールは影響しません(効果?)フロントエンド。参考までに、私はAlan Storm によるこの素晴らしい記事も読みましたが、インストール/アップグレード スクリプトはランダムな PHP を実行するためのものではないということを思い知らされるだけです。

私の考えでは、これを達成するためのいくつかの可能な方法があります。

  • ベストプラクティスではないのではないかと恐れていることを行い、セットアップ/インストールスクリプトにPHPを追加して、このphpを実行します
  • 必要なタスクを一度だけ実行するある種のcronジョブを作成します(これがどのように機能するかはわかりませんが、「創造的な」ソリューションのようです-もちろん、cronが適切にセットアップされていない場合、これは失敗します。よくない
  • スクリプトの実行後に設定する core_config_data フラグ ('mynamespace/mymodule/initialized') を作成し、モジュールが接触する adminhtml のすべての領域 (CMS/Pages および独自のカスタム adminhtml コントローラー) をチェックします。これは、CMS/Pages がヒットするたびに余分なオーバーヘッドが発生するか、この core_config_data 設定をチェックしてコントローラーがヒットすることを除けば、良い解決策のように思えます。このソリューションの良い点は、API 呼び出しで何かが失敗した場合、このフラグを false に設定すると、再度実行され、適切なメッセージが表示され、成功するまで実行され続ける (または追加のロジックがある) ことです。 XX回試行した後、初期化コードを停止します)

これらのオプションのいずれかが「最良の」方法ですか?また、尊敬される拡張機能や Magento 自体など、これに対する先例はありますか?

お時間をいただきありがとうございます。

0 投票する
2 に答える
1469 参照

caching - Magento の adminhtml メニュー オプションを動的に変更する

私は、「楽しみのため」のオープン ソース プロジェクトとしてリリースしたいと考えている「楽しみのための」プロジェクトに取り組んでいます。私は Arduino の Web 接続の注文通知機能を構築し、その Magento adminhtml インターフェイス側を構築しています。これは私がやっていることには複雑すぎるように思えるかもしれませんが、これには私にとって役立つ他のアプリケーションがあり、何か新しいことを学ぼうとしています.

そうは言っても、Magento バックエンドの「Reports」の横に新しい「Arduino」adminhtml メニュー項目を作成しました。Arduino からの特定のフィードバックによってモジュールが自動的に無効になる場合があります。その場合、他のサブメニュー項目がない限り、ページからメニュー項目を削除することが目標です。その場合、モジュール固有のメニュー項目のみを削除します。 . 繰り返しますが、これはこのプロジェクトにとってあまり現実的ではないように見えるかもしれませんが、これをできるだけ「正しく」行うために、これが私の目標であり、他の誰かが「Arduino」メニュー項目を潜在的に追加できる可能性を開いたままにしておくことです。

今、私はこれをうまく機能させています。問題なく、IFキャッシュはオフになっています。これは別の言い方をすれば、「これは機能しません。なぜなら、誰もがキャッシュを有効にしているからです」。そうは言っても、ここに私が始めたコードがあります:

これは明らかにいくらかのオーバーヘッドを追加しますが、それは adminhtml セクションだけです。今、私の目標は「良い」解決策を持つことですが、それがあるかどうかはわかりません。私はこの非常に優れたブログ投稿を読みました。このようなものが私の目的には (逆に) うまくいくと思いますが、心配する必要がないように、クラスの書き換えを利用しないモジュールを作成することをお勧めします。他のモジュールで同じクラスを書き換えます。

この問題にどのようにアプローチするかについて、誰かアドバイスはありますか? カスタム メニュー項目を既存の「親」メニュー項目に追加する場合 (たとえば、「システム」の下に Arduino オプションを追加する場合)、同じキャッシュが問題になりますか?

お時間をいただき、この素晴らしいリソースをありがとうございました!

編集:

  • ログイン/バックアウトすると、既存の問題が「修正」され、メニューが適切に更新されるようです。もちろん、ユーザーに強制的にログアウトさせたくはありませんが、どこかに解決策があるのではないでしょうか?
0 投票する
2 に答える
2725 参照

magento - Magento は「保存」時に値を保存しません

の要素にフィールドを追加するカスタム モジュールがあります。

barフィールドをテーブルに追加しcms_page、フィールドがレンダリングされましたが、cms ページを保存すると、フィールドがデータベースに保存されません。

ここで私が見落としていることを誰か教えてもらえますか?