-
Постов
500 -
Зарегистрирован
-
Посещение
-
Победитель дней
8
Тип контента
Профили
Загрузки
База знаний IPS Community Suite 4
База знаний IP.Board 3.x
Форумы
События
Магазин
Совместные покупки
Сообщения, опубликованные edmsl
-
-
Вся эта морока была бы сведена к минимуму, если бы в блок можно было передать параметры, как в шаблон. что-то вроде:
{block="my_block" params="param1, param2"}
но это не работает.
001 тоже нет, ошибка шаблона.
-
001 Синтаксис тегов или логика HTML имеет некорректный формат.
-
001 Тоже ошибка шаблона.
-
Спойлер
На скрине справа есть блок с фильтрами. Как их вывести так же? Для поля в базе я включил по нему фильтрацию, но ничего не появилось.
{{foreach $records as $record}} <p>{$record->customFieldDisplayByKey('game_name', 'display').formValue}</p> {{endforeach}}
Получаю ошибку шаблона
-
1 минуту назад, Zero108 сказал:
Не совсем понятно, что такое "страница сборки"
Страница сборки это страница файла в Downloads.
2 минуты назад, Zero108 сказал:Может быть можно воспользоваться обычными комментариями
Сейчас для багов используется отдельная тема на форуме для каждой сборки. Что, по сути, то же самое. Проблема в том, что написал один, начали обсуждать. В процессе обсуждения кто-то запостил еще один баг, потом еще и так далее. В итоге потом нужно сидеть и выискивать все записи с багами, что к чему относится и т.д. Это неудобно. Можно сделать так, чтобы на каждый баг создавалась отдельная тема. Это уже ближе и удобнее, но нет той гибкости, что дают БД, в первую очередь фильтры. Да и чисто из спортивного интереса уже хочется доделать начатое.
001 мне не нужно выводить HTML из этого поля. Тип у поля "Связь с базой данных". Там, по сути, хранится id записи, которая была выбрана при заполнении поля при создании новой записи. Если для него выбрать собственно оформление, то нам доступны три переменные: {$label}: {$value}: {$formValue}. Так вот в $formValue находится нужное мне значение.
-
Zero108 Это простой шаблон базы с несколькими полями, которые ни с чем не связаны. Все надо вписывать вручную.
Увы, для моих целей там нет ничего интересного.
-
5 минут назад, 001 сказал:
Может так попробовать.
Пробовал. Не работает, ничего не выводится.
-
Путем проб и ошибок установил, что для того, чтобы получить значение кастомного поля у записи из БД с типом Связь с БД, нужно написать так:
{{foreach $records as $record}} {{foreach $record->customFieldDisplayByKey('game_name','raw') as $key=> $field}} <p>{$key}</p> {{endforeach}} {{endforeach}}
где game_name - Ключ шаблона кастомного поля. А в $key и будет искомое значение. В моем случае это id сборки из БД сборок, для которой нужно получить баги из БД багов.
Получается, что тип поля Связь с БД - это массив с одним единственным ключем. Если попытаться вывести $field:
<p>{$field}</p>, то будет ошибка шаблона.
Но почему тогда не удается получить значение так:
{$record->customFieldDisplayByKey('game_name','raw')[0]}
-
Все бьюсь с кастомными полями.
Есть код:
{{foreach $record->customFieldsForDisplay('listing') as $key => $field}} <p>1.{$key}</p> <p>2.{$field->label}</p> <p>3.{$field->value}</p> {{endforeach}}
Можно ли как-то получить здесь label, formValue и value полей, как это делается при собственном форматировании поля? Или там уже только отформатированный html код и ничего более?
-
Exception Взял кусок кода из метода и вроде как даже работает:
$versionWhere = array( array( "b_fileid=?", \IPS\Request::i()->gamefile ) ); $previousVersions = iterator_to_array( \IPS\Db::i()->select( '*', 'downloads_filebackup', $versionWhere, 'b_backup DESC' )->setKeyField( 'b_id' ) );
Текущая версия: $file->version.
Правда не понятно, почему нельзя все это сразу в объекте файла хранить, чтобы не лепить такие вот конструкции.
-
23 часа назад, Exception сказал:
$file = \IPS\downloads\File::load( FILE_ID );
Увы, но в объекте нет информации о версиях. Есть все другое, но версии даже в шаблон передаются отдельной переменной.
-
Разобрался. Создал новый шаблон JS и привязал к странице с БД багов.
Но это для страницы из Pages. А можно ли что-то подобное для стандартных страниц например для страницы с загрузками или форумов?
-
Для создания новой записи бага я сделал отдельный шаблон формы и привязал его к БД с багами. В этот шаблон я добавил JS код, который мне нужен. Просто в конце добавил тег <script>. Но это не правильно, что js код в середине страницы. Так вот, как мне сделать так, чтобы этот код отрабатывал только на странице с формой создания записи в БД?
Если добавить этот код в шаблон includeJS, он будет отрабатывать везде, что не нужно. Читал, что можно сделать некие контроллеры и добавлять их через атрибут, например, data-controller="core.front.mycontroller". Так вот как создать такой контроллер и привязать его к нужной странице? Или может есть еще способы?
-
И еще. Есть кастомное поле с типом связи с БД. Вот как мне получить id той записи, которая указана в значении поля? Если применить собственно форматирование к этому полю, то нужное мне значение находится в {$formValue}. Вот его мне и нужно достать в шаблоне.
Нужно что-то вроде этого, но именно так не работает:
{$record->customFieldDisplayByKey('game_name')->$formValue}
-
Возможно ли как-то в шаблоне получить информацию о конкретном файле в Downloads?
Нужно сделать селектор выбора версии файла при размещении бага. Для этого версии надо брать из файла.
-
И можно ли как-то получить категорию, в которую загружен файл, который для файла из Downloads? Что-то типа $file->category.
-
Есть блок
{block="block_id"}
Шаблон для него я сделал и прописал переменные так:
Переменные: $records, $title, $orientation='vertical', $some=0
Возможно ли как-то передать параметр $some в кастомный блок?
{block="block_id" params="123"} не работает.
-
Можно ли в шаблоне получить строку ссылки? Или параметры, передаваемые по ссылке?
Суть в чем. Баги это своя база, а сборки - своя. Как я говорил, связывать вручную неудобно. Надо подставлять значение в поле сразу, на основе id сборки. Например, есть ссылка https://site.ru/bugs.html/?do=form&d=6&game=4, где game=4 - это id сборки в базе. Вот есть ли возможность получить этот id в шаблоне?
-
-
Exception Можно. Но все же знают, как это описание читают пользователи. Когда у нас на сайте были проблемы с регистрацией через почту Гугла, я большими буквами в отдельном блоке на странице регистрации написал,что пожалуйста, не регайтесь с помощью гугл почты. Но все равно находились те, кто шел против системы, и их было достаточно много, 2-3 на 10 человек. Так что нет, добавить описание это не выход, нужен только очевидный выбор.
-
andros0789 Проблема не в том, что данные не выводятся, а в том, что при создании записи поле связи с БД это просто текстовое поле и то, как его правильно заполнять, для рядового пользователя совершенно неочевидно.
-
В общем, вся эта идея со связью баз хороша, но реализация этой связи не удобна. Пользователю придется начать набирать текст названия сборки в текстовое поле, чтобы подходящий вариант появился в списке и его можно было бы выбрать. Причем само поле связи с БД - это просто текстовое поле, в которое вообще не понятно, что надо вводить. Так что нет, не катит, надо, чтобы было что-то вроде выпадающего списка.
Как вариант, можно сделать это поле невидимым, а значение подставлять через JS, взяв нужный ID сборки из ссылки например. Но это все дикие костыли, конечно. И не ясно, куда прописать JS код.
Хотя JS код можно попробовать впихнуть в шаблон формы создания записи, создав новый. Надо попробовать.
-
AHristich Хм. Кстати да, об этом я как-то не подумал. Надо попробовать.
-
AHristich Да, я понял. пробовал это, но привязывать можно только конкретные записи (баги), а не всю категорию. А так да, было бы идеально.
Реализация кода блока ленты базы данных
в Техническая поддержка Invision Community
Опубликовано · Изменено пользователем edmsl
Полагаю, что самый лучший и правильный вариант - это уйти от использования блока и подгружать записи из БД напрямую на странице конкретной сборки. Но, как уже мне писали, без нужных знаний это сложно. Видимо, это надолго.