Russian TYPO3 community Форум больше не используется. Присоединяйтесь к каналу #community-ru в Slack for TYPO3 community  

Вернуться   Russian TYPO3 community > Тематические форумы > TypoScript практикум

Ответ
 
Опции темы Опции просмотра
Старый 19.06.2009, 19:42   #1
Pavel Antonov
Senior Member
 
Аватар для Pavel Antonov
 
Регистрация: 01.10.2004
Адрес: Россия, Москва
Сообщений: 1,204
Отправить сообщение для Pavel Antonov с помощью ICQ
По умолчанию

По-моему будет достаточно средств TYPO3 и MySQL.

В свою выборку картинок добавте:
Код:
          select { 
// id of page with images = 17 
            pidInList = 17   

// Добавить:
            orderBy = RAND()
            max = 5
          } 
__________________
Павел Антонов
Rich Media Development Ltd.
Блог: http://codeline.richmd.ru/
Pavel Antonov вне форума   Ответить с цитированием
Старый 19.06.2009, 20:10   #2
dimal
Новенький
 
Регистрация: 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 Причина: ошибка
dimal вне форума   Ответить с цитированием
Старый 19.06.2009, 20:47   #3
Pavel Antonov
Senior Member
 
Аватар для Pavel Antonov
 
Регистрация: 01.10.2004
Адрес: Россия, Москва
Сообщений: 1,204
Отправить сообщение для Pavel Antonov с помощью ICQ
По умолчанию

Цитата:
Сообщение от dimal Посмотреть сообщение
Спасибо, попробую... но разве orderBy - это не название поля? Туда можно всё что угодно писать?

И потом, со своим скриптом тоже хочется разобраться - почему он ничего не получает на вход? Или входом является не getCurrentVal() а что-то другое?

P.S. Влепил, попробовал... ноль внимамания, фунт презрения. Даже на max не прореагировало. Может закешировалось? Но я почистил кеш, да и стоит COA_INT. Сменил pidInList на фальшивый - картинки пропали, вернул - снова вижу десяток в стандартном порядке... Как можно отдебаггить сам запрос в базу, чтобы проверить SQL?
На сегоня хватит, уже голова не варит; завтра для разнообразия почитаю доки не по Typo3, а по SQL. В любом случае спасибо за наводку.
Должно работать, TYPO3 вроде подставляет в запрос как есть... Почему не работает max - совсем не понятно. Может не туда поставили код?
__________________
Павел Антонов
Rich Media Development Ltd.
Блог: http://codeline.richmd.ru/
Pavel Antonov вне форума   Ответить с цитированием
Старый 20.06.2009, 02:24   #4
dimal
Новенький
 
Регистрация: 19.06.2009
Сообщений: 15
Unhappy

Чё-то я перенервничал, даже не выдержал и из дома посмотрел...
да, похоже 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
dimal вне форума   Ответить с цитированием
Старый 20.06.2009, 11:35   #5
Lucifer
Senior Member
 
Аватар для Lucifer
 
Регистрация: 01.07.2008
Сообщений: 392
По умолчанию

orderBy ставится в select. как понятно из названия, select - это sql запрос.
смотреть где то в районе CONTENT надо, а не IMGTEXT.
Lucifer вне форума   Ответить с цитированием
Старый 20.06.2009, 15:51   #6
Pavel Antonov
Senior Member
 
Аватар для Pavel Antonov
 
Регистрация: 01.10.2004
Адрес: Россия, Москва
Сообщений: 1,204
Отправить сообщение для Pavel Antonov с помощью ICQ
По умолчанию

Я же вроде дал четко кусок ВАШЕГО кода, куда поставить orderBy...

Вот целиком, тогда:
Код:
    workOnSubpart = DOCUMENT 
    marks { 
      IMAGES = COA_INT 
      IMAGES { 

        10 = CONTENT 
        10 { 
          table = tt_content 
          select { 
            pidInList = 17             
// Добавить:
             orderBy = RAND()
            max = 5
          } 
          renderObj < tt_content.image.20 
          renderObj.maxW = 900 
          renderObj.maxWInText = 900 
          renderObj.spaceBelowAbove = 0 
          renderObj.colSpace = 0 
          renderObj.rowSpace = 0 
          renderObj.borderThick = 0 
          renderObj.textMargin = 0 
          renderObj.renderMethod = table 
//          renderObj.noStyle = 1 
          } 
// end of CONTENT 
// } 
       } 
// end of IMAGES 
// ... 
    } 
// end of marks 
А renderObj отвечает только за вывод одной строки результата, полученного из базы.
__________________
Павел Антонов
Rich Media Development Ltd.
Блог: http://codeline.richmd.ru/
Pavel Antonov вне форума   Ответить с цитированием
Старый 20.06.2009, 17:24   #7
dimal
Новенький
 
Регистрация: 19.06.2009
Сообщений: 15
Exclamation

Цитата:
Сообщение от Pavel Antonov Посмотреть сообщение
Я же вроде дал четко кусок ВАШЕГО кода, куда поставить orderBy...
А я чётко следом написал, что поставил, проверил, и убедился что так не работает!

Правда вначале думал что из-за проблем с кешированием, а затем допетрил, что у меня стоит 1 (прописью: один!) элемент контента, и соответственно он и выводится в единственном числе, независимо от rand и max. А вот внутри этого элемента сидят не одна, а 10 картинок, поскольку они никакими параметрами, кроме имени файла и соответственно изображения, не различаются. У них ни заголовков, ни других тегов вообще никаких нет, и размеры в малом виде должны быть одинаковые, поэтому они спокойно все впихнулись в один-единственный элемент контента! Типа image. Там при вводе картинки BE спокойно допускает мультиввод имён файлов. И они спокойно отображаются все вместе. Но мне же надо только часть и в случайном порядке!

Вот параметр imgMax в renderObj подействовал, ограничил выходную таблицу картинок 5ю первыми в списке. А где этот список строится (где-то внутри tt_content.image.20 ?) и что соответственно надо добавить в renderObj, я пока так и не понял.
Но соль именно в том, что этот renderObj отрабатывает 1 раз, строя при этом все картинки как часть одного элемента, с единственным пустым заголовком и так далее...
Вы сами можете проверить, добавив в любую страницу элемент image и указав в нём не одну картинку, а несколько штук!

В понедельник попробую разбосать вместо 1 элемента с 10 картинками - 10 элементов по 1 картинке, тогда rand и max заработают. Правда редактору менее удобно, вместо простого перечисления файлов (а их может быть до сотни!) каждый раз новый контент-элемент заводить, ну и мне надо будет наверняка и renderObj переделать и с css заново возиться, переставлять стили... да и вообще хотелось бы до конца разобраться, а не просто обойти проблему.

P.S. Забыл уточнить, что на этом сайте у меня стандартный Typo3, без TV.

Последний раз редактировалось dimal; 20.06.2009 в 17:52
dimal вне форума   Ответить с цитированием
Ответ


Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB code is Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 21:41.


Работает на vBulletin® версия 3.8.1.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot

Хостинг и техническая поддержка: TYPO3 Лаборатория