私は、いつか公開されるMagento拡張機能になることを望んでいるものの作成に取り組んでいます(ここで「正しいこと」を行うことが重要であるため、この部分について説明します)。私がやりたいことの1つは、デフォルトのMagentoダッシュボードにボックスを追加することです。基本的には、自分のコンテンツを除いて、「上位5つの検索用語」とまったく同じ新しい「ボックス」です。新しいカスタムボックスを(理想的には)最後に表示されるボックスにしたいと思います。
私が遭遇している問題は、ダッシュボードのレンダリングを担当するテンプレートがレンダリングされる特定のブロックを呼び出し、これらのブロックがhtml内にネストされていることです。言い換えると、子ブロックが適切なHTML要素にレンダリングされる領域が頻繁にある場合、この状況では、特定のブロックがレンダリングされているように見えます。/app/design/adminhtml/default/default/template/dashboard/index.phtmlの内容は次のとおりです
<div class="dashboard-container">
<?php echo $this->getChildHtml('store_switcher') ?>
<table cellspacing="25" width="100%">
<tr>
<td><?php echo $this->getChildHtml('sales') ?>
<div class="entry-edit">
<div class="entry-edit-head"><h4><?php echo $this->__('Last 5 Orders') ?></h4></div>
<fieldset class="np"><?php echo $this->getChildHtml('lastOrders'); ?></fieldset>
</div>
<div class="entry-edit">
<div class="entry-edit-head"><h4><?php echo $this->__('Last 5 Search Terms') ?></h4></div>
<fieldset class="np"><?php echo $this->getChildHtml('lastSearches'); ?></fieldset>
</div>
<div class="entry-edit">
<div class="entry-edit-head"><h4><?php echo $this->__('Top 5 Search Terms') ?></h4></div>
<fieldset class="np"><?php echo $this->getChildHtml('topSearches'); ?></fieldset>
</div>
</td>
<td>
<div class="entry-edit" style="border:1px solid #ccc;">
<?php echo $this->getChildHtml('diagrams') ?>
<?php if (is_array($this->getChild('diagrams')->getTabsIds())) : ?>
<div id="diagram_tab_content"></div>
<?php endif; ?>
<div style="margin:20px;">
<?php echo $this->getChildHtml('totals') ?>
</div>
<div style="margin:20px;">
<?php echo $this->getChildHtml('grids') ?>
<div id="grid_tab_content"></div>
</div>
</div>
</td>
</tr>
</table>
</div>
自分のストアでこれを行っていた場合、上記のベースMagentoダッシュボードテンプレートindex.phtmlを編集し、ブロックをレンダリングするために必要なものを追加することで、これを比較的簡単に達成できると思います。
<div class="entry-edit">
<div class="entry-edit-head">
<h4><?php echo $this->__('Top 5 Search Terms') ?></h4></div>
<fieldset class="np"><?php echo $this->getChildHtml('myDashboardBox'); ?></fieldset>
</div>
</div>
しかし、これは私自身の店ではないので、これは実際には選択肢のようには思えません。
さて、いくつか考えた後、私の選択肢は次のように見えます(これらのほとんどは「悪い」ように見え、公の場で見たことを非常に誇りに思うものではないことに注意してください):
0)あなたが私に言うことを私が見ていないことは明らかな何かが完璧で正しい解決策です
1)この領域(「topSearches」、「sales」など)の他のブロックの1つにカスタムブロックを追加して、ブロックをレンダリングできる可能性があります(多分?)。これはあまり「クリーン」ではないようです
2)ダッシュボードページの別の場所にブロックをレンダリングしてから、JavaScriptを使用して正しい場所に移動できる場合があります。これは私が推測しているようにかなり簡単ですが、明らかな理由で非常に「ハッキー」に感じます。
誰かがこれを行う方法についてフィードバックがありますか、または方法がある場合はありますか?このモジュールを公開したいので、私の目標は良い仕事をし、「ハッキング」をできるだけ少なくすることです。
読んでいただきありがとうございます!