Проблемы при создании плагинов

Привет,

столкнулся с несколькими непонятными вещами в LS

1) плагин должен добавлять js к некоторым страницам
Config::set('head.rules.myplugin', array(
    'path' => Config::get('path.root.web') . '/settings/profile',
    'js' => array(
        'include' => array(
            Config::get('path.plugins') . '/myplugin/custom.js'
        )
    )
));
Таким образом добавил для одной, а как сделать для нескольких?

2) Два разных плагина наследуют сущность User, но при этом переопределяют разные методы
Если активировать оба, то возникает ошибка:
Fatal error: Class 'PluginMyPlugin_ModuleUser_EntityUser' not found in D:/web/sites/livestreet/engine/include/function.php(412) : eval()'d code on line 1

3) Переопределил ActionSettings, положил шаблон profile.tpl в соответствующую папку плагина, рядом с profile.tpl создал еще один доп. шаблон custom.tpl. При попытке его заинклудить методом тыка обнаружил, что ls пытается это сделать из директории с дефолтовым скином, причем из корня. Можно ли как-то изменить такое поведение?

p.s. по пункту 3, я переопределял ActionSettings только для того, «делегировать» шаблон, можно ли обойтись без этого?

8 комментариев

avatar
1) можно указать массив
'path' => array('path1','path2')

2) какой полный путь до класса PluginMyPlugin_ModuleUser_EntityUser?
3) в шаблоне инклудить нужно с указанием полного пути до шаблона, для его получения можно использовать метод
Plugin::GetTemplatePath()

можно отдельно делегировать шаблоны:
protected $aDelegates=array(
   'template'=>array('actions/ActionProfile/whois.tpl'),       
);
  • ort
  • +1
avatar
2) в обоих плагинах одинаковый: plugins/myplugin/classes/modules/user/entity/User.entity.class.php

3)можно пример использования Plugin::GetTemplatePath() в шаблоне, у меня не получилось
avatar
2) нужно проверить, что содержит переменная $sFileClass

3) в экшене сделать
$this->Viewer_Assign('sTemplatePathPlugin',rtrim(Plugin::GetTemplatePath(__CLASS__),'/'));
далее в шаблоне
{include file="$sTemplatePathPlugin/name.tpl"}
avatar
2)
string(86) "D:/web/sites/livestreet/plugins/crop/classes/modules/user/entity/User.entity.class.php" string(94) "D:/web/sites/livestreet/plugins/crop_inherit/classes/modules/user/entity/User.entity.class.php" 
Fatal error: Class 'PluginCrop_ModuleUser_EntityUser' not found in D:/web/sites/livestreet/engine/include/function.php(412) : eval()'d code on line 1


3) такой вариант я видел в примерах, но он не удобен тем, что мне придется наследовать экшн только для того, чтобы за инклудить шаблон
avatar
если файл
D:/web/sites/livestreet/plugins/crop/classes/modules/user/entity/User.entity.class.php
существует, и в нем определен класс PluginCrop_ModuleUser_EntityUser — проблем быть не должно

PS не нужно создавать дубли топиков
avatar
Пути все правильные, перепроверил много раз :)
Заметил забавный момент… Есть 2 плагина, gravatar — переопределяет дефолтовый метод getProfileAvatarPath() и crop — добавляет все к той же сущности User дополнительный метод. Так вот ошибка появляется если их активировать в порядке crop, gravatar. При активации в обратном порядке проблема не наблюдается.
avatar
проверь на этом примере — livestreet.ru/uploads/plugins_for_test.zip
версия движка 0.4.1?
avatar
пример проверил, все хорошо
версия движка 0.4.1
Попробую переписать плагины с нуля, по результатам отпишут
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.