Stephan Grass
Stephan Grass

Reputation: 132

Override FILES references.data with fallback

I get the images for a slider via data = level media:-1,slide On a news-single-page I want to use the news-images instead of. So I put the code for this in conditions [globalVar = GP:tx_news_pi1|news > 0] and get the images of the news. All ok. But I want to show the level media, if there is no news-image. How can I do this?

Here’s the TypoScript:

lib.keyVisual = COA
lib.keyVisual {
    10 = FILES
    10 {
        references {
            data = levelmedia:-1,slide
        }

        renderObj = COA
        renderObj.10 = IMAGE
        renderObj.10 {
            file {
                import.data = file:current:uid
                treatIdAsReference = 1
                width = {$keyVisualWidth}
                #width.field >
                height = {$keyVisualHeight}

            }
        }

        renderObj.20 = COA
        renderObj.20 {
            1 = TEXT
            1 {
                data = file:current:title
                required = 1
                wrap = <h3>|</h3>
            }
            2 = TEXT
            2 {
                data = file:current:description
                required = 1
                wrap = <p>|</p>
            }
            stdWrap.wrap = <div class="imageCaptionBox">|</div>
            stdWrap.required = 1
        }

        renderObj.wrap = <li>|</li>
    }
    wrap = <section id="keyvisual" class="keyvisual fullWidth"><ul class="slider nav">|</ul></section>
}
[globalVar = GP:tx_news_pi1|news > 0]
    lib.keyVisual {
        10 {
            references {
                data >
                table = tx_news_domain_model_news
                uid.data = GP:tx_news_pi1|news
                fieldName = fal_media
            }

            # only images with showinpreview
            renderObj.if {
                value = 1
                equals.data = file:current:showinpreview
            }
        }
    }
[global]

Upvotes: 2

Views: 707

Answers (2)

Ren&#233; Pflamm
Ren&#233; Pflamm

Reputation: 3354

Work with the ifEmpty stdWrap option.

If your COA is empty you can render the default image with this option.

simple example to explain:

[globalVar = GP:tx_news_pi1|news > 0]
  lib.keyVisual {
    stdWrap.ifEmpty.cObject < .10

    #overrides for news picture
    10 {
      ...
    }
  }
[global]

Upvotes: 1

Bernd Wilke πφ
Bernd Wilke πφ

Reputation: 10800

all conditions have an [else] so you do not need to redefine.

[globalVar = GP:tx_news_pi1|news > 0]
lib.keyVisual {
     ... from news...
}
[else]
lib.keyVisual {
    ... from levelmedia ...
}
[global]

then you need to distinguish wether an image is availabel for the news.

[globalVar = GP:tx_news_pi1|news > 0]
lib.keyVisual = COA
lib.keyVisual {
     10 = CONTENT
     10 {
        // get news record and then get file
        ... from news...
        if.empty.field = media
     }
     20 = FILES
     20 {
        ... from levelmedia ...
        if {
           empty.field = media
           negate = 1
        }
     }
}
[else]
lib.keyVisual {
    ... from levelmedia ...
}
[global]

that could be optimized by using a temp object for the levelmedia usage which gets copied.

temp.levelmediaImage {
    ...
}
[globalVar = GP:tx_news_pi1|news > 0]
kib.keyVisual = COA
lib.keyVisual {
     10 = CONTENT
     10 {
        // get news record and then get file
        ... from news...
        if.empty.field = media
     }
     20 < temp.levelmediaImage
     20 {
        if {
           empty.field = media
           negate = 1
        }
     }
}
[else]
lib.keyVisual < temp.levelmediaImage
[global]

Upvotes: 1

Related Questions