Jump to content

Реализация кода блока ленты базы данных

Featured Replies

Собственно, можно ли как-то реализовать функционал блока (те, что из Pages) без использования этих самых блоков?

Суть в чем. Я хочу реализовать баг-трекер. Есть сборки по играм и для каждой нужен свой баг-трекер. Первым делом решил воспользоваться плагином Downloads Plus. Он встраивает вкладку баг-трекера для каждого файла. Но на 4,7,9 он ожидаемо не работает. Поэтому создал новую базу даннных, создал для каждой сборки категорию, и туда записываю баги. От тем на форуме отказался, так как не удобно и не так гибко.

Для каждой сборки на ее странице нужно отображать свои баги. Для этого сделал блок для нужной категории и вставил в код шаблона. И здесь главное неудобство. Надо для каждой игры-сборки создавать свой блок. А если их 10, то уже десять блоков. А если нужно еще фильтр? На каждый фильтр еще по блоку. Так же, если записей нет, то блок не отображается, даже если после условия {{if !empty( $records ) }} добавить {{else}} c кодом. А хотелось бы об этом явно указать.

Поэтому нужно создать шаблон, который бы доставал данные из базы и выводил их, но без использования блоков. Я думал вставить код шаблона блоков без использования этих самых блоков, но как передать туда записи из БД я не знаю.

Надеюсь, вы меня поняли.

Может кто-то уже пытался нечто подобное реализовать?

Вот что пытаюсь реализовать.

Спойлер

Screenshot_3.thumb.jpg.13bc4d4d35b4169deb24e99f7dc341a4.jpg

Edited by edmsl

Link to comment
https://ipbmafia.ru/topic/25783-realizaciya-koda-bloka-lenty-bazy-dannyh/
Share on other sites
  • Replies 80
  • Created
  • Последний ответ
Expand topic overview

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

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

Most Popular Posts

Exception
Exception

можешь изучить классы IPS\Helpers\Table\Content ( или \IPS\Helpers\Table\Db ) \IPS\Content\Item и функцию getItemsWithPermission() вывести например через функцию getItemsWithPermission {{d

Exception
Exception

В файлах движка конкретной версии ips и php (так как с разными версиями функции модифицируются) IPS\Helpers\Table\Content ( или \IPS\Helpers\Table\Db ) -> корень/system/Helpers/Table Content.p

AHristich
AHristich

ну я так понимаю что какой-то баг принадлежит какой-то сборке и при создании новой записи с новым багом вы (согласно полю связать с БД)  размещаете запись с этим багом привязав его к какой-то сборке.

Posted Images

Expand topic overview

Пожалуй, вопрос можно упростить. Как получить записи $records из базы данных Pages в шаблоне темы?

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

без нужных знаний сделать то что ты описал будет сложно

Exception Да, без знаний PHP это будет сложно. Что ж, спасибо. Попробую пока через блоки. Если не получу вменяемого результата, то придется копать глубже.

5 часов назад, Exception сказал:

IPS\Helpers\Table\Content ( или \IPS\Helpers\Table\Db )
\IPS\Content\Item и функцию getItemsWithPermission()

Где найти информацию по этим классам и методам? Я даже на офф. сайте не могу найти.

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

edmsl вы же создали БД для категорий (сборок),создайте еще БД для страниц с багами.

55 минут назад, AHristich сказал:

создайте еще БД для страниц с багами.

Так уже создал базу данных с багами. Категории БД это сборки, к которым относятся баги, а записи - сами баги.

51 минуту назад, edmsl сказал:

Так уже создал базу данных с багами. Категории БД это сборки, к которым относятся баги, а записи - сами баги.

Я про две БД: Сборки и Баги. Основная я так понимаю Сборки.Сделайте доп.поле в форме создания новой записи с пометкой Связать с БД (Баги) .

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

AHristich Да, я понял. пробовал это, но привязывать можно только конкретные записи (баги), а не всю категорию. А так да, было бы идеально.

Edited by edmsl

23 минуты назад, edmsl сказал:

AHristich Да, я понял. пробовал это, но привязывать можно только конкретные записи (баги), а не всю категорию. А так да, было бы идеально.

ну я так понимаю что какой-то баг принадлежит какой-то сборке и при создании новой записи с новым багом вы (согласно полю связать с БД)  размещаете запись с этим багом привязав его к какой-то сборке. И попробуйте,как вариант, доп.поле создать не в БД Сборки а в Багах.

AHristich Хм. Кстати да, об этом я как-то не подумал. Надо попробовать.

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

Как вариант, можно сделать это поле невидимым, а значение подставлять через JS, взяв нужный ID сборки из ссылки например. Но это все дикие костыли, конечно. И не ясно, куда прописать JS код.

Хотя JS код можно попробовать впихнуть в шаблон формы создания записи, создав новый. Надо попробовать.

Edited by edmsl

11 часов назад, edmsl сказал:

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

Как вариант, можно сделать это поле невидимым, а значение подставлять через JS, взяв нужный ID сборки из ссылки например. Но это все дикие костыли, конечно. И не ясно, куда прописать JS код.

Хотя JS код можно попробовать впихнуть в шаблон формы создания записи, создав новый. Надо попробовать.

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

Все это отдельные базы данных и все идеально выводится как писал комментатор выше (который на даче)

screenshot-zloplay.ru-2023.06.24-02_27_09.png

screenshot-zloplay.ru-2023.06.24-02_27_27.png

screenshot-zloplay.ru-2023.06.24-02_27_48.png

5 часов назад, andros0789 сказал:

...комментатор выше (который на даче)...

😭 😭 ,а я .наивный,думал у меня хотя бы ник есть...

andros0789 Проблема не в том, что данные не выводятся, а в том, что при создании записи поле связи с БД это просто текстовое поле и то, как его правильно заполнять, для рядового пользователя совершенно неочевидно.

Edited by edmsl

5 часов назад, edmsl сказал:

andros0789 Проблема не в том, что данные не выводятся, а в том, что при создании записи поле связи с БД это просто текстовое поле и то, как его правильно заполнять, для рядового пользователя совершенно неочевидно.

Нельзя описание для поля добавить?

Exception Можно. Но все же знают, как это описание читают пользователи. Когда у нас на сайте были проблемы с регистрацией через почту Гугла, я большими буквами в отдельном блоке на странице регистрации написал,что пожалуйста, не регайтесь с помощью гугл почты. Но все равно находились те, кто шел против системы, и их было достаточно много, 2-3 на 10 человек. Так что нет, добавить описание это не выход, нужен только очевидный выбор.

Можно ли в шаблоне получить строку ссылки? Или параметры, передаваемые по ссылке?

Суть в чем. Баги это своя база, а сборки - своя. Как я говорил, связывать вручную неудобно. Надо подставлять значение в поле сразу, на основе id сборки.  Например, есть ссылка https://site.ru/bugs.html/?do=form&d=6&game=4, где game=4 - это id сборки в базе. Вот есть ли возможность получить этот id в шаблоне?

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

 

Есть блок

{block="block_id"}

Шаблон для него я сделал и прописал переменные так:

Переменные: $records, $title, $orientation='vertical', $some=0

Возможно ли как-то передать параметр $some в кастомный блок?

{block="block_id" params="123"} не работает.

И можно ли как-то получить категорию, в которую загружен файл, который для файла из Downloads? Что-то типа $file->category.

Edited by edmsl

$file->container() возвращает объект категории

Возможно ли как-то в шаблоне получить информацию о конкретном файле в Downloads?

Нужно сделать селектор выбора версии файла при размещении бага. Для этого версии надо брать из файла.

Edited by edmsl

И еще. Есть кастомное поле с типом связи с БД. Вот как мне получить id той записи, которая указана в значении поля? Если применить собственно форматирование к этому полю, то нужное мне значение находится в {$formValue}. Вот его мне и нужно достать в шаблоне.

Нужно что-то вроде этого, но именно так не работает:

{$record->customFieldDisplayByKey('game_name')->$formValue}

Edited 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.


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

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

  • No registered users viewing this page.