JomSocial был написан для ядра и нуждается в обновлении

Я работаю над проектом, в котором первоначальный разработчик настроил JomSocial и написал непосредственно:

компоненты / com_community / шаблоны / JomSocial / макеты

И создал там папки так же, как записал в файлы вроде base.php и так далее.

Текущая настроенная версия JomSocial — 4.0.9, и мне нужно обновить ее до последней версии — 4.4.5, версия Joomla — 3.8.1.

Я понимаю, что мне нужно создать переопределенную папку в папке с шаблонами, например, для примера файла base.php для каждого из изменений:

/templates/yourTemplateName/html/com_community/layouts/frontpage/base.php

Но для того, чтобы сохранить сделанные разработчиком изменения и иметь последнюю версию JomSocial, не мешая при этом дальнейшим обновлениям, как в этой ситуации, мне бы пришлось, если я не ошибаюсь:

  1. Отделите изменения от файлов ядра, которые он сделал на 4.0.9.

  2. Создайте папки и файлы в моей папке шаблонов для каждого основного файла, который мне нужно настроить, и он должен включать только изменения, внесенные разработчиком в обновленной версии 4.4.5.

Я правильно понял? Есть ли другой способ сделать это? любая помощь будет принята с благодарностью.

1

Решение

Вы правы в том, как переопределить файлы макета в шаблоне. К сожалению, он связывает ваши переопределения с конкретным шаблоном — установка другого шаблона и установка его по умолчанию потеряет ваши переопределения.

Вы можете переопределить любой другой файл в компоненте, используя плагин и перехватывая вызов контроллера компонента, заменяя свой собственный. Вам придется скопировать все файлы Jomsocial между точкой входа (контроллером) и файлом, к которому вы хотите применить изменения, с помощью этого подхода, поэтому, вероятно, первоначальный разработчик просто переписал файлы основных компонентов напрямую (не может безопасно обновить с этим подходом в любом случае, без проверки на изменения в коде, который вы скопировали из файлов основных компонентов в ваше переопределение). Этот подход будет выглядеть примерно так:

class plgSystemComSocialOverride extends JPlugin {

public function __construct(&$subject, $config = array()) {
parent::__construct($subject, $config);
}

public function onAfterRoute() {
$app = JFactory::getApplication();
if('com_social' == JRequest::getCMD('option') && !$app->isSite()) {
require_once(dirname(__FILE__) . DS . 'comsocialoverride' . DS . 'my_jomsocial_controller.php');
}
}
}

Я думаю, что вы могли бы объединить вышеупомянутый подход с манипулированием загрузчиком классов Joomla, чтобы избежать необходимости непосредственно копировать файлы Jomsocial, чтобы изменить их include заявления в ваши файлы переопределения. При таком подходе вы переопределяете контроллер, как указано выше, и вызываете контроллер Jomsocial с этого переопределенного контроллера. Но прежде чем сделать это, вы добавите переопределенный base.php или что бы то ни было для загрузчика классов. Я не уверен, использует ли новая версия Jomsocial автозагрузку или нет (т.е. import() вместо include()).

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]