Можно ли написать конкретный запрос в Typoscript

Мой вопрос может показаться тривиальным, извините, если это так! В настоящее время я изучаю typo3 и typoscript. Я хочу создать шаблон с динамическим фоновым изображением. Это изображение хранится в каталоге. Я хотел бы получить имя изображения из таблицы tt_content. Тем не менее, то, как это работает, немного смущает меня, и я не знаю, правильно ли я это понимаю.

Код выглядит так:

20 = CONTENT
20.table = tt_content
20.select{
    where = pid = 79
}
20.headerImagePath = COA
20.headerImagePath {
    10 = TEXT
    10.stdWrap.field = image
    10.stdWrap.wrap = <div class="background-media" style="background-image: url('|'); background-repeat: no-repeat; background-size: cover; background-attachment: fixed; background-position: 50%;" data-start="background-position:50% 50%"
                            data-70-top-bottom="background-position:50% 70%">
                      </div>
}

Я хотел бы сохранить информацию об изображении (часть div в коде) в переменной и поместить ее в мой шаблон. Часть шаблона моего кода выглядит так:

<f:format.raw>{headerimage}</f:format.raw>

или же

<f:cObject typoscriptObjectPath="headerimage" />

Поэтому мой вопрос будет таким: правильно ли я выбираю вещи из базы данных и сохраняю их в переменную, и правильно ли я их называю в шаблоне? Если способ, описанный выше, должен работать, но у меня есть небольшие ошибки, это хорошая практика или я должен делать что-то по-другому?

С уважением

Adi

2 ответа

Решение

Ваш фрагмент не будет работать, потому что ваша структура очень неправильная.

На

20.headerImagePath = COA

вы пытаетесь создать новый массив объектов CONTENT на объекте CONTENT.

20 = CONTENT

Это не будет работать.

Но у объекта CONTENT есть свойство renderObj.

Посмотрите на следующий пример:

UNTESTED

Попробуйте это так:

lib.headerImagePath = CONTENT
lib.headerImagePath {

    # first call the content you need
    table = tt_content
    select {

        # Add your colPos
        # In this example i store my header image in colpos 9
        where = colPos = 9

        # PID from current field or define your own
        # pidInList = 123 
        pidInList.field = uid

        languageField = sys_language_uid
    }

    renderObj = COA
    renderObj {

        # FILES object was introduced in TYPO3 6.x
        10 = FILES
        10 {

            # Set a reference to let the file object know, where we will get the images
            references {
                table = tt_content
                uid.field = uid
                fieldName = image
            }

            # make sure we only get the first image in set
            maxItems = 1

            renderObj = COA
            renderObj {

                # We only need the url and not the complete image. So we need a IMG_RESOURCE and not an IMAGE Object
                10 = IMG_RESOURCE
                10 {

                    stdWrap {
                        wrap = <div class="background-media" style="background-image: url('|'); background-repeat: no-repeat; background-size: cover; background-attachment: fixed; background-position: 50%;" data-start="background-position:50% 50%" data-70-top-bottom="background-position:50% 70%"></div>
                        required = 1
                    }

                    # Import file from current object
                    # and treat the id as a reference (TYPO3 File Abstraction Layer)
                    file {
                        import.data = file:current:uid
                        treatIdAsReference = 1
                    }


                }

            }

        }

    }

}

Также посмотрите на эти примеры:

Здесь они получают изображение заголовка непосредственно из элемента MEDIA в свойствах страницы:

http://wiki.typo3.org/TypoScript_Header_Image

Чтобы получить изображение заголовка в качестве фона, оно работает также в многоязычной работе с опечаткой 6.x

page.cssInline {
10 = FILES
10 { 
    references.data =  levelmedia:-1, slide
    references.listNum = 0
    renderObj = TEXT
    renderObj.data = file:current:publicUrl
    renderObj.wrap (
     .title-1 {
      background-image: url(../|) !important;  
     }
    ) 
 }  
}

спасибо http://www.derhansen.de/2013/02/using-fal-media-in-typo3-60-for-inline.html

Другие вопросы по тегам