4 марта, 20195 yr comment_155915 Человеку, похоже, хочется вставить в шаблон готовый спагетти-код и совершенно не хочется заморачиваться с ООП, и разделением логики и представления. Вобщем-то, логично будет посоветовать подойти к вопросу кардинально и пересмотреть свой выбор движка. Например в тройке инклюды в шаблон возможны. 40 минут назад, WaNted сказал: dev/setup/install.php можете там намудрить с созданием своего php-файла. Чтобы во время установки создавался файл с нужным содержимым. Кстати, многие разработчики, используя возможности класса ips_plugins_setup_install, даже не подозревают о возможности, а часто и необходимости удаления созданных с его помощью ресурсов (файлов, таблиц, полей, строк...), при деинсталяции плагина. Я и сам далеко не сразу узнал о файле uninstall.php создаваемом в корневой папке плагина.
4 марта, 20195 yr Author comment_155916 41 минуту назад, siv1987 сказал: Инклуды это дичь, и не знаю чем это спасет ситуацю код шаблонов со скобочками не подсвечивается наверно ни одним редактором. Например netbeans не будет показывать ошибки синтаксиса. Некоторые более простые текстовые редакторы с подсветкой синтаксиса будут наоборот на каждую скобку реагировать как на ошибку и весь код будет подчеркнут красными линиями и восклицательными знаками. Благо тот же netbeans не реагирует как на ошибки. Так же ни один редактор не выравнивает такой код лесенкой. Недостатков много. А с инклюдом, прописал в шаблоне одну строку и пиши весь остальной код в любимом редакторе на обычном php html js css итп.
4 марта, 20195 yr comment_155917 Давным давно правлю код в microsoft code, всё нормально подсвечивается. Вот обычный кусок phtml из dev
4 марта, 20195 yr Author comment_155919 1 минуту назад, Desti сказал: Давным давно правлю код в microsoft code, всё нормально подсвечивается. Вот обычный кусок phtml из dev на скрине чистый html в котром ips-теги стоят между html-тегами и воспринимаются редактором как обычный текст. А вот когда дело дойдет до php там редакторы начнут спотыкаться.
4 марта, 20195 yr comment_155920 57 минут назад, aplayer сказал: код шаблонов со скобочками не подсвечивается наверно ни одним редактором Код, как сказали выше, надо разделять от представления - шаблона. Пишите свою логику в методах класса, там подсветка и проверка синтаксиса работает, а шаблоны используйте только для оформления. Что мешает написать в том же методе hookData логику работы а потом скомпилировать шаблон на основе этих данных? Зачем городить костыли с инклудом левого файла, а потом еще придумывать как этот файл записать на диске при установке. Возьмите пару тройку плагинов которые используют нужный вам принцип и посмотрите какм там это реализовано, не нужно изобретать свои велосипеды, особенно когда знания языка не особо это позволяет. 1 час назад, aplayer сказал: А вот когда дело дойдет до php там редакторы начнут спотыкаться. Php в шаблоне по большему счету делать нечего. В шаблонизаторе используются только простые выражения, там подсветка не нужна, вся логика отдельно.
4 марта, 20195 yr Author comment_155921 siv1987 если честно я не понял о чем речь. Точнее не понял что значит отделить логику от шаблона.
4 марта, 20195 yr comment_155923 41 минуту назад, aplayer сказал: если честно я не понял о чем речь. Такая же фигня тут, по моему, уже никто не понимает, о чем речь после слов "IPS-овский PHP".. 7 часов назад, aplayer сказал: Не хочу городить 1000 строк кода в теле функции hookData() А какая разница, где вы сгородите свои 1000 строк кода? Что в основном файле, что в инклюде, разница будет только в том, что первый код будет выполнен быстрее и не будет дорогой дисковой операции.
4 марта, 20195 yr comment_155924 8 часов назад, aplayer сказал: Не хочу городить 1000 строк кода в теле функции hookData(), а сделать инклюд который сформирует переменную $content. Этот файл как раз для этого и преднозначен. Не хватает абстракции в одном файле, создавайте приложение и разделяйте код по логике. Вы для начало напишите эти 1000 строк а потом уже будете думать надо ли расширятся или нет. Это частая ошибка новичков когда они с самого начала хотят написать мега крутую аппликацию с сложной структурой. 1 час назад, aplayer сказал: если честно я не понял о чем речь. Точнее не понял что значит отделить логику от шаблона. https://ru.m.wikipedia.org/wiki/Model-View-Controller 26 минут назад, Desti сказал: Такая же фигня тут, по моему, уже никто не понимает, о чем речь Значит вы не знакомы с паттерными проектирования.
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, но я не собираюсь ничего расширять.
4 марта, 20195 yr comment_155926 Весь основной код пищите в методе hookData(), там где Вы хотели подключить свой инклюд. Потом можете всё оформить с помощью шаблона, и вывести там же, где у Вас переменная $content.
4 марта, 20195 yr comment_155927 Вам бы для начало структуру какого нибудь плагина разобрать, и не одного. Как вы изучаете документацию мы уже знаем по предыдущим темам. 6 минут назад, aplayer сказал: Ну и прикинул самый оптимальный вариант это минимум скобок а основная масса обычного php-кода иклюдится из других Какие вообще скобки? 9 минут назад, aplayer сказал: Как представлю, что я сейчас начну обработчик post-запросов с проверкой sql-инъекций или сокет на этих скобочках писать буду мне аж дурно становится. IPS шагнули далеко в плане инкапсуляции данных в sql запросах. Никаких особых проверок на sql инъекции не требуется, достаточно просто привести тип данных к нужному формату.
4 марта, 20195 yr comment_155932 1 час назад, siv1987 сказал: Значит вы не знакомы с паттерными проектирования. Это был сарказм, если что. С IPB плотно с 2006 года 1 час назад, aplayer сказал: Про хуки кода в документации сказано Хуки кода нужны, когда вам надо поменять поведение класса, изменить логику работы, добавить что-то. А хуки темы нужны, чтобы по другому визуально отобразить что-то или добавить новое отображение. Вас пугает синтаксис классов в PHP и прочие новомодные примочки? Не пугайтесь, они отлично уживаются с вашим старым стилем программирования, это всё тот же php.
5 марта, 20195 yr Author comment_155933 8 часов назад, Desti сказал: Вас пугает синтаксис классов в PHP и прочие новомодные примочки? да нет не пугает. Я наоборот хочу использовать весь функционал движка на полную катушку. Но писать весь {{ код }} в фигурных скобочках меня угнетает.
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}}
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% полезной мощности.
5 марта, 20195 yr comment_155943 2 часа назад, aplayer сказал: Это значит наш код использует всего лишь ~30% полезной мощности. Это значит лишь одно, тот, кто разработал такое приложение, очень плохо разбирается в программировании, в алгоритмах и прочем. Если совсем грубо, то это "быдлокод" (не обижайтесь, это мем, можно почитать на лурке).
5 марта, 20195 yr comment_155946 3 часа назад, aplayer сказал: то-есть весь код трех скриптов будет загружен в память, а выполнен только один. Получается мы загрузили в память 2/3 ненужного кода, а выполнилась только 1/3. Это значит наш код использует всего лишь ~30% полезной мощности. Шел 2019 год. Люди пишут фреймворк на ООП, с неймспейсами и трейтами в php а ТС оптимизирует код по количеству строк в файле. Пишите так, как делают это все, и не занимайтесь херней. С таким подходом вы уже на старте наговнокодите. Если вы не знаете как работает компилятор php не надо заниматься никчемной оптимизации, сосредоточитесь лучше на основную логику вашего скрипта, там я уверен узких мест и так хватает.
7 марта, 20195 yr Author comment_156007 подскажите пожалуйста как такую форму в settings.php прописать?
7 марта, 20195 yr Author comment_156008 Хотя ладно. поглядел уже в других плагинах. Думал есть готовый класс. А там оказывается всю форму надо самому собирать. Дальше разберусь. или есть готовый класс?
7 марта, 20195 yr comment_156009 $form->add( new \IPS\Helpers\Form\Select(...) )- чем не класс? Готовый.
7 марта, 20195 yr Author comment_156010 57 минут назад, Desti сказал: чем не класс? Готовый. я думал будет что-то типа \IPS\Helpers\Form\GetGroupsForm Но одной строчкой тут не обойтись.
7 марта, 20195 yr comment_156012 Напишите 5 строчек кода, сделайте свой класс \IPS\Helpers\Form\GetGroupsForm. Вас не поймешь, то 1000 строк в инклюд - семечки, то 5 строк много и сложно.
7 марта, 20195 yr Author comment_156013 15 минут назад, Desti сказал: Напишите 5 строчек кода, сделайте свой класс \IPS\Helpers\Form\GetGroupsForm. Вас не поймешь, то 1000 строк в инклюд - семечки, то 5 строк много и сложно. К хорошему быстро привыкаешь. А тут на тебе- целых 5 строчек вместо одной. Просто я не помню чтобы в админке эта форма использовалась для чего-то другого. Вот и закрались мысли, что может она готовая в одну строчку есть.
14 марта, 20195 yr Author comment_156187 Подскажите как записывать иноформацию вот в эту колонку как показано на скрине: Админка-Пользователь-крайняя правая колонка:
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.