UMIhelp

Разработка дополнительного функционала => Custom макросы => Тема начата: atach от 15 Ноября 2016, 15:56:56

Название: Использование кастомных функций из папки другого шаблона
Отправлено: atach от 15 Ноября 2016, 15:56:56
Кто может подсказать такой момент.
На одной лицензии несколько проектов и получается что весь кастомный функционал (хранящийся в папке шаблона  /templates/sitename/classes/modules/) повторяется у каждого проекта.

Подскажите, как то можно к ним обращаться к этим классам из из другого шаблона, или все переносить обратно в системные папки /classes/modules/ для использования ?
Название: Re: Использование кастомных функций из папки другого шаблона
Отправлено: aghigay от 15 Ноября 2016, 20:26:38
Можно переносить в другие шаблоны (рекомендуется, полезно для дальнейшей жизни проектов)
Можно переносить в classes
Можно обращаться по uhttp к основному домену, но это будет внешний запрос и внешняя нагрузка
Название: Re: Использование кастомных функций из папки другого шаблона
Отправлено: e.ioffe от 15 Ноября 2016, 22:29:32
Переносите в /classes/modules/ext/ - http://api.docs.umi-cms.ru/razrabotka_nestandartnogo_funkcionala/umimarket/rasshirenie_standartnogo_funkcionala/
Название: Re: Использование кастомных функций из папки другого шаблона
Отправлено: atach от 18 Ноября 2016, 17:00:07
Большое спасибо за помощь.
Весь доп функционал использующий во всех шаблонах вывел в /classes/modules/ext/.

Теперь возник вопрос другой. При переходе на php7 перестали работать обращения к методам за приделами класса через $this.
Раньше я ко всем методам модуля (разделенных по разным файлам и классам, внутри одного модуля) обращался:
$methodObject = $this->methodName();
Сейчас я вызываю контроллер модуля и только потом обращаюсь к методу, даже если вызываю его из него самого.
$dataModul = cmsController::getInstance()->getModule(‘data');
$methodObject = $dataModul->methodName();
Понимаю, что это не правильно, но не могу понять как сделать верно.

В "Службе забот" ответили следующее:
Цитировать
Вы можете добавить конструктор в подключаемый класс. В него первым параметром передается экземпляр основного класса модуля:
public function __construct($module) {
После подключения также становится доступным поле $this->module, указывающее на основной класс.

Но не пойму как правильно это записать в свой подключаемый файл расширяемого класса:
<?php
class site_comment {
public function newMethodName() {
// не работает через this
$this->methodName();
}
Название: Re: Использование кастомных функций из папки другого шаблона
Отправлено: e.ioffe от 18 Ноября 2016, 17:13:03
public $module;

public function __construct($module) {
 $this->module = $module;
}

public function some() {
  $this->module->otherMethod();
}

в файлах, подключаемых из папки ext __construct можно не указывать.
Название: Re: Использование кастомных функций из папки другого шаблона
Отправлено: atach от 21 Ноября 2016, 11:58:02
Большое спасибо!