Typo3 tt_news add Parameter to URL - typo3

how can i read out the current id from tt_news and add this as a parameter to the url
a small review of my TYPOSCRIPT
2 = TMENU
2 {
wrap = <ul class="naviMainLevel2"> | </ul>
NO {
wrapItemAndSub = <li> | </li>
}
ACT = 1
ACT {
wrapItemAndSub = <li class="active"> | </li>
#get current tt_news id add it to the menu
additionalParams.data = GP:tx_ttnews|tt_news
additionalParams.intval = 1
additionalParams.wrap = &tx_events_pi1[newsUid]=|
#returns only &tx_events_pi1[newsUid]=0
#maybe is it possible with RECORDS tt_news.mbl_newsevent, to get the id?
}
CUR = 1
CUR < .ACT
}
url should then look like this: www.example.com/news/news-tech?&tx_events_pi1[newsUid]=55
Updated:
i think this is a problem with the extension mbl_newsevent it shows only news with an registration option and a button with the current tt_news id...generated with this TS:
plugin.tt_news.mbl_newsevent {
registrationLink_typolink {
title.data = LLL:EXT:mbl_newsevent/locallang.xml:registerLinkLabel
parameter = {$powermail.plugin.pid}
parameter.override.field = tx_mblnewsevent_regurl
additionalParams.field = uid
additionalParams.intval = 1
additionalParams.wrap = &tx_powermail_pi1[eventUid]=|
#this returns the correct tt_news id for the button
}
}
i need the same way for my url....

If I understood correctly, you need to correct your code in a following way:
2 = TMENU
2 {
wrap = <ul class="naviMainLevel2"> | </ul>
NO {
wrapItemAndSub = <li> | </li>
}
ACT = 1
ACT {
wrapItemAndSub = <li class="active"> | </li>
#parameter.override.field = tt_news_id ||uid
# ^ you don't need this line, becasue you still need
# the current page id in url and it shouldn't be overriden
# by some other param
# next you need to get current tt_news uid from GET
# as you mentioned in your comment
additionalParams.data = GP:tx_ttnews|tt_news
additionalParams.intval = 1
additionalParams.wrap = &tx_events_pi1[newsUid]=|
}
CUR = 1
CUR < .ACT
}

Related

HMENU Browse - show linkWrap even if ATagTitle is empty (TYPO3 8.7.x)

I use the following Typoscript for a special menu. Of course there is no linkWrap right now if ATagTitle.dataWrap is empty. What is the best way to have as content of the ATagTitle.dataWrap if {field:title} is empty so that the linkWrap is used?
[treeLevel = 3,4,5]
lib.navHorizon = COA
lib.navHorizon {
stdWrap.wrap = <nav class="row nav_horizontal">|</nav>
10 = HMENU
10 {
special = browse
special {
items = prev
}
1 = TMENU
1.noBlur = 1
1.NO {
ATagTitle.dataWrap = {field:title}
linkWrap = <div class="d-none d-md-block col-4 nav_prev"><i class="fa fa-angle-double-left"></i> |</div>
}
}
25 = HMENU
25 {
special = browse
special {
items = up
}
1 = TMENU
1.noBlur = 1
1.NO {
ATagTitle.dataWrap = {field:title}
linkWrap = <div class="d-none d-md-block col-4 nav_up">|</div>
}
}
20 = HMENU
20 {
special = browse
special {
items = next
}
1 = TMENU
1.noBlur = 1
1.NO {
ATagTitle.dataWrap = {field:title}
linkWrap = <div class="d-none d-md-block col-4 order-3 nav_next">| <i class="fa fa-angle-double-right"></i></div>
}
}
}
[global]
Extended explanation:
I have a row with three columns. If the first column containing the link to the previous page is empty, the HTML for the column is also missing, so the layout is no longer correct.
From your additional information I understand the problem is not that the title is empty, but that there's no page at all. So if there's not previous page, it will not "execute" lib.navHorizon.10.1 at all.
You can fix this by not setting the wrap on the link, but on the HMENU:
10 = HMENU
10 {
special = browse
special {
items = prev
}
wrap = <div class="d-none d-md-block col-4 nav_prev"><i class="fa fa-angle-double-left"></i> |</div>
1 = TMENU
1.noBlur = 1
1.NO {
ATagTitle.dataWrap = {field:title}
}
}
This will ensure the wrap is always rendered, even if there's no page.
as (nearly) each object in typoscript has stdWrap functionality you can 'wrap' the dataWrap:
ATagTitle.dataWrap = {field:title}
ATagTitle.dataWrap.ifEmpty =

TYPO3 - Sidebar navigation li has no 'active' class when on page (active/current)

TYPO3 - Sidebar navigation li has no 'active' class when on page (active/current). I have this sidebar navigation ... but the li has no active added when on a specifc page. Does anybody see what's wrong?
lib.navigation = COA
lib.navigation {
20 = HMENU
20 {
entryLevel = 1
1 = TMENU
1 {
expAll = 1
#collapse = active
wrap = <ul class="sidebar-nav" id="menu">|</ul>
NO {
subst_elementUid = 1
ATagBeforeWrap = 1
allStdWrap.insertData = 1
wrapItemAndSub = <li>|</li>
}
ACT <.NO
ACT.wrapItemAndSub = <li class="active">|</li>
CUR <.ACT
#CUR <.NO
#CUR = 1
CUR.wrapItemAndSub = <li class="active">|</li>
#CUR.linkWrap = <strong>|</strong>
...
}
....
}
}
Try adding ACT = 1. Unlike NO, ACT and CUR are not active by default.
See https://docs.typo3.org/typo3cms/TyposcriptReference/MenuObjects/CommonItemStates/Index.html for more information about this.

Change filelinks layout in Typo3 (6.2.14)

I want to change the layout of the filelinks a little bit. I'm still a TS beginner, so please bear with me.
Here is what I need to have as output:
<ul class="list__download">
<li>
<a href="/#" class="list__link">Preisblatt A
<span class="list__info">2.3 MB / PDF</span>
</a>
</li>
<li>
<a href="/#" class="list__link">Preisblatt B
<span class="list__info">2.3 MB / PDF</span>
</a>
</li>
<li>
<a href="/#" class="list__link">Preisblatt C
<span class="list__info">689 GB / SFV</span>
</a>
</li>
</ul>
My initial approach in the TypoScript was like this:
tt_content.uploads.10.10.1.dataWrap = <h2>|</h2>
tt_content.uploads.20.stdWrap.dataWrap = <ul class="list__download">|</ul>
tt_content.uploads.20.renderObj.wrap.cObject.10.oddEvenClass >
tt_content.uploads.20.renderObj.wrap.cObject.10.elementClass >
tt_content.uploads.20.renderObj.wrap.cObject.20.value = <li>|</li>
tt_content.uploads.20.renderObj.20 = COA
tt_content.uploads.20.renderObj.20 {
10 = TEXT
10 {
data = file:current:title
wrap = |
}
15 < linebreak
20 = TEXT
20 {
data = file:current:description
wrap = <span class="list__info">|</span>
}
wrap = |
}
tt_content.uploads.20.renderObj.30 >
With this TS it looks exactly the way I want it to be, but of course the actual link to the file is gone (only replaced it with this dummy a-Tag wrap).
I also tried to write this code block to:
tt_content.uploads.20.renderObj.20.data
instead of the default
file:current:title // file:current:name
but then the elements are completely missing.
Can you help a TS-newbie out? How can I achieve to get my desired layout, and link a- and span-Tag to my uploaded file?
Thank you very much in advance
check out this one :
tt_content.uploads.20 {
renderObj {
10 >
15 >
20 >
20 = TEXT
20 {
data = file:current:size // file:current:name
bytes = 1
bytes.labels = ” B| KB| MB| GB”
htmlSpecialChars = 1
outerWrap = <li>|</li>
innerWrap = {file:current:name}<span class="fileDesc"> | &nbsp / {file:current:extension}</span>
required = 1
replacement {
# equivalent to former useSpacesInLinkText = 0; remove using > to disable it
10 {
search = _
replace.char = 32
}
# equivalent to former stripFileExtensionFromLinkText = 0; move "_20" to "20" to enable it. Disabled by default.
_20 {
search = /(.*)(\..*)/
replace = \1
useRegExp = 1
}
}
typolink {
parameter.data = file:current:originalUid // file:current:uid
parameter.wrap = file:|
fileTarget < lib.parseTarget
fileTarget =
fileTarget.override = {$styles.content.uploads.target}
fileTarget.override.override.field = target
removePrependedNumbers = 1
ATagParams = class = "list__link"
title {
data = file:current:title
htmlSpecialChars = 1
}
}
#wrap = <span>|</span>
}
20.innerWrap.insertData = 1
20.innerWrap2.insertData = 1
20.wrap.insertData = 1
30 >
wrap.cObject {
10 = LOAD_REGISTER
10 {
oddEvenClass = odd li-first |*| even || odd
elementClass = {file:current:extension}
elementClass.insertData = 1
}
20 = TEXT
20 {
value = <tr class="{register:oddEvenClass} {register:elementClass}">|</tr>
insertData = 1
}
30 = RESTORE_REGISTER
}
}
}

Put the menu link url in an attribute

I need to make a menu without any links but with the url in an attribute.
The url should be in data-href="|" but now only the title will be printed in the attribute.
Is there a way to only return the url and not the link. ie. http://example.com instead of Example
Or does anyone know a different solution?
lib.mainMenu = HMENU
lib.mainMenu {
entryLevel = 1
wrap = <ul id="dropDownMenu">|</ul>
1 = TMENU
1 {
noBlur = 1
expAll = 1
NO = 1
NO {
wrapItemAndSub = <li class="nochildren">|</li>
stdWrap2.wrap = <span>|</span>
}
ACT < .NO
ACT.wrapItemAndSub = <li class="active nochildren">|</li>
# if has children
IFSUB < .NO
IFSUB.wrapItemAndSub = <li class="haschildren">|</li>
IFSUB.allWrap = |
# if has children and is active
ACTIFSUB < .IFSUB
ACTIFSUB.wrapItemAndSub = <li class="active haschildren">|</li>
ACTIFSUB.allWrap = |
}
2 < .1
2 {
wrap = <ul id="subMenu">|</ul>
NO.ATagParams = rel="nofollow"
NO.stdWrap2.insertData = 1
NO.stdWrap2.wrap = <span data-href="|" class="link">{field:title}</span>
NO.doNotLinkIt = 1
IFSUB < .NO
ACTIFSUB < .IFSUB
}
3 < .2
}
Try this (untested code):
lib.mainMenu = HMENU
lib.mainMenu {
entryLevel = 1
wrap = <ul id="dropDownMenu">|</ul>
1 = TMENU
1 {
noBlur = 1
expAll = 1
NO = 1
NO {
wrapItemAndSub = <li class="nochildren">|</li>
stdWrap2.wrap = <span>|</span>
}
ACT < .NO
ACT.wrapItemAndSub = <li class="active nochildren">|</li>
# if has children
IFSUB < .NO
IFSUB.wrapItemAndSub = <li class="haschildren">|</li>
IFSUB.allWrap = |
# if has children and is active
ACTIFSUB < .IFSUB
ACTIFSUB.wrapItemAndSub = <li class="active haschildren">|</li>
ACTIFSUB.allWrap = |
}
2 < .1
2 {
wrap = <ul id="subMenu">|</ul>
NO {
doNotShowLink = 1
stdWrap2 {
wrap >
cObject = TEXT
cObject {
typolink {
parameter.field = uid
returnLast = url
}
insertData = 1
wrap = <span data-href="|" class="link">{field:nav_title//field:title}</span>
}
}
}
IFSUB < .NO
ACTIFSUB < .IFSUB
}
3 < .2
}
The above answer only works as long as you don't have any mountpoints. As soon as you have mountpoints in your page tree, these links will not be generated correctly.
To force a HMENU to output plain URLs without a surrounding a-Tag and page title even when using mountpoints, you need to define the IProcFunc property of HMENU.
I've written a small method which can be called through IProcFunc which will remove the a-Tags and replace the page title with the URL of the link.
<?php
class UserFuncUtils {
/**
* Modifies sitemap links. Whith this modification, a menu will only generate a plain url instead of an <a>-Tag
*
* This is an IProcFunc for a HMENU. The only parameter supplied by this method call is $this->I from the
* Menu ContentObject. The function call expects a modified $I array to be returned.
*/
function IProcFunc_plainURL($I) {
// Show what $I has to offer
// print \TYPO3\CMS\Extbase\Utility\DebuggerUtility::var_dump($I, NULL, 8, FALSE, FALSE, FALSE, array(), array());
// Remove opening and closing tags and replace title with href attribute. This results in a plain URL being rendered by the menu
$I['parts']['ATag_begin'] = '';
$I['parts']['ATag_end'] = '';
$I['parts']['title'] = $I['linkHREF']['HREF'];
return $I;
}
}
?>
Just save this small class somewhere (e.g. /fileadmin/libs/class.userFuncUtils.php) and include it with
includeLibs.userFuncUtils = fileadmin/libs/class.userFuncUtils.php
and then set the IProcFunc property of HMENU to point to this user function
lib.mainMenu = HMENU
lib.mainMenu.IProcFunc = UserFuncUtils->IProcFunc_plainURL
This should do the trick.

How to add title to breadcrumb from the database of extention in typo3?

Using kickstart i created one extension for listing category and product.And i need to display the both category title/name & product title/name in my breadcrumb .At present i coded for calling from the database(" 40 = RECORDS") it is only showing the
RESULT :- HOME > Page Name »
My Url:-http://www.domain.com/page_name/
lib.breadcrumb=COA
lib.breadcrumb {
40 = RECORDS
40 {
dontCheckPid = 1
tables = TABLE_NAME
source.data = GPvar:tx_pi1_NAME|EXTKEY
conf.EXTKEY = TEXT
conf.EXTKEY.field = FIELD_NAME
wrap = » |
}
10 = HMENU
10 {
special = rootline
# "not in menu pages" should show up in the breadcrumbs menu
includeNotInMenu = 1
1 = TMENU
# no unneccessary scripting.
1.noBlur = 1
# Current item should be unlinked
1.CUR = 1
1.target = _self
1.wrap = <div class="breadcrumb-class"> | </div>
1.NO {
stdWrap.field = title
ATagTitle.field = nav_title // title
linkWrap = ||*| > |*|
}
# Current menu item is unlinked
1.CUR {
stdWrap.field = title
linkWrap = ||*| &nbsp>&nbsp&nbsp |*|
doNotLinkIt = 1
}
}
}
Here is an example from the news extension. You can use the same approach for your extension.
http://forge.typo3.org/projects/extension-news/wiki/Add_news_to_breadcrumb_menu
We can add field title to breadcrumb from the database of any extention that which we create in typo3.
lib.breadcrumb = COA
lib.breadcrumb {
stdWrap.wrap = <ul class="breadcrumb">|</ul>
entryLevel = 1
10 = HMENU
10 {
special = rootline
1 = TMENU
1 {
noBlur = 1
NO = 1
NO {
wrapItemAndSub = <li>|</li>
ATagTitle.field = subtitle // title
linkWrap = ||*| ›&nbsp |*|
stdWrap.htmlSpecialChars = 1
}
CUR <.NO
CUR {
wrapItemAndSub = <li class="active">|</li>
}
}
}
101=RECORD
101 {
tables = tx_table_name
source.data = GPvar:tx_plugin_name|param //param passing in the url
conf.tx_besiproduct_product = TEXT
conf.tx_besiproduct_product.field = field_name
conf.tx_besiproduct_product.required = 1
conf.tx_besiproduct_product.wrap = <li >|</li>
}
}