Если нужно не просто убрать пару кнопок из панели управления компонентом Joomls 3, но и добавить свои кнопки или даже выпадающие списки около сохранить то эта заметка для Вас.
Joomla: Добавление своих кнопок в меню компонента (административный раздел)
11.06.2018
Файл /views/items/view.html.php, метод addToolBar, добавляем сами списки и дополнительную кнопку:
public function display($tpl = null) { try { ... // Устанавливаем панель инструментов. $this->addToolBar(); // Устанавливаем боковую панель. $this->sidebar = JHtmlSidebar::render(); // Отображаем представление. parent::display($tpl); } catch (Exception $e) { throw new Exception($e->getMessage()); } } /** * Устанавливает панель инструментов. * * @return void */ protected function addToolBar() { JToolBarHelper::title('Счета', 'item'); if ($this->canDo->get('core.create')) { JToolBarHelper::addNew('item.add'); } $aMonths = array (1 => "Январь", 2 => "Февраль", 3 => "Март", 4 => "Апрель", 5 => "Май", 6 => "Июнь", 7 => "Июль", 8 => "Август", 9 => "Сентябрь", 10 => "Октябрь", 11 => "Ноябрь", 12 => "Декабрь"); //$aMonth = SoInvoice_generatorHelper::getMonths(); $aMonthName = $aMonth[1]; $dhtml = '<select id="inMonth">'; foreach($aMonthName as $sKey => $sVal) { $sTmp = $sKey==date('n')?'selected':''; $dhtml .= '<option '.$sTmp.' value="'.$sKey.'">'.$sVal.'</option>'; } $dhtml .= '</select>'; $bar = JToolbar::getInstance('toolbar'); $bar->appendButton('Custom', $dhtml, 'TITLE'); $dhtml = '<select id="inYear">'; foreach($aMonthName as $sKey => $sVal) for($i = 2017; $i <= 2025; $i++) { $sTmp = $i==date('Y')?'selected':''; $dhtml .= '<option '.$sTmp.' value="'.$i.'">'.$i.'</option>'; } $dhtml .= '</select>'; $bar = JToolbar::getInstance('toolbar'); $bar->appendButton('Custom', $dhtml, 'TITLE'); JToolBarHelper::custom( 'items.issue_invoices', 'edit', 'edit', 'Выставить счета' ); if ($this->canDo->get('core.admin')) { JToolBarHelper::divider(); JToolBarHelper::preferences('com_soinvoice_generator'); } }
Далее дорабатываем представление (/views/items/tmpl/default.php), чтобы при отправке формы отправлять и данные из списков:
<script type="text/javascript"> jQuery(document).ready(function($) { Joomla.submitbutton = function(task) { $("#soMonth").val( $("#inMonth").val() ); $("#soYear").val( $("#inYear").val() ); Joomla.submitform(task, document.getElementById('adminForm')); } }); </script> <input type="hidden" name="soMonth" id="soMonth" /> <input type="hidden" name="soYear" id="soYear" />
Получит и обработать эти данные можно в контроллере или модели:
$input = JFactory::getApplication()->input; $iMonth = $input->get('soMonth', 0);