Всем привет. У меня возникла потребность сделать в админке Evo в разделе конфигурации дополнительную вкладку. Как создать плагин, я знаю, а вот к какому событию привязать его, не знаю. Пробовал OnSiteSettingsRender, но код добавляется в ПОСЛЕДНЮЮ вкладку, т.е. в саму секцию. Подскажите, пож., если кто знает.
Quote from: Serg24 at Jan 21, 2011, 01:29 AM
Пробовал OnSiteSettingsRender, но код добавляется в ПОСЛЕДНЮЮ вкладку
Странно, так как для добавления в последнюю надо использовать OnMiscSettingsRender. А для добавления еще одной вкладки выводите </td></tr></table></div> а потом все, что относится к вкладке, без </td></tr></table></div>.
Спасибо за подсказку. Получилось. Вот примерный вариант плагина (еще нуждается в доработке, но принцип понятен):
$output = "";
$e = &$modx->Event;
if($e->name == ’OnMiscSettingsRender’){
$output = ’
</td></tr></table></div>
<!-- Cache Settings -->
<div style="display: block;" class="tab-page" id="tabPage8">
<h2 class="tab">Кеширование</h2>
<script type="text/javascript">tpSettings.addTabPage( document.getElementById( "tabPage8" ) );</script>
<table border="0" cellpadding="3" cellspacing="0">
<tbody>
<tr>
<td class="warning" nowrap="nowrap"><b>Тут название параметра</b></td>
<td>Поле для параметра</td>
</tr>
</tbody>
</table>
</div>
’;
//}
$e->output($output);
}
Вешаем на событие OnMiscSettingsRender
Лишние
</td>
</tr>
</tbody>
</table>
</div>
после "для параметра"
В код посмотрите, закрывающие теги должны в таком случае два раза вывестись.
Нет, вроде все правильно. Там для каждой вкладки - своя отдельная таблица. Получается, что мы вначале закрываем предыдущую, закрываем див, потом открываем следующий див и опять создаем свою таблицу для этой вкладки. Ну а в конце закрываем и таблицу и див.
Вот как генерируется все в MODx (только фрагмент)
<!-- Miscellaneous settings -->
<div class="tab-page" id="tabPage7">
<h2 class="tab"><?php echo $_lang["settings_misc"] ?></h2>
<script type="text/javascript">tpSettings.addTabPage( document.getElementById( "tabPage7" ) );</script>
<table border="0" cellspacing="0" cellpadding="3">
<!-- всякое разное, не относящееся к делу -->
<tr class='row1'>
<td colspan="2">
<?php
// invoke OnMiscSettingsRender event
$evtOut = $modx->invokeEvent("OnMiscSettingsRender");
if(is_array($evtOut)) echo implode("",$evtOut);
?>
</td>
</tr>
</table>
</div>
Фрагмент на PHP меняется на
</td></tr></table></div>
<!-- Cache Settings -->
<div style="display: block;" class="tab-page" id="tabPage8">
<h2 class="tab">Кеширование</h2>
<script type="text/javascript">tpSettings.addTabPage( document.getElementById( "tabPage8" ) );</script>
<table border="0" cellpadding="3" cellspacing="0">
<tbody>
<tr>
<td class="warning" nowrap="nowrap"><b>Тут название параметра</b></td>
<td>Поле для параметра</td>
</tr>
</tbody>
</table>
</div>
получается
<div class="tab-page" id="tabPage7">
<h2 class="tab"><?php echo $_lang["settings_misc"] ?></h2>
<script type="text/javascript">tpSettings.addTabPage( document.getElementById( "tabPage7" ) );</script>
<table border="0" cellspacing="0" cellpadding="3">
<!-- всякое разное -->
<tr class='row1'>
<td colspan="2">
</td></tr></table></div>
<!-- Cache Settings -->
<div style="display: block;" class="tab-page" id="tabPage8">
<h2 class="tab">Кеширование</h2>
<script type="text/javascript">tpSettings.addTabPage( document.getElementById( "tabPage8" ) );</script>
<table border="0" cellpadding="3" cellspacing="0">
<tbody>
<tr>
<td class="warning" nowrap="nowrap"><b>Тут название параметра</b></td>
<td>Поле для параметра</td>
</tr>
</tbody>
</table>
</div>
</td>
</tr>
</table>
</div>
То есть закрывающих тегов в два раза больше, чем надо