Некоторые вопросы по разработке плагинов
1
Написал около десятка плагинов, но мне кажется я не все понял о наследовании в 0.4.2
1) как в шаблоне использовать данные конфига для foreach, elseif?
Пример:
я пока решаю эту проблему таким костылем
2) Как обстоят дела с наследованием экшенов?
Если мне приходится вмешаться в регистрацию, чтобы добавить проверку, мне приходится переопределять метод класса регистрации, должен быть лучший путь
выдирать ради этого целый метод это большой костыль. вроде можно повесить свой код на конец или начало выполнения метода модуля регистрации, но что, если надо вывести сделать проверку и в экшене регистрации вывести ошибку, совать ее в модуль не правильно?
3) вот если мне необходимо изменить голосование за топики, строчку
как мне это лучше сделать? каким образом переопределить файл аякса, принимающий запрос на изменение рейтинга топика, а так же можно ли изменить саму эту строчку, не делегируя целиком шаблоны topic.tpl и topic_list.tpl и закрывая тем самым эти шаблоны от изменения другими плагинами?
1) как в шаблоне использовать данные конфига для foreach, elseif?
Пример:
{if {cfg name='path.root.web'}}
это естественно не работает, как правильно?
если мы делегируем только шаблон и у нас нет возможности присвоить
переменной значение конфига в блоке/экшене/хуке
{/if}
я пока решаю эту проблему таким костылем
{php}
if ((Config::Get('plugin.name.value')) && $oUserCurrent {
{/php}
вот такой костыль
{php}
}
{/php}
2) Как обстоят дела с наследованием экшенов?
Если мне приходится вмешаться в регистрацию, чтобы добавить проверку, мне приходится переопределять метод класса регистрации, должен быть лучший путь
class PluginExample extends Plugin {
/**
* Делегирование регистрации
*/
public $aInherits = array(
'action' => array('ActionLogin', 'ActionRegistration', 'ActionTalk'),
);
...
}
class PluginExample_ActionRegistration extends PluginExample_Inherit_ActionRegistration {
protected function EventIndex() {
...
$this->PluginAntistatist_Antistatist_addLogin($oUser->getLogin());
...
}
выдирать ради этого целый метод это большой костыль. вроде можно повесить свой код на конец или начало выполнения метода модуля регистрации, но что, если надо вывести сделать проверку и в экшене регистрации вывести ошибку, совать ее в модуль не правильно?
3) вот если мне необходимо изменить голосование за топики, строчку
<li class="minus"><a href="#" onclick="lsVote.vote({$oTopic->getId()},this,-5,'topic'); return false;"></a></li>
как мне это лучше сделать? каким образом переопределить файл аякса, принимающий запрос на изменение рейтинга топика, а так же можно ли изменить саму эту строчку, не делегируя целиком шаблоны topic.tpl и topic_list.tpl и закрывая тем самым эти шаблоны от изменения другими плагинами?
- 0
- 17 марта 2011, 21:58
- soulgarden
- 8
Проблема с загрузкой файла
Скрипт посылает аяксом файл на /include/ajax/uploadfile.php
Если обработать принимаемый файл так —
то все работает, но мне нужно здесь задать собственное имя файла если я вставаляю код
или хотя бы
то так же скрипт видимо выдает ошибку, и яваскрит не может распарсить ответ аякса, но никак не пойму, в чем же здесь ошибка???
Если обработать принимаемый файл так —
if (!$sFile = $oEngine->Topic_UploadTopicImageFile($_FILES['img_file'], $oUserCurrent)) {
$sMsgTitle = $oEngine->Lang_Get('error');
$sMsg = $oEngine->Lang_Get('uploadimg_file_error');
}
то все работает, но мне нужно здесь задать собственное имя файла если я вставаляю код
$sDirUpload=$oEngine->Image_GetIdDir($oUserCurrent->getId());
$aParams=$oEngine->Image_BuildParams('topic');
if ($sFileImage = $oEngine->Image_Resize($sFileTmp,$sDirUpload,'jnjkn.jpg',Config::Get('view.img_max_width'),Config::Get('view.img_max_height'),Config::Get('view.img_resize_width'),null,true,$aParams)) {
@unlink($sFileTmp);
$oEngine->Image_GetWebPath($sFileImage);
}
или хотя бы
$sFileTmp=Config::Get('sys.cache.dir').func_generator();
if (!move_uploaded_file($_FILES['img_file'],$sFileTmp)) {
return false;
}
то так же скрипт видимо выдает ошибку, и яваскрит не может распарсить ответ аякса, но никак не пойму, в чем же здесь ошибка???
- +1
- 13 марта 2011, 11:14
- soulgarden
- Оставить комментарий
Вопрос про делегириование
Мне нужно делегировать 3 различных экшена, а точнее наследовать, чтобы изменить в них ивенты
Проблема в том, что тут можно прописать только один экшен, иначе каждый последующий перезапишет элемент action массива $aDelegates,
так как же мне несколько делегатов сделать?
protected $aDelegates = array(
'action' => array('ActionTopic'=>'PluginAntispam_ActionTopic')
);
Проблема в том, что тут можно прописать только один экшен, иначе каждый последующий перезапишет элемент action массива $aDelegates,
так как же мне несколько делегатов сделать?
- 0
- 05 марта 2011, 11:32
- soulgarden
- 2