4 марта, 20195 yr comment_155915 Человеку, похоже, хочется вставить в шаблон готовый спагетти-код и совершенно не хочется заморачиваться с ООП, и разделением логики и представления. Вобщем-то, логично будет посоветовать подойти к вопросу кардинально и пересмотреть свой выбор движка. Например в тройке инклюды в шаблон возможны. 40 минут назад, WaNted сказал: dev/setup/install.php можете там намудрить с созданием своего php-файла. Чтобы во время установки создавался файл с нужным содержимым. Кстати, многие разработчики, используя возможности класса ips_plugins_setup_install, даже не подозревают о возможности, а часто и необходимости удаления созданных с его помощью ресурсов (файлов, таблиц, полей, строк...), при деинсталяции плагина. Я и сам далеко не сразу узнал о файле uninstall.php создаваемом в корневой папке плагина. Link to comment https://ipbmafia.ru/topic/21131-sozdanie-plagina/?&do=findComment&comment=155915 Share on other sites Больше вариантов
4 марта, 20195 yr Author comment_155916 41 минуту назад, siv1987 сказал: Инклуды это дичь, и не знаю чем это спасет ситуацю код шаблонов со скобочками не подсвечивается наверно ни одним редактором. Например netbeans не будет показывать ошибки синтаксиса. Некоторые более простые текстовые редакторы с подсветкой синтаксиса будут наоборот на каждую скобку реагировать как на ошибку и весь код будет подчеркнут красными линиями и восклицательными знаками. Благо тот же netbeans не реагирует как на ошибки. Так же ни один редактор не выравнивает такой код лесенкой. Недостатков много. А с инклюдом, прописал в шаблоне одну строку и пиши весь остальной код в любимом редакторе на обычном php html js css итп. Link to comment https://ipbmafia.ru/topic/21131-sozdanie-plagina/?&do=findComment&comment=155916 Share on other sites Больше вариантов
4 марта, 20195 yr comment_155917 Давным давно правлю код в microsoft code, всё нормально подсвечивается. Вот обычный кусок phtml из dev Link to comment https://ipbmafia.ru/topic/21131-sozdanie-plagina/?&do=findComment&comment=155917 Share on other sites Больше вариантов
4 марта, 20195 yr comment_155918 ТС имеет ввиду подсветку синтаксиса php в шаблонах. Link to comment https://ipbmafia.ru/topic/21131-sozdanie-plagina/?&do=findComment&comment=155918 Share on other sites Больше вариантов
4 марта, 20195 yr Author comment_155919 1 минуту назад, Desti сказал: Давным давно правлю код в microsoft code, всё нормально подсвечивается. Вот обычный кусок phtml из dev на скрине чистый html в котром ips-теги стоят между html-тегами и воспринимаются редактором как обычный текст. А вот когда дело дойдет до php там редакторы начнут спотыкаться. Link to comment https://ipbmafia.ru/topic/21131-sozdanie-plagina/?&do=findComment&comment=155919 Share on other sites Больше вариантов
4 марта, 20195 yr comment_155920 57 минут назад, aplayer сказал: код шаблонов со скобочками не подсвечивается наверно ни одним редактором Код, как сказали выше, надо разделять от представления - шаблона. Пишите свою логику в методах класса, там подсветка и проверка синтаксиса работает, а шаблоны используйте только для оформления. Что мешает написать в том же методе hookData логику работы а потом скомпилировать шаблон на основе этих данных? Зачем городить костыли с инклудом левого файла, а потом еще придумывать как этот файл записать на диске при установке. Возьмите пару тройку плагинов которые используют нужный вам принцип и посмотрите какм там это реализовано, не нужно изобретать свои велосипеды, особенно когда знания языка не особо это позволяет. 1 час назад, aplayer сказал: А вот когда дело дойдет до php там редакторы начнут спотыкаться. Php в шаблоне по большему счету делать нечего. В шаблонизаторе используются только простые выражения, там подсветка не нужна, вся логика отдельно. Link to comment https://ipbmafia.ru/topic/21131-sozdanie-plagina/?&do=findComment&comment=155920 Share on other sites Больше вариантов
4 марта, 20195 yr Author comment_155921 siv1987 если честно я не понял о чем речь. Точнее не понял что значит отделить логику от шаблона. Link to comment https://ipbmafia.ru/topic/21131-sozdanie-plagina/?&do=findComment&comment=155921 Share on other sites Больше вариантов
4 марта, 20195 yr comment_155923 41 минуту назад, aplayer сказал: если честно я не понял о чем речь. Такая же фигня тут, по моему, уже никто не понимает, о чем речь после слов "IPS-овский PHP".. 7 часов назад, aplayer сказал: Не хочу городить 1000 строк кода в теле функции hookData() А какая разница, где вы сгородите свои 1000 строк кода? Что в основном файле, что в инклюде, разница будет только в том, что первый код будет выполнен быстрее и не будет дорогой дисковой операции. Link to comment https://ipbmafia.ru/topic/21131-sozdanie-plagina/?&do=findComment&comment=155923 Share on other sites Больше вариантов
4 марта, 20195 yr comment_155924 8 часов назад, aplayer сказал: Не хочу городить 1000 строк кода в теле функции hookData(), а сделать инклюд который сформирует переменную $content. Этот файл как раз для этого и преднозначен. Не хватает абстракции в одном файле, создавайте приложение и разделяйте код по логике. Вы для начало напишите эти 1000 строк а потом уже будете думать надо ли расширятся или нет. Это частая ошибка новичков когда они с самого начала хотят написать мега крутую аппликацию с сложной структурой. 1 час назад, aplayer сказал: если честно я не понял о чем речь. Точнее не понял что значит отделить логику от шаблона. https://ru.m.wikipedia.org/wiki/Model-View-Controller 26 минут назад, Desti сказал: Такая же фигня тут, по моему, уже никто не понимает, о чем речь Значит вы не знакомы с паттерными проектирования. Link to comment https://ipbmafia.ru/topic/21131-sozdanie-plagina/?&do=findComment&comment=155924 Share on other sites Больше вариантов
4 марта, 20195 yr Author comment_155925 Desti я скажем так первый раз бросаюсь в бой на плагины. Ничего про технологию их создания не знаю. Сунулся в гугл, а там информация очень сжатая. Пытаюсь освоить методом проб и ошибок. Тот пример создания плагина который тут https://invisioncommunity.com/developers/docs/development/plugins/complete-example-of-a-plugin-in-ips-community-suite-r50/ не открывает всех секретов технологии. Синтаксис скобочек и шаблончиков мне понятен, не первый раз с подобным сталкивался, но он мне не нравится. Как представлю, что я сейчас начну обработчик post-запросов с проверкой sql-инъекций или сокет на этих скобочках писать буду мне аж дурно становится. Как а анекдоте: "бери лом - иди подметай" Ну и прикинул самый оптимальный вариант это минимум скобок а основная масса обычного php-кода иклюдится из других файлов. Про хуки кода в документации сказано, что они предназначены для расширения имеющихся в движке классов. В них можно писать на обычном php, но я не собираюсь ничего расширять. Link to comment https://ipbmafia.ru/topic/21131-sozdanie-plagina/?&do=findComment&comment=155925 Share on other sites Больше вариантов
4 марта, 20195 yr comment_155926 Весь основной код пищите в методе hookData(), там где Вы хотели подключить свой инклюд. Потом можете всё оформить с помощью шаблона, и вывести там же, где у Вас переменная $content. Link to comment https://ipbmafia.ru/topic/21131-sozdanie-plagina/?&do=findComment&comment=155926 Share on other sites Больше вариантов
4 марта, 20195 yr comment_155927 Вам бы для начало структуру какого нибудь плагина разобрать, и не одного. Как вы изучаете документацию мы уже знаем по предыдущим темам. 6 минут назад, aplayer сказал: Ну и прикинул самый оптимальный вариант это минимум скобок а основная масса обычного php-кода иклюдится из других Какие вообще скобки? 9 минут назад, aplayer сказал: Как представлю, что я сейчас начну обработчик post-запросов с проверкой sql-инъекций или сокет на этих скобочках писать буду мне аж дурно становится. IPS шагнули далеко в плане инкапсуляции данных в sql запросах. Никаких особых проверок на sql инъекции не требуется, достаточно просто привести тип данных к нужному формату. Link to comment https://ipbmafia.ru/topic/21131-sozdanie-plagina/?&do=findComment&comment=155927 Share on other sites Больше вариантов
4 марта, 20195 yr comment_155932 1 час назад, siv1987 сказал: Значит вы не знакомы с паттерными проектирования. Это был сарказм, если что. С IPB плотно с 2006 года 1 час назад, aplayer сказал: Про хуки кода в документации сказано Хуки кода нужны, когда вам надо поменять поведение класса, изменить логику работы, добавить что-то. А хуки темы нужны, чтобы по другому визуально отобразить что-то или добавить новое отображение. Вас пугает синтаксис классов в PHP и прочие новомодные примочки? Не пугайтесь, они отлично уживаются с вашим старым стилем программирования, это всё тот же php. Link to comment https://ipbmafia.ru/topic/21131-sozdanie-plagina/?&do=findComment&comment=155932 Share on other sites Больше вариантов
5 марта, 20195 yr Author comment_155933 8 часов назад, Desti сказал: Вас пугает синтаксис классов в PHP и прочие новомодные примочки? да нет не пугает. Я наоборот хочу использовать весь функционал движка на полную катушку. Но писать весь {{ код }} в фигурных скобочках меня угнетает. Link to comment https://ipbmafia.ru/topic/21131-sozdanie-plagina/?&do=findComment&comment=155933 Share on other sites Больше вариантов
5 марта, 20195 yr comment_155934 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}} Link to comment https://ipbmafia.ru/topic/21131-sozdanie-plagina/?&do=findComment&comment=155934 Share on other sites Больше вариантов
5 марта, 20195 yr Author comment_155939 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% полезной мощности. Link to comment https://ipbmafia.ru/topic/21131-sozdanie-plagina/?&do=findComment&comment=155939 Share on other sites Больше вариантов
5 марта, 20195 yr comment_155943 2 часа назад, aplayer сказал: Это значит наш код использует всего лишь ~30% полезной мощности. Это значит лишь одно, тот, кто разработал такое приложение, очень плохо разбирается в программировании, в алгоритмах и прочем. Если совсем грубо, то это "быдлокод" (не обижайтесь, это мем, можно почитать на лурке). Link to comment https://ipbmafia.ru/topic/21131-sozdanie-plagina/?&do=findComment&comment=155943 Share on other sites Больше вариантов
5 марта, 20195 yr comment_155946 3 часа назад, aplayer сказал: то-есть весь код трех скриптов будет загружен в память, а выполнен только один. Получается мы загрузили в память 2/3 ненужного кода, а выполнилась только 1/3. Это значит наш код использует всего лишь ~30% полезной мощности. Шел 2019 год. Люди пишут фреймворк на ООП, с неймспейсами и трейтами в php а ТС оптимизирует код по количеству строк в файле. Пишите так, как делают это все, и не занимайтесь херней. С таким подходом вы уже на старте наговнокодите. Если вы не знаете как работает компилятор php не надо заниматься никчемной оптимизации, сосредоточитесь лучше на основную логику вашего скрипта, там я уверен узких мест и так хватает. Link to comment https://ipbmafia.ru/topic/21131-sozdanie-plagina/?&do=findComment&comment=155946 Share on other sites Больше вариантов
7 марта, 20195 yr Author comment_156007 подскажите пожалуйста как такую форму в settings.php прописать? Link to comment https://ipbmafia.ru/topic/21131-sozdanie-plagina/?&do=findComment&comment=156007 Share on other sites Больше вариантов
7 марта, 20195 yr Author comment_156008 Хотя ладно. поглядел уже в других плагинах. Думал есть готовый класс. А там оказывается всю форму надо самому собирать. Дальше разберусь. или есть готовый класс? Link to comment https://ipbmafia.ru/topic/21131-sozdanie-plagina/?&do=findComment&comment=156008 Share on other sites Больше вариантов
7 марта, 20195 yr comment_156009 $form->add( new \IPS\Helpers\Form\Select(...) )- чем не класс? Готовый. Link to comment https://ipbmafia.ru/topic/21131-sozdanie-plagina/?&do=findComment&comment=156009 Share on other sites Больше вариантов
7 марта, 20195 yr Author comment_156010 57 минут назад, Desti сказал: чем не класс? Готовый. я думал будет что-то типа \IPS\Helpers\Form\GetGroupsForm Но одной строчкой тут не обойтись. Link to comment https://ipbmafia.ru/topic/21131-sozdanie-plagina/?&do=findComment&comment=156010 Share on other sites Больше вариантов
7 марта, 20195 yr comment_156012 Напишите 5 строчек кода, сделайте свой класс \IPS\Helpers\Form\GetGroupsForm. Вас не поймешь, то 1000 строк в инклюд - семечки, то 5 строк много и сложно. Link to comment https://ipbmafia.ru/topic/21131-sozdanie-plagina/?&do=findComment&comment=156012 Share on other sites Больше вариантов
7 марта, 20195 yr Author comment_156013 15 минут назад, Desti сказал: Напишите 5 строчек кода, сделайте свой класс \IPS\Helpers\Form\GetGroupsForm. Вас не поймешь, то 1000 строк в инклюд - семечки, то 5 строк много и сложно. К хорошему быстро привыкаешь. А тут на тебе- целых 5 строчек вместо одной. Просто я не помню чтобы в админке эта форма использовалась для чего-то другого. Вот и закрались мысли, что может она готовая в одну строчку есть. Link to comment https://ipbmafia.ru/topic/21131-sozdanie-plagina/?&do=findComment&comment=156013 Share on other sites Больше вариантов
14 марта, 20195 yr Author comment_156187 Подскажите как записывать иноформацию вот в эту колонку как показано на скрине: Админка-Пользователь-крайняя правая колонка: Link to comment https://ipbmafia.ru/topic/21131-sozdanie-plagina/?&do=findComment&comment=156187 Share on other sites Больше вариантов
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.