В админке Joomshopping при редактировании заказа есть отличная возможность - заменить у заказа покупателя. Как показала практика общения с владельцами интернет магазинов - очень востребованная возможность. Все бы хорошо.... но когда у Вас в магазине 4000 покупателей - становиться сложно искать нужного покупателя в этом бесконечном селекте. Как быть? Хочется иметь какую-то форму поиска.
На помощь нам придет замечательный jQuery плагин Chosen. Посмотреть его демо страницу можно здесь.
Плагин Chosen после загрузки страницы кастомизирует выбранные селекты - добавляет поле поиска. У Chosen есть масса возможностей и настроек, но нам для нашей задачи вполне достаточно настроек по-умолчанию.
Напишем свой плагин, который подключит Chosen на странице с option=joomshopping, controller=orders и task=edit
В стандартном Joomshopping этот селект выглядит вот так:
После установки плагина будет выглядеть вот так:
Пусть это будет системный плагин js_admin_chosen.
Из файлов у нас будет:
- js_admin_chosen.php
- js_admin_chosen.xml
- script.php
- папка assets
js_admin_chosen.xml - это стандартный xml системного плагина без настроек.
script.php - скрипт включения плагина после установки
Папка assets содержит 3 файла плагина Chosen - chosen.jquery.min.js chosen.css и chosen-sprite.png
js_admin_chosen.php - сам скрипт нашего плагина:
<?php
defined('_JEXEC') or die('Restricted access');
jimport('joomla.plugin.plugin');
class plgSystemJs_admin_chosen extends JPlugin {
function onBeforeCompileHead() {
if (!JFactory::getApplication()->isAdmin()) {
return;
}
if (!(JRequest::getVar('option') == 'com_jshopping' && JRequest::getVar('controller') == 'orders' && JRequest::getVar('task') == 'edit')) {
return;
}
$doc = JFactory::getDocument();
$doc->addScript('/plugins/system/js_admin_chosen/assets/chosen.jquery.min.js');
$doc->addStyleSheet('/plugins/system/js_admin_chosen/assets/chosen.css');
$script = '
jQuery(document).ready(function(){
jQuery("select#user_id").chosen();
});
';
$doc->addScriptDeclaration($script);
}
}
Несколько комментариев.
Будем использовать для добавления своих javascript системное событие onBeforeCompileHead
В 9-11 строке проверяем находимся ли мы в админке.
В 12-14 - что мы находимся на странице редактирования заказа - /index.php?option=com_jshopping&controller=orders&task=edit...
В 16-18 - подключаем файлы плагина Chosen
А в 20 - 26 подключаем Chosen к нашему селекту с id user_id
Прикрепляю рабочую версию плагина. Пользуйтесь.


