Я работаю над созданием того, что, я надеюсь, однажды станет общедоступным расширением Magento (эту часть я упоминаю, потому что для меня важно, чтобы я сделал «правильную вещь» здесь).Одна из вещей, которую я хотел бы сделать, это добавить поле на панели инструментов 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" и т. д.) и просмотрите мой блок.Это не кажется очень «чистым»
2) Возможно, я смогу визуализировать блок где-нибудь еще на странице панели инструментов, а затем переместить его с помощью JavaScript в правильное место.Полагаю, это было бы довольно легко, но по понятным причинам кажется очень "хакерским".
Есть ли у кого-нибудь отзывы о том, как это сделать, или если есть способ?Имейте в виду, что снова я хотел бы опубликовать этот модуль публично, поэтому моя цель - сделать хорошую работу и сделать как можно меньше «взлома».
Большое спасибо за чтение!