Posted 22 июня, 20231 yr comment_194081 Собственно, можно ли как-то реализовать функционал блока (те, что из Pages) без использования этих самых блоков? Суть в чем. Я хочу реализовать баг-трекер. Есть сборки по играм и для каждой нужен свой баг-трекер. Первым делом решил воспользоваться плагином Downloads Plus. Он встраивает вкладку баг-трекера для каждого файла. Но на 4,7,9 он ожидаемо не работает. Поэтому создал новую базу даннных, создал для каждой сборки категорию, и туда записываю баги. От тем на форуме отказался, так как не удобно и не так гибко. Для каждой сборки на ее странице нужно отображать свои баги. Для этого сделал блок для нужной категории и вставил в код шаблона. И здесь главное неудобство. Надо для каждой игры-сборки создавать свой блок. А если их 10, то уже десять блоков. А если нужно еще фильтр? На каждый фильтр еще по блоку. Так же, если записей нет, то блок не отображается, даже если после условия {{if !empty( $records ) }} добавить {{else}} c кодом. А хотелось бы об этом явно указать. Поэтому нужно создать шаблон, который бы доставал данные из базы и выводил их, но без использования блоков. Я думал вставить код шаблона блоков без использования этих самых блоков, но как передать туда записи из БД я не знаю. Надеюсь, вы меня поняли. Может кто-то уже пытался нечто подобное реализовать? Вот что пытаюсь реализовать. Спойлер Edited 22 июня, 20231 yr by edmsl
22 июня, 20231 yr Author comment_194091 Пожалуй, вопрос можно упростить. Как получить записи $records из базы данных Pages в шаблоне темы?
22 июня, 20231 yr comment_194110 5 часов назад, edmsl сказал: Пожалуй, вопрос можно упростить. Как получить записи $records из базы данных Pages в шаблоне темы? можешь изучить классы IPS\Helpers\Table\Content ( или \IPS\Helpers\Table\Db ) \IPS\Content\Item и функцию getItemsWithPermission() вывести например через функцию getItemsWithPermission {{database = \IPS\cms\Databases::load( ID_базыданных ); $recordClass = 'IPS\cms\Records' . ID_базыданных;}} {{foreach $recordClass::getItemsWithPermission( array(), $database->field_sort . ' ' . $database->field_direction, NULL, 'read' ) as $record}} <!-- $record - в этой переменной будут данные записи, например заголовок: --> {$record->_title} {{endforeach}} без нужных знаний сделать то что ты описал будет сложно
23 июня, 20231 yr Author comment_194116 Exception Да, без знаний PHP это будет сложно. Что ж, спасибо. Попробую пока через блоки. Если не получу вменяемого результата, то придется копать глубже.
23 июня, 20231 yr Author comment_194118 5 часов назад, Exception сказал: IPS\Helpers\Table\Content ( или \IPS\Helpers\Table\Db ) \IPS\Content\Item и функцию getItemsWithPermission() Где найти информацию по этим классам и методам? Я даже на офф. сайте не могу найти.
23 июня, 20231 yr comment_194119 49 минут назад, edmsl сказал: Где найти информацию по этим классам и методам? Я даже на офф. сайте не могу найти. В файлах движка конкретной версии ips и php (так как с разными версиями функции модифицируются) IPS\Helpers\Table\Content ( или \IPS\Helpers\Table\Db ) -> корень/system/Helpers/Table Content.php и Db.php IPS\Content\Item -> корень/system/Content Item.php
23 июня, 20231 yr comment_194120 edmsl вы же создали БД для категорий (сборок),создайте еще БД для страниц с багами.
23 июня, 20231 yr Author comment_194121 55 минут назад, AHristich сказал: создайте еще БД для страниц с багами. Так уже создал базу данных с багами. Категории БД это сборки, к которым относятся баги, а записи - сами баги.
23 июня, 20231 yr comment_194127 51 минуту назад, edmsl сказал: Так уже создал базу данных с багами. Категории БД это сборки, к которым относятся баги, а записи - сами баги. Я про две БД: Сборки и Баги. Основная я так понимаю Сборки.Сделайте доп.поле в форме создания новой записи с пометкой Связать с БД (Баги) . К сожалению,я сейчас на даче живу и сервера нет с собой,чтобы лучше объяснить,но рассказал как смог.
23 июня, 20231 yr Author comment_194129 AHristich Да, я понял. пробовал это, но привязывать можно только конкретные записи (баги), а не всю категорию. А так да, было бы идеально. Edited 23 июня, 20231 yr by edmsl
23 июня, 20231 yr comment_194130 23 минуты назад, edmsl сказал: AHristich Да, я понял. пробовал это, но привязывать можно только конкретные записи (баги), а не всю категорию. А так да, было бы идеально. ну я так понимаю что какой-то баг принадлежит какой-то сборке и при создании новой записи с новым багом вы (согласно полю связать с БД) размещаете запись с этим багом привязав его к какой-то сборке. И попробуйте,как вариант, доп.поле создать не в БД Сборки а в Багах.
23 июня, 20231 yr Author comment_194131 AHristich Хм. Кстати да, об этом я как-то не подумал. Надо попробовать.
23 июня, 20231 yr Author comment_194136 В общем, вся эта идея со связью баз хороша, но реализация этой связи не удобна. Пользователю придется начать набирать текст названия сборки в текстовое поле, чтобы подходящий вариант появился в списке и его можно было бы выбрать. Причем само поле связи с БД - это просто текстовое поле, в которое вообще не понятно, что надо вводить. Так что нет, не катит, надо, чтобы было что-то вроде выпадающего списка. Как вариант, можно сделать это поле невидимым, а значение подставлять через JS, взяв нужный ID сборки из ссылки например. Но это все дикие костыли, конечно. И не ясно, куда прописать JS код. Хотя JS код можно попробовать впихнуть в шаблон формы создания записи, создав новый. Надо попробовать. Edited 23 июня, 20231 yr by edmsl
23 июня, 20231 yr comment_194143 11 часов назад, edmsl сказал: В общем, вся эта идея со связью баз хороша, но реализация этой связи не удобна. Пользователю придется начать набирать текст названия сборки в текстовое поле, чтобы подходящий вариант появился в списке и его можно было бы выбрать. Причем само поле связи с БД - это просто текстовое поле, в которое вообще не понятно, что надо вводить. Так что нет, не катит, надо, чтобы было что-то вроде выпадающего списка. Как вариант, можно сделать это поле невидимым, а значение подставлять через JS, взяв нужный ID сборки из ссылки например. Но это все дикие костыли, конечно. И не ясно, куда прописать JS код. Хотя JS код можно попробовать впихнуть в шаблон формы создания записи, создав новый. Надо попробовать. Вот сделано с помощью связи баз данных. Есть оружка, есть к ней модули и патрошки. Все это отдельные базы данных и все идеально выводится как писал комментатор выше (который на даче)
24 июня, 20231 yr comment_194145 5 часов назад, andros0789 сказал: ...комментатор выше (который на даче)... 😭 😭 ,а я .наивный,думал у меня хотя бы ник есть...
24 июня, 20231 yr Author comment_194162 andros0789 Проблема не в том, что данные не выводятся, а в том, что при создании записи поле связи с БД это просто текстовое поле и то, как его правильно заполнять, для рядового пользователя совершенно неочевидно. Edited 24 июня, 20231 yr by edmsl
24 июня, 20231 yr comment_194167 5 часов назад, edmsl сказал: andros0789 Проблема не в том, что данные не выводятся, а в том, что при создании записи поле связи с БД это просто текстовое поле и то, как его правильно заполнять, для рядового пользователя совершенно неочевидно. Нельзя описание для поля добавить?
25 июня, 20231 yr Author comment_194173 Exception Можно. Но все же знают, как это описание читают пользователи. Когда у нас на сайте были проблемы с регистрацией через почту Гугла, я большими буквами в отдельном блоке на странице регистрации написал,что пожалуйста, не регайтесь с помощью гугл почты. Но все равно находились те, кто шел против системы, и их было достаточно много, 2-3 на 10 человек. Так что нет, добавить описание это не выход, нужен только очевидный выбор.
26 июня, 20231 yr Author comment_194224 Можно ли в шаблоне получить строку ссылки? Или параметры, передаваемые по ссылке? Суть в чем. Баги это своя база, а сборки - своя. Как я говорил, связывать вручную неудобно. Надо подставлять значение в поле сразу, на основе id сборки. Например, есть ссылка https://site.ru/bugs.html/?do=form&d=6&game=4, где game=4 - это id сборки в базе. Вот есть ли возможность получить этот id в шаблоне?
26 июня, 20231 yr comment_194235 53 минуты назад, edmsl сказал: Можно ли в шаблоне получить строку ссылки? Или параметры, передаваемые по ссылке? Суть в чем. Баги это своя база, а сборки - своя. Как я говорил, связывать вручную неудобно. Надо подставлять значение в поле сразу, на основе id сборки. Например, есть ссылка https://site.ru/bugs.html/?do=form&d=6&game=4, где game=4 - это id сборки в базе. Вот есть ли возможность получить этот id в шаблоне? \IPS\Request::i()->url() \IPS\Request::i()->game
27 июня, 20231 yr Author comment_194253 Есть блок {block="block_id"} Шаблон для него я сделал и прописал переменные так: Переменные: $records, $title, $orientation='vertical', $some=0 Возможно ли как-то передать параметр $some в кастомный блок? {block="block_id" params="123"} не работает.
27 июня, 20231 yr Author comment_194254 И можно ли как-то получить категорию, в которую загружен файл, который для файла из Downloads? Что-то типа $file->category. Edited 27 июня, 20231 yr by edmsl
29 июня, 20231 yr Author comment_194294 Возможно ли как-то в шаблоне получить информацию о конкретном файле в Downloads? Нужно сделать селектор выбора версии файла при размещении бага. Для этого версии надо брать из файла. Edited 29 июня, 20231 yr by edmsl
29 июня, 20231 yr Author comment_194298 И еще. Есть кастомное поле с типом связи с БД. Вот как мне получить id той записи, которая указана в значении поля? Если применить собственно форматирование к этому полю, то нужное мне значение находится в {$formValue}. Вот его мне и нужно достать в шаблоне. Нужно что-то вроде этого, но именно так не работает: {$record->customFieldDisplayByKey('game_name')->$formValue} Edited 29 июня, 20231 yr by edmsl
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.