Re: Вопросы по написанию плагинов
assets - обычно это разноплановая статика сайта, которая не изменяется или редко меняется.
Пишу плагины под заказ, конвертирую шаблоны под Монстра - пишите на email через ссылку в профиле.
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Монстра → Разработка → Вопросы по написанию плагинов
assets - обычно это разноплановая статика сайта, которая не изменяется или редко меняется.
и если плагин позволяет добавлять фотографии (галерея, например), то в какую папку загружать фотки?
3) /public/uploads/gallery/
1) /storage/gallery/
В storage ничего публичного ложить нельзя. В ней только приватные данные. папка /public/ для публичных данных
JINN, вообщем в папке public создавать папку gallery но уж точно не в /assets/ или /storage/
JINN, достаточно написать вот так:
Test content here
Awilum, можешь пояснить разницу(т.е. в каких случаях применяются) между
$table = new Table('table_name'); // и $table = Table::get('table_name');
DmitriyMX
$table = Table::get('table_name');
Возвращает название файла(таблицы) и весь xml файл(таблицу).
Использовать нужно
$table = new Table('table_name');
Потому что это позволит потом работать с таблицей используя XMLDB API. Например:
$users = new Table('users'); $users->insert(array('login'=>'admin', 'password'=>'pass'));
тут возникла мысля - может те, кто пишут сейчас что под монстру, отпишутся над чем работают, если позже это пойдёт в паблик? чтобы не было пустой работы над одним и тем же?
у меня сейчас идёт работа над плагином авторизации: управление юзерами в админке, регистрация, авторизация на сайте, активация по мылу. юзеры не будут иметь доступа к админке, т.к. они в отдельной таблице.
у меня сейчас идёт работа над плагином авторизации: управление юзерами в админке, регистрация, авторизация на сайте, активация по мылу.
В Монстре есть бекенд по работе с юзерами. Нету фронтенда.
Этот плагин не мог бы расширить(дополнить) существующий функционал, даже если этот плагин будет EL'Users ?
юзеры не будут иметь доступа к админке, т.к. они в отдельной таблице.
Насколько сложно будет этот плагин адаптировать к таблице пользователей ? так как в Монстре имеется таблица пользователей уже.
я не стал использовать существующих юзеров по двум причинам:
1. Пользователи фронта никак не связаны с бекэндом. Т.к. в цмс нет админского функцианала во фронте (например, как в Джумле редактирование материалов не уходя с сайта), то это никак не повлияет на работу.
2. У разных проектов будут разные поля в акке юзеров - каждый раз влезать в системную таблицу не комильфо. ИМХО, плагин не должен влиять на систему или же должен удаляться без следов. Терять же данные юзеров при отключении плагина тоже не очень.
В итоге разделение юзеров фронта и бекэнда на мой взгляд самое оно. Впрочем, свести его под системную таблицу Users будет легко - переименовать подключаемую таблицу и сделать автозамену ролей в массиве и сессиях.
тут возникла мысля - может те, кто пишут сейчас что под монстру, отпишутся над чем работают, если позже это пойдёт в паблик? чтобы не было пустой работы над одним и тем же?
Каталог с неограниченной вложенностью. В ближайшие дни выложу бета версию по управлению каталогом с админки. Над выводом каталога на сайте работы затянутся, т.к. времени с понедельника не будет.
Сейчас воспринимать всерьез мою работу(читай "велосипед") не стоит, но если интересно, то работаю над плагином Новостей. Реализую самый простой функционал: название новости, текст(сокращенный и полный) и дата публикации таковой. Но я еще только учусь писать плагины под Монстру, учитывайте это
А где в документации список всех хуков и инфа по Action?
Про Action тут есть немного: https://docs.google.com/document/d/1LYS … BQf_jplxfo
нету по ссылке ничего.
впрочем, я просто внимание обратить хотел этим на упущение в доках сайта.
о_О вау.... и правда ссылка тупанутая...
Вот вам, нормальная: http://goo.gl/A6OMu
Возможно ли расширить функционал стандартных хелперов монстры
Какие хелперы хотите расширять ?
Хелпер форм.
Я так понимаю сейчас можно создать хелпер form_ext и юзать его параллельно с хелпером form.
Возможно ли как нибудь расширить сам класс form чтобы не плодить хелперы.
Допустим, чтобы монстра сначала искала их в активном плагине, а если не находит, то загружает из /monstra/helpers/
Можно сделать вот это "Зарегистрировать новый метод для Form Helper-a"
Form::macro('my_field', function() { return ''; });
echo Form::my_field();
Но для этого необходим php 5.3
UPD
для Form - добавил кастомные макросы: https://github.com/Awilum/monstra-cms/c … 63eee40376 - минимальная версия php 5.3 для них
Несколько советов по разработке плагинов.
1) Формы должны содержать спрятанное поле с токеном
И этот токен нужно проверять при сабмите формы:
if (Request::post('my_form_submit')) { if (Security::check(Request::post('csrf'))) { // some code here... } else { die('csrf detected!'); } }
2) Токены также необходимо вешать и на екшены. Например удаление записей или файлов.
В шаблоне ссылка вместе с токеном:
'btn btn-actions', 'onclick' => "return confirmDelete('".__('Delete file: :file', 'filesmanager', array(':file' => $file))."')")); ?>
В контролере:
// some code here... if(Request::get('action') == 'delete') { if (Security::check(Request::get('token'))) { // some code here... } } // some code here...
1. Javascript::add() - не подключает JS со стороннего сайта (тот же JQuery), я правильно понял?
не подключает.
2. в плагине jQuery идет подключение Action::add('theme_header', 'jQueryThemesHeaders');
но в шаблонной теме нет theme_header, есть только theme_footer. Это баг или так задумано? (в моем плагине удалось подключить скрипт только к theme_footer)
бага и там и там.
function foo($attributes, $content) {
$color = (isset($attributes['color'])) ? $attributes['color'] : 'black';
return ''.$content.'';
}
Shortcode::add('foo', 'foo');
{foo}test{/foo} {foo color="red"}test{/foo}
обновил доку: http://monstra.org/documentation/shortcode-api
Возможно это старый код https://github.com/Awilum/monstra-cms/b … in.php#L66 который больше не нужен. Но помню что делал это для того что бы Pages::pageLoader() не срабатывал в админке так как в результате его выполнения в админке страницы отдавались со статусом 404.
В гостевой книге этого нету, так как там нету вот такого https://github.com/Awilum/monstra-cms/b … n.php#L127
по поводу плагина Pages я пресмотрю этот код еще раз. отпишусь вечером....
JINN, да нужно.
в main() в твоем случае если будет что типа https://github.com/Awilum/monstra-cms/b … n.php#L127 то не допустить это выполнить в админке.
if (BACKEND == false) { // тут только то что должно работать во фронтенде }
p.s. уже думаю как это решить на стороне движка...
Плагины для Монстра делятся на два вида:
1) плагин "живущий своей жизнью". любой плагин, который выполняет какие либо действия не влияющие на фронтенд системы, а именно модуля Site.php
2) плагин компонент системы. любой плагин, который влияет на работу фронтенда системы, на модуль Site.php. Он влияет на отображаемый контент, заголовок, ключевые слова, описание, шаблон страницы...
Такой плагин должен наследовать Frontend "интерфейс" класс. https://github.com/Awilum/monstra-cms/b … s.php#L208
Пример:
class Sandbox extends Frontend { }
такой плагин запустится во фронтенде с уже предустановленными ключевыми словами, заголовком, шаблоном "index".
в будущем возможны улучшения в Frontend классе и они отобразятся на плагинах использующих его.
тоже самое относится и к Backend https://github.com/Awilum/monstra-cms/b … s.php#L223
Монстра → Разработка → Вопросы по написанию плагинов
Форум работает на PunBB, при поддержке Informer Technologies, Inc