I try to display a message, if it is 11 oclock.
This is what I've tried:
temp.contentHome.20 {
wrap = <div class="clearfix heading_wrapper">|</div>
10.stdWrap.wrap = <div class="col-xs-12 col-sm-4 col-md-2 image-left">|</div>
20.wrap = <div class="col-xs-12 col-sm-8 col-md-7 text-center">|</div>
30 = TEXT
30.value = <p>default</p>
30.stdWrap.wrap = <div style="margin-top: 1em" class="col-xs-12 col-sm-12 col-md-3 text-right">|</div>
}
[hour = 11]
temp.contentHome.20.30.value = <p>Success! It is 11 o'clock</p>
[ELSE]
temp.contentHome.20.30.value = <p>It is not 11 o'clock!</p>
[END]
However, the output is always It is not 11 o'clock!, even though it is 11 oclock like date proves.
Why is the condition not working?
On the first look it seems to be correct.
Try to add the current time to the COA:
temp.contentHome.20.40 = TEXT
temp.contentHome.20.40 {
data = date:U
strftime = %H:%M
}
Maybe your server time doesn't match your localtime. Please Check the timezone settings in the install tool ([SYS][phpTimeZone]).
Also it is possible that the caching is not refreshed so the condition is not checked.
To the end: Have you an COA or COA_INT on temp.contentHome.20?
Related
I implemented tx_news title in breadcrumb always like shown here with typoscript: How to set breadcrumb for tx_news TYPO3 and it works fine but for now i need to get an link on the news title which points to itself. This is needed for structurel data correctness (https://schema.org/). See structurel data testing tools on any news single view for that issue. I didn't get that to work and don't find any hints online beside the above one.
Is that possible in any way?
What about
lib.url = TEXT
lib.url.data = getIndpEnv:TYPO3_REQUEST_URL
Thanks for the hint. This did the job for me:
[globalVar = GP:tx_news_pi1|news > 0]
lib.menu.breadcrumb.20 = COA
lib.menu.breadcrumb.20 {
wrap = <li itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem" class="active"> | <meta itemprop="position" content="2" /></li>
10 = TEXT
10.wrap = <a href="|" target="_top" itemprop="item">
10.data = getIndpEnv:TYPO3_REQUEST_URL
20 = RECORDS
20 {
dontCheckPid = 1
tables = tx_news_domain_model_news
source.data = GP:tx_news_pi1|news
source.intval = 1
conf.tx_news_domain_model_news = TEXT
conf.tx_news_domain_model_news.field = title
conf.tx_news_domain_model_news.htmlSpecialChars = 1
wrap = <span itemprop="name">|</span>
}
30 = TEXT
30.value = </a>
}
[end]
I have to make a backend and a frontend-layout with grid-elements. To clarify it a bit: I have 10 containers, 5x2
It looks in the backend like this:
con 1_1 | con 2_1 | con 3_1 | con 4_1 | con 5_1
con 1_2 | con 2_2 | con 3_2 | con 4_2 | con 5_2
(con stands for container)
There might be smarter ways to realize this, maybei with just "text with image"-content elements, but in this case this was the requirement.
Now the problematic part. I need to wrap each container differently. My expected output is something like this:
<div class="left w-clearfix">
<div class="organe_50_stapel_logo">
IMAGE // works
</div>
<div class="organe_50_stapel_text">
TEXT // works
</div>
</div>
(2nd - 4th container would be wrapped in "middle" and the 5th container in "right).
Now for my setup, I get the fields wrapped (marked with // works), however, I'm stuck wrapping certain fields which belong together.
Here is my setup:
21 < lib.gridelements.defaultGridSetup
21 {
columns {
11 < .default
11.wrap = <div class="organe_50_stapel_logo">|</div>
12 < .default
12.wrap = <div class="organe_50_stapel_logo">|</div>
13 < .default
13.wrap = <div class="organe_50_stapel_logo">|</div>
14 < .default
14.wrap = <div class="organe_50_stapel_logo">|</div>
15 < .default
15.wrap = <div class="organe_50_stapel_logo">|</div>
21 < .default
21.wrap = <div class="organe_50_stapel_text">|</div>
22 < .default
22.wrap = <div class="organe_50_stapel_text">|</div>
23 < .default
23.wrap = <div class="organe_50_stapel_text">|</div>
24 < .default
24.wrap = <div class="organe_50_stapel_text">|</div>
25 < .default
25.wrap = <div class="organe_50_stapel_text">|</div>
}
}
11 + 21 belongs in the container "left"
12,13,14,22,23,24 in the container "middle"
15,25 in the container "right"
You should go for another approach in this case and get rid of the individual wraps for the columns in favor of an overall cObject making use of the so called "virtual fields" of Gridelements.
These fields get filled with content during the rendering process and then made available via cObj->data, thus accessiable via TypoScript field, data, insertData and dataWrap as well as variables within a FLUIDTEMPLATE.
21 < lib.gridelements.defaultGridSetup
21 {
cObject = TEXT
cObject {
dataWrap (
<div class="left w-clearfix">
<div class="organe_50_stapel_logo">{field:tx_gridelements_view_column_11}</div>
<div class="organe_50_stapel_text">{field:tx_gridelements_view_column_21}</div>
</div>
<div class="middle">
<div class="organe_50_stapel_logo">{field:tx_gridelements_view_column_12}</div>
<div class="organe_50_stapel_text">{field:tx_gridelements_view_column_22}</div>
</div>
<div class="middle">
<div class="organe_50_stapel_logo">{field:tx_gridelements_view_column_13}</div>
<div class="organe_50_stapel_text">{field:tx_gridelements_view_column_23}</div>
</div>
<div class="middle">
<div class="organe_50_stapel_logo">{field:tx_gridelements_view_column_14}</div>
<div class="organe_50_stapel_text">{field:tx_gridelements_view_column_24}</div>
</div>
<div class="right">
<div class="organe_50_stapel_logo">{field:tx_gridelements_view_column_15}</div>
<div class="organe_50_stapel_text">{field:tx_gridelements_view_column_25}</div>
</div>
)
}
}
This is working for flexform_fieldname, parentgrid_fieldname, tx_gridelements_view_column_123 and tx_gridelements_view_child_123. Additionally there are tx_gridelements_view_children and tx_gridelements_view_columns, but these contain arrays for the FLUIDTEMPLATE people, since TypoScript can't deal with arrays.
The fields are called "virtual" because they don't exist in the database, but will be filled into cObj->data during the rendering process. Still you can do anything with them that can be done with real fields, except writing them back to the database.
See https://docs.typo3.org/typo3cms/extensions/gridelements/Chapters/Typoscript/Reference/Index.html for the TypoScript Reference describing those fields.
I have got similar error in gridelement by rending using typoscript.
I have used exact TypoScript which you used !
Please add this line in your template > setup at last
tt_content.gridelements_pi1.20 = COA
My problem solved by adding this line , I hope it will help you !
EXT : gridelements 8.0.0-dev
TYPO3 : 8.7.8
Thanks :)
in my TYPO3 7.5 project I have created some custom page types by registering them in ext_tables.php as described further here
I can select those page types in the backend, no errors, all good. Also checking for a certain page-type via statements in the frontend works fine.
Now I want to create a menu of those (sub-)page trees. The TypoScript solution looks like this and works fine:
lib.tourTeasers = HMENU
lib.tourTeasers {
special = directory
wrap = <section class="row">|</section>
1 = TMENU
1 {
wrap = <div class="col-sm-12">|</div>
expAll = 1
NO {
doNotLinkIt = 1
linkWrap = <h2 style="text-align:right">Kategorie: |</h2>
}
}
2 = TMENU
2{
expAll = 1
NO{
doNotLinkIt = 1
linkWrap = <h3>Tourtyp: |</h3>
}
}
3 = TMENU
3{
NO{
doNotLinkIt = 1
linkWrap = <h4>|</h4>
after.cObject = COA
after.cObject {
stdWrap.dataWrap = <div class="row teaser">|</div>
10 = FILES
10 {
references {
table = pages
fieldName = media
}
renderObj=IMAGE
renderObj{
file{
width=300c
height=150c
#maxW=257c
#maxH=150c
import.data= file:current:publicUrl
}
altText.data = file:current:title
#altText.field=abstract
#titleText.field=nav_title
#stdWrap.dataWrap = |</a>
stdWrap.dataWrap(
<a href="index.php?id={field:uid}" title="Tour {field:title} ansehen">
<div class="col-sm-4 teaser__image">|</div>
</a>
)
params = class="img-responsive"
}
}
30 = TEXT
30.field = abstract // bodytext
30.crop = 250
30.wrap = <div class="col-sm-8 teaser__description"><p>|</p>
40 = TEXT
40.value = Ansehen
40.typolink.parameter.field = uid
40.typolink.ATagParams = class="btn"
40.wrap = <div class="button teaser__cta">|</div></div>
}
}
}
}
My problem is:
If I use the very Fluid Viewhelper that is intended to render exacly the same
<v:page.menu.directory pages="{page_uid}" as="tours" expandAll="true">
<f:for each="{tours}" as="tour">
<div class="row">
<div class="col-sm-3">
<v:page.resources.fal table="pages" field="media" uid="{tour.uid}" as="images">
<f:for each="{images}" as="image">
<f:image src="{image.url}" alt="{image.alternative} {image.name}" title="{image.title}" class="img-responsive"/>
</f:for>
</v:page.resources.fal>
</div>
<div class="col-sm-9">
<h3>{tour.title}</h3>
{tour.abstract}
</div>
</div>
</f:for>
</v:page.menu.directory>
{page_uid} being the parent page, nothing is displayed.
If I change some of the sub-pages' doktype back to "default" they are displayed in the rendered menu.
any idea as to why this is? Am i missing a certain argument in the viewhelper? i also tried to set the allowed doktypes in the viewhelper but that doesn't change anything.
thanks for the reponses, indeed it had to do with the doktype, is I didn't include the "new" ones for both the parent pages AND their sub-pages. Works now, solved. Fluid really rocks
I am trying to get a wrapper element around an image including its caption in the single view in tt_news for Typo3 6.1. How would I do that?
So far I only figured out how to do that for either all images
plugin.tt_news.displaySingle.imageWrapIfAny = ...
or the caption itself
plugin.tt_news.displaySingle.caption_stdWrap.dataWrap = ...
. But I have no clue how to create a wrapper for each single image including its caption...
Thanks in advance!
I know this is quite old, but as a follow-up that works in TYPO3 6.x you can use:
displaySingle.image.wrap = <div class="news-img">|
displaySingle.caption_stdWrap >
displaySingle.caption_stdWrap.wrap = <p class="news-single-imgcaption">|</p></div>
So each image and caption gets wrapped by <div class="news-img">...</div>
The following HTML will be provided by the below TS:
<div class="newsImage">
<div class="imageHolder">
<img />
</div>
<div class="captionHolder">
Caption
</div>
</div>
TypoScript:
displaySingle {
imageWrapIfAny = <div class="newsImage">|</div>
image {
file.maxW >
file.maxH >
file.width = 220
stdWrap.wrap = <div class="imageHolder">|</div>
altText.field = imagealttext
}
caption_stdWrap >
caption_stdWrap.wrap = <div class="captionHolder">|</div>
}
I dont come forth. I want to wrap each given PID in its own unique wrap.
Here my code:
menutab.list = HMENU
menutab.list.special = directory
menutab.list.special.value = 7,8,9,10,11,12,13
menutab.list.1 = TMENU
menutab.list.1.wrap = <div>|</div>
...
So thats working fine. I get every submenu of given PIDs but now i'm searching for something like that:
menutab.list.special.value.wrap = <div id="current PID!"> | </div>
I hope someone understand my issue.
Big thanks!!
It depends which field you would like to display, but basically any field from the page record can be displayed into the output.
menutab.list = HMENU
menutab.list {
special = directory
special.value = 7,8,9,10,11,12,13
1 = TMENU
1 {
# stdWrap2 wraps the whole item, including the link
NO.stdWrap2.dataWrap = <div id="p{field:uid}">|</div>
}
}
This will give the following output:
<div id="p26">Test 0</div>
<div id="p27">Test 1</div>
<div id="p30">Test 2</div>
<div id="p31">Test 3</div>
<div id="p35">Test 4</div>
<div id="p36">Test 5</div>
<div id="p37">Test 6</div>
For more options, please take a look at the TSref and the stdWrap functions.
TSref
http://typo3.org/documentation/document-library/references/doc_core_tsref/4.4.0/view/toc/0/
stdWrap
http://typo3.org/documentation/document-library/references/doc_core_tsref/4.4.0/view/1/5/#id2618234
I think the easiest is to do something like that, not sure of the syntax... :
menutab.list.1 = HMENU
menutab.list.1 {
special = directory
special.value = 7
1 = TMENU
1.wrap = <div id="7"> | </div>
}
menutab.list.2 < menutab.list.1
menutab.list.2.special.value = 8
menutab.list.2.1.wrap = <div id="8"> | </div>
...
Not the best solution, but can work