Перейти к содержанию
Авторизация  
aplayer

Создание плагина

Рекомендуемые сообщения

Человеку, похоже, хочется вставить в шаблон готовый спагетти-код и совершенно не хочется заморачиваться с ООП, и разделением логики и представления. Вобщем-то, логично будет посоветовать подойти к вопросу кардинально и пересмотреть свой выбор движка. Например в тройке инклюды в шаблон возможны.

 

40 минут назад, WaNted сказал:

dev/setup/install.php можете там намудрить с созданием своего php-файла. Чтобы во время установки создавался файл с нужным содержимым.

Кстати, многие разработчики, используя возможности класса ips_plugins_setup_install, даже не подозревают о возможности, а часто и необходимости удаления созданных с его помощью ресурсов (файлов, таблиц, полей, строк...), при деинсталяции плагина.  Я и сам далеко не сразу узнал о файле uninstall.php создаваемом в корневой папке плагина.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
41 минуту назад, siv1987 сказал:

Инклуды это дичь, и не знаю чем это спасет ситуацю

код шаблонов со скобочками не подсвечивается наверно ни одним редактором. Например netbeans не будет показывать ошибки синтаксиса. Некоторые более простые текстовые редакторы с подсветкой синтаксиса будут наоборот на каждую скобку реагировать как на ошибку и весь код будет подчеркнут красными линиями и восклицательными знаками. Благо тот же netbeans не реагирует как на ошибки.

Так же ни один редактор не выравнивает такой код лесенкой.

Недостатков много.

А с инклюдом, прописал в шаблоне одну строку и пиши весь остальной код в любимом редакторе на обычном php html js css итп.

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Давным давно правлю код в microsoft code, всё нормально подсвечивается. Вот обычный кусок phtml из dev

image.png.c95778357885058062aa1a0526fae2e8.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
1 минуту назад, Desti сказал:

Давным давно правлю код в microsoft code, всё нормально подсвечивается. Вот обычный кусок phtml из dev

на скрине чистый html в котром ips-теги стоят между html-тегами и воспринимаются редактором как обычный текст.

А вот когда дело дойдет до php там редакторы начнут спотыкаться.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
57 минут назад, aplayer сказал:

код шаблонов со скобочками не подсвечивается наверно ни одним редактором

Код, как сказали выше, надо разделять от представления - шаблона. Пишите свою логику в методах класса, там подсветка и проверка синтаксиса работает, а шаблоны используйте только для оформления. Что мешает написать в том же методе hookData логику работы а потом скомпилировать шаблон на основе этих данных? Зачем городить костыли с инклудом левого файла, а потом еще придумывать как этот файл записать на диске при установке.

Возьмите пару тройку плагинов которые используют нужный вам принцип и посмотрите какм там это реализовано, не нужно изобретать свои велосипеды, особенно когда знания языка не особо это позволяет. 

1 час назад, aplayer сказал:

А вот когда дело дойдет до php там редакторы начнут спотыкаться.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

siv1987 если честно я не понял о чем речь. Точнее не понял что значит отделить логику от шаблона.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
41 минуту назад, aplayer сказал:

если честно я не понял о чем речь.

Такая же фигня :) тут, по моему, уже никто не понимает, о чем речь :)

после слов "IPS-овский PHP"..

 

7 часов назад, aplayer сказал:

Не хочу городить 1000 строк кода в теле функции hookData()

А какая разница, где вы сгородите свои 1000 строк кода? Что в основном файле, что в инклюде, разница будет только в том, что первый код будет выполнен быстрее и не будет дорогой дисковой операции.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
8 часов назад, aplayer сказал:

Не хочу городить 1000 строк кода в теле функции hookData(), а сделать инклюд который сформирует переменную $content.

 

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

 

1 час назад, aplayer сказал:

если честно я не понял о чем речь. Точнее не понял что значит отделить логику от шаблона.

https://ru.m.wikipedia.org/wiki/Model-View-Controller

 

26 минут назад, Desti сказал:

Такая же фигня :) тут, по моему, уже никто не понимает, о чем речь :)

Значит вы не знакомы с паттерными проектирования. 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Тот пример создания плагина который тут https://invisioncommunity.com/developers/docs/development/plugins/complete-example-of-a-plugin-in-ips-community-suite-r50/ не открывает всех секретов технологии.

Синтаксис скобочек и шаблончиков мне понятен, не первый раз с подобным сталкивался, но он мне не нравится. Как представлю, что я сейчас начну обработчик post-запросов с проверкой sql-инъекций или сокет на этих скобочках писать буду мне аж дурно становится. Как а анекдоте: "бери лом - иди подметай"

Ну и прикинул самый оптимальный вариант это минимум скобок а основная масса обычного php-кода иклюдится из других файлов.

Про хуки кода в документации сказано, что они предназначены для расширения имеющихся в движке классов. В них можно писать на обычном php, но я не собираюсь ничего расширять.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Весь основной код пищите в методе hookData(), там где Вы хотели подключить свой инклюд.

Потом можете всё оформить с помощью шаблона, и вывести там же, где у Вас переменная $content.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

 

6 минут назад, aplayer сказал:

Ну и прикинул самый оптимальный вариант это минимум скобок а основная масса обычного php-кода иклюдится из других 

 

Какие вообще скобки? 

 

9 минут назад, aplayer сказал:

Как представлю, что я сейчас начну обработчик post-запросов с проверкой sql-инъекций или сокет на этих скобочках писать буду мне аж дурно становится.

IPS шагнули далеко в плане инкапсуляции данных в sql запросах. Никаких особых проверок на sql инъекции не требуется, достаточно просто привести тип данных к нужному формату.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
1 час назад, siv1987 сказал:

Значит вы не знакомы с паттерными проектирования. 

Это был сарказм, если что.  С IPB плотно с 2006 года :)

1 час назад, aplayer сказал:

Про хуки кода в документации сказано

Хуки кода нужны, когда вам надо поменять поведение класса, изменить логику работы, добавить что-то. А хуки темы нужны, чтобы по другому визуально отобразить что-то или добавить новое отображение.  

Вас пугает синтаксис классов в PHP и прочие новомодные примочки? Не пугайтесь, они отлично уживаются с вашим старым стилем программирования, это всё тот же php.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
8 часов назад, Desti сказал:

Вас пугает синтаксис классов в PHP и прочие новомодные примочки?

да нет не пугает. Я наоборот хочу использовать весь функционал движка на полную катушку. Но писать весь {{ код }} в фигурных скобочках меня угнетает.

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
21 минуту назад, aplayer сказал:

да нет не пугает. Я наоборот хочу использовать весь функционал движка на полную катушку. Но писать весь {{ код }} в фигурных скобочках меня угнетает.

 

 

Код пишется в контроллерах и передается методом 

$var = [ 1,2,3 ];

\IPS\Theme::i()->getTemplate( 'global' )->file( (array) $var );

А принимается 

<ips:template parameters="$var" />

{{foreach $var as $v}}
{$v|raw}
{{endforeach}}

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

greykoo в первом сообщении я озвучил примерно то же самое, только без использования phtml-файла. Там я предлагал сразу вывести контент на экран.

Все равно мне такой подход не нравится. Невозможность инклюда многое портит

У инклюдов кроме отрицательных есть и положительные моменты. Например некоторые скрипты можно не загружать и тем самым экономить память и обращения к диску:
 

if($member_group_id == 1){include '1.php';}

if($member_group_id == 2){include '2.php';}

if($member_group_id == 3){include '3.php';}

В этом примере из 3 скрптов загрузится только один.
 

без инклюда скрипт будет выглядеть примерно так:

if($member_group_id == 1){код скрипта для первой группы;}

if($member_group_id == 2){код скрипта для второй группы;}

if($member_group_id == 3){код скрипта для третьей группы;}

то-есть весь код трех скриптов будет загружен в память, а выполнен только один. Получается  мы загрузили в память 2/3 ненужного кода, а выполнилась только 1/3. Это значит наш код использует всего лишь ~30% полезной мощности.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
2 часа назад, aplayer сказал:

Это значит наш код использует всего лишь ~30% полезной мощности.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
3 часа назад, aplayer сказал:

то-есть весь код трех скриптов будет загружен в память, а выполнен только один. Получается  мы загрузили в память 2/3 ненужного кода, а выполнилась только 1/3. Это значит наш код использует всего лишь ~30% полезной мощности.

Шел 2019 год. Люди пишут фреймворк на ООП, с неймспейсами и трейтами в php а ТС оптимизирует код по количеству строк в файле.
Пишите так, как делают это все, и не занимайтесь херней. С таким подходом вы уже на старте наговнокодите. Если вы не знаете как работает компилятор php не надо заниматься никчемной оптимизации, сосредоточитесь лучше на основную логику вашего скрипта, там я уверен узких мест и так хватает.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Хотя ладно. поглядел уже в других плагинах.

Думал есть готовый класс. А там оказывается всю форму надо самому собирать.

Дальше разберусь.

или есть готовый класс?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
57 минут назад, Desti сказал:

чем не класс? Готовый.

я думал будет что-то типа \IPS\Helpers\Form\GetGroupsForm

Но одной строчкой тут не обойтись.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Напишите 5 строчек кода, сделайте свой класс \IPS\Helpers\Form\GetGroupsForm. Вас не поймешь, то 1000 строк в инклюд - семечки, то 5 строк много и сложно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
15 минут назад, Desti сказал:

Напишите 5 строчек кода, сделайте свой класс \IPS\Helpers\Form\GetGroupsForm. Вас не поймешь, то 1000 строк в инклюд - семечки, то 5 строк много и сложно. 

К хорошему быстро привыкаешь. А тут на тебе- целых 5 строчек вместо одной.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Подскажите как записывать иноформацию вот в эту колонку как показано на скрине:

Админка-Пользователь-крайняя правая колонка:

Screenshot_20190314_182007.thumb.png.6f2c3b0a7529ba927aa745637920ba76.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
Авторизация  

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×