Форум больше не используется. Присоединяйтесь к каналу #community-ru в Slack for TYPO3 community |
|
19.06.2009, 19:09 | #1 |
Новенький
Регистрация: 19.06.2009
Сообщений: 15
|
Строка картинок, перемешанных в случайном порядке?
Изучаю Typo3, делаю тестовый сайт. Стоит задача: на всех страницах выдать в строку (или однострочную таблицу) 5 маленьких картинок в случайном порядке из десятка имеющихся, при нажатии стандартно показать большую картинку в окне.
После долгих разбирательств сумел заставить Typo3 (4.2.0) выдавать все картинки, указанные как контент типа image на отдельной (вне меню) странице. Но - как заставить выдать не всё, а только 5 из всех 10-15 имеющихся в случайном порядке? Полный затык! Уже 3 дня топчусь на месте. Помогите, плиз! Хотел туда присобачить свой скрипт на PHP (взятый из другого, не-typo3 проекта), чтобы уже готовую таблицу с линками расщепить на элементы и выдать 5 случайных из них обратно... так не смог понять куда его воткнуть чтобы получить уже построенную таблицу в $this->getCurrentVal() из примера. Закомментированный вариант не работает. Может я вообще чешу правое ухо левой рукой, и где-то есть готовое решение или похожий пример? Как вообще влезть внутрь tt_content.image.20, и надо ли туда влезать? Может PHP_SCRIPT_EXT поможет? Вот часть Setup: PHP код:
PHP код:
Последний раз редактировалось dimal; 19.06.2009 в 19:22 |
19.06.2009, 19:42 | #2 |
Senior Member
|
По-моему будет достаточно средств TYPO3 и MySQL.
В свою выборку картинок добавте: Код:
select { // id of page with images = 17 pidInList = 17 // Добавить: orderBy = RAND() max = 5 } |
19.06.2009, 20:10 | #3 |
Новенький
Регистрация: 19.06.2009
Сообщений: 15
|
Спасибо, попробую... но разве orderBy - это не название поля? Туда можно всё что угодно писать?
И потом, со своим скриптом тоже хочется разобраться - почему он ничего не получает на вход? Или входом является не getCurrentVal() а что-то другое? P.S. Влепил, попробовал... ноль внимамания, фунт презрения. Даже на max не прореагировало. Может закешировалось? Но я почистил кеш, да и стоит COA_INT. Сменил pidInList на фальшивый - картинки пропали, вернул - снова вижу десяток в стандартном порядке... Как можно отдебаггить сам запрос в базу, чтобы проверить SQL? На сегоня хватит, уже голова не варит; завтра для разнообразия почитаю доки не по Typo3, а по SQL. В любом случае спасибо за наводку. P.P.S. Идиотизм. Включил админ-панель, там стоит правильный SQL и Non-cached objects/Include /10 CONTENT 705 5 +79 =84 NUMROWS: 1 [STRIKE]со вроде правильными 5 элементами...[/STRIKE] а следом ...-cached objects/Include /10/renderObj USER 928 79 в котором и лежит прежняя десятка. И чистка кеша Clear All Cache не помогает. Фтопку этот Typo3 вместе с сервером!!! Последний раз редактировалось dimal; 20.06.2009 в 02:39 Причина: ошибка |
19.06.2009, 20:47 | #4 | |
Senior Member
|
Цитата:
|
|
20.06.2009, 02:24 | #5 |
Новенький
Регистрация: 19.06.2009
Сообщений: 15
|
Чё-то я перенервничал, даже не выдержал и из дома посмотрел...
да, похоже RAND() не туда надо ставить, поскольку у меня на 17й странице не 10 элементов контента, а один с 10 рисунками. Но тогда куда же RAND() вставлять?! В "renderObj < tt_content.image.20" ? Но я и так там 2 дня из 3х возился... где в "tt_content.image.20" находится select?! Попробовать самому собрать "renderObj = IMGTEXT" с параметрами? Но в описании TSref для IMGTEXT тоже нет select! Единственно похожее поле "imgList.field = image", но где там место для "orderBy = RAND()"? Между прочим, предусмотренный для IMGTEXT "renderObj.imgMax=5" сработал, а вот наобум вставленное "renderObj.imgList.orderBy = RAND()" не помогло. В общем, отдохну до понедельника, может что придёт в голову новое... Последний раз редактировалось dimal; 20.06.2009 в 03:00 |
20.06.2009, 11:35 | #6 |
Senior Member
Регистрация: 01.07.2008
Сообщений: 392
|
orderBy ставится в select. как понятно из названия, select - это sql запрос.
смотреть где то в районе CONTENT надо, а не IMGTEXT. |