Комментарии

Пример замещения класса JTableNested
( 0 Голосов )

Проиллюстрируем все сказанное выше на кратком и простом примере, заместив класс JTableNested. Этот класс является родительским для всех классов вложенных таблиц в Joomla, например, класса JTableCategories для таблицы #categories. В данном примере будет показано, каким образом этот класс замещается, а изменение его кода и поведения оставляется на усмотрение читателя. Итак, выполните следующие действия.

Создайте новую папку под названием plugins/system/myclasses и скопируйте в нее файл libraries/joomla/database/tablenested.php. В итоге вы получите файл plugins/system/myclasses/tablenested.php. (Напомним, что во все создаваемые папки следует ввести файл index. html.)

Отредактируйте новый файл, заменив в нем метод rebuild ().

В этом коде просто подтверждается, что вместо основного класса выполняется класс его замещения. После щелчка на кнопке Rebuild (Перестроить), например, на экране Category Manager: Articles, должен произойти выход из программы с приведенным выше сообщением, если выполняется замещающий вариант метода rebuild ().

А теперь необходимо ввести подключаемый модуль myclasses, загружающий вместо основного класса замещающий его класс. С этой целью создайте новый файл myclasses.php в папке plugins/system/myclasses.

Введите в новом файле (plugins/system/myclasses/myclasses.php) код.

Перейдите в административную часть веб-сайта на Joomla, а затем найдите и установите подключаемый модуль с помощью функций Discover и Install соответственно, как и в предыдущих примерах. Не забудьте также активизировать подключаемый модуль в компоненте Plugin Manager.

Перейдите по команде Contents Category Manager (Содержимое ^Диспетчер категорий) в административной части веб-сайта на Joomla и щелкните на пиктограмме Rebuild. Выполнение Joomla должно остановиться, а на экране — появиться сообщение "From myclasses/tabelnested.php file", указывающее на то, что основной класс успешно замещен.

Такой прием может быть использован для замещения большинства основных классов Joomla, кроме тех, которые уже загружены до импорта системных подключаемых модулей. Если основной класс замещается подобным способом, то беспокоиться о перезаписи этого класса при переходе на новую версию Joomla не приходится. Следовательно, пользоваться таким приемом намного удобнее, чем просто влезать в исходный код базовых файлов с целью его замены. Однако если в любых замещаемых основных классах обнаружены и исправлены программные ошибки, то их придется проверить и исправить самостоятельно и в классах замещения. Это особенно важно для исправления программных ошибок, нарушающих безопасность системы.


Понравился материал? Пригодилась информация? Плюсани в социалки!


 
Похожие новости