Перейти к содержанию

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


Рекомендуемые сообщения

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

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

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

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

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

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

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

Спойлер

Screenshot_3.thumb.jpg.13bc4d4d35b4169deb24e99f7dc341a4.jpg

Изменено пользователем edmsl
Ссылка на комментарий
Поделиться на другие сайты

  • Ответов 80
  • Создана
  • Последний ответ

Топ авторов темы

Пожалуй, вопрос можно упростить. Как получить записи $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 Да, я понял. пробовал это, но привязывать можно только конкретные записи (баги), а не всю категорию. А так да, было бы идеально.

Изменено пользователем edmsl
Ссылка на комментарий
Поделиться на другие сайты

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

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

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

Ссылка на комментарий
Поделиться на другие сайты

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

Ссылка на комментарий
Поделиться на другие сайты

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

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

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

Изменено пользователем 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 Проблема не в том, что данные не выводятся, а в том, что при создании записи поле связи с БД это просто текстовое поле и то, как его правильно заполнять, для рядового пользователя совершенно неочевидно.

Изменено пользователем 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.

Изменено пользователем edmsl
Ссылка на комментарий
Поделиться на другие сайты

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

Ссылка на комментарий
Поделиться на другие сайты

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

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

Изменено пользователем edmsl
Ссылка на комментарий
Поделиться на другие сайты

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

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

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

Изменено пользователем edmsl
Ссылка на комментарий
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.
Примечание: Ваш пост будет проверен модератором, прежде чем станет видимым.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...