Jump to content

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

Featured Replies

Posted
comment_194081

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

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

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

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

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

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

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

Спойлер

Screenshot_3.thumb.jpg.13bc4d4d35b4169deb24e99f7dc341a4.jpg

Edited by edmsl

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

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

Most Popular Posts

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

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

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

Posted Images

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

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

  • Author
comment_194116

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

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

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

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

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

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

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

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

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

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

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

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

  • Author
comment_194129

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

Edited by edmsl

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

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

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

  • Author
comment_194136

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

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

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

Edited by edmsl

comment_194143
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

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

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

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

  • Author
comment_194162

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

Edited by edmsl

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

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

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

  • Author
comment_194173

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

  • Author
comment_194224

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

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

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

 

  • Author
comment_194253

Есть блок

{block="block_id"}

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

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

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

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

  • Author
comment_194254

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

Edited by edmsl

  • Author
comment_194294

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

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

Edited by edmsl

  • Author
comment_194298

И еще. Есть кастомное поле с типом связи с БД. Вот как мне получить 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.