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

edmsl

Актив
  • Постов

    500
  • Зарегистрирован

  • Посещение

  • Победитель дней

    8

Сообщения, опубликованные edmsl

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

  2. Вся эта морока была бы сведена к минимуму, если бы в блок можно было передать параметры, как в шаблон. что-то вроде:

    {block="my_block" params="param1, param2"}

    но это не работает.

    001 тоже нет, ошибка шаблона.

  3.  

    Спойлер

    1.png.94d9186ff223ac2cb8c752dc20938e1c.p

    На скрине справа есть блок с фильтрами. Как их вывести так же? Для поля в базе я включил по нему фильтрацию, но ничего не появилось.

    001 

    {{foreach $records as $record}}
    	<p>{$record->customFieldDisplayByKey('game_name', 'display').formValue}</p>
    {{endforeach}}

    Получаю ошибку шаблона

  4. 1 минуту назад, Zero108 сказал:

    Не совсем понятно, что такое "страница сборки"

    Страница сборки это страница файла в Downloads.

    2 минуты назад, Zero108 сказал:

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

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

    001 мне не нужно выводить HTML из этого поля. Тип у поля "Связь с базой данных". Там, по сути, хранится id записи, которая была выбрана при заполнении поля при создании новой записи. Если для него выбрать собственно оформление, то нам доступны три переменные: {$label}: {$value}: {$formValue}. Так вот в $formValue находится нужное мне значение.

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

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

     

  6. Все бьюсь с кастомными полями.

    Есть код:

    {{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 код и ничего более?

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

    Правда не понятно, почему нельзя все это сразу в объекте файла хранить, чтобы не лепить такие вот конструкции.

  8. Разобрался. Создал новый шаблон JS и привязал к странице с БД багов.

    Но это для страницы из Pages. А можно ли что-то подобное для стандартных страниц например для страницы с загрузками или форумов?

  9. Для создания новой записи бага я сделал отдельный шаблон формы и привязал его к БД с багами. В этот шаблон я добавил JS код, который мне нужен. Просто в конце добавил тег <script>. Но это не правильно, что js код в середине страницы. Так вот, как мне сделать так, чтобы этот код отрабатывал только на странице с формой создания записи в БД?

    Если добавить этот код в шаблон includeJS, он будет отрабатывать везде, что не нужно. Читал, что можно сделать некие контроллеры и добавлять их через атрибут, например, data-controller="core.front.mycontroller". Так вот как создать такой контроллер и привязать его к нужной странице? Или может есть еще способы?

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

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

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

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

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

  12. Есть блок

    {block="block_id"}

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

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

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

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

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

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

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

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

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

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

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

×
×
  • Создать...