Jump to content
View in the app

A better way to browse. Learn more.

IPBMafia.ru - поддержка Invision Community, релизы, темы, плагины и приложения

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

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

Featured Replies

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

 

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

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

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

  • Replies 94
  • Просмотров 9,8k
  • Created
  • Последний ответ

Лучшие авторы в теме

Most Popular Posts

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

  • Там вообще ничего не нужно городить и вообще лезть редактировать этот файл в ручную. При создании Theme Hook достаточно в содержимом указать свой шаблон типа: {template="templateName" group="plugi

  • Нет. А чем Вам скобочки не угодили?

Posted Images

  • Author
41 минуту назад, siv1987 сказал:

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

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

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

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

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

 

 

  • Author
1 минуту назад, Desti сказал:

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

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

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

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

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

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

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

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

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

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

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 сказал:

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

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

  • Author

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.

  • Author
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}}

 

  • Author

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 не надо заниматься никчемной оптимизации, сосредоточитесь лучше на основную логику вашего скрипта, там я уверен узких мест и так хватает.

  • Author

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

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

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

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

  • Author
57 минут назад, Desti сказал:

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

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

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

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

  • Author
15 минут назад, Desti сказал:

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

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

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

  • Author

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

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

Screenshot_20190314_182007.thumb.png.6f2c3b0a7529ba927aa745637920ba76.png

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Ответить в этой теме...

Последние посетители 0

  • No registered users viewing this page.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.