I have an extension (Typo3 8.7.4) with categories in mm relation. The categories are saved in different pages. So i want to select only categories who are saved in the tree of a certain page and the subpages of this certain page. Is there a marker like the condition in typoscript "PIDinRootline" for selectin entries for foreign_table_where in TCA?
rootUid ist the correct treeConfig
The TCA foreign_table_where is documented on this page:
https://docs.typo3.org/typo3cms/TCAReference/ColumnsConfig/Type/Select.html#
An here you can find an explanation of the possible markers you can use in the query:
https://docs.typo3.org/typo3cms/TCAReference/ColumnsConfig/Type/Select.html#foreign-table-where
E.g. you can use ###CURRENT_PID### to fetch records form the current page.
Try to use below typoscript.
This checks if one of the figures in "pages-uidl" is a PID (pages-uid) in the rootline:
[PIDinRootline = pages-uid, pages-uid, ...]
Do the same as PIDinRootline, except the current page-uid is excluded from check.
[PIDupinRootline = pages-uid, pages-uid, ...]
Related
Is there some way how to hide specific elements on specific page using Typoscript in TYPO3?
The URL is for example: www.mywebsite.com/subpage1
I want to hide menu and footer part only on this subpage1.
Thank you
If the menu and footer are created through TypoScript you can use conditions in TypoScript to overwrite them. For example:
lib.footer = TEXT
lib.footer.value = This is my footer
[globalVar = TSFE:id = 4]
lib.footer >
[global]
In this example the uid of the page where I want to not show the footer is 4.
More on conditions in TypoScript can be found here: https://docs.typo3.org/typo3cms/TyposcriptReference/Conditions/Reference.html
A clean way would be to define different page-layouts and assign them to the pages where these elements are not desired. With fluid partials you could recycle most parts of the page and depending on the layout render footer and menu.
As you get a nice inheritance mostly the fields backend_layout and backend_layout_next_level are used. You will find a lot of examples.
fluid handling could be found in typoscript backend_layout_next_level not working.
For templa voila (=TV) you can use a similar attempt: select different TV-templates depending on these fields.
Duplicate the given template, remove footer and menu and insert the new template to the set of given templates.
I want to disable certain fields in the backend, e.g. many fields of gridelements and other content elements. I know about the possibilities of TCEFORM but it allowes only to disable a field in all cTypes. I need a way to disable certain field only for certain cTypes.
Is there a way to achieve this?
Thanks
You have full control over which field are shown, if you adapt TCA for tt_content. You can override TCA with your customer extensions (sitepackage).
The following file contains fields, which are shown for CType header (TYPO3 CMS 7.6)
EXT:sitepackage/Configuration/TCA/Overrides/tt_content.php
<?php
defined('TYPO3_MODE') or die();
call_user_func(function () {
$GLOBALS['TCA']['tt_content']['types']['header']['showitem'] = '--palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.general;general,--palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.headers;headers,rowDescription,--div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.appearance,--palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.frames;frames,--div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.access,--palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.visibility;visibility,--palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.access;access,--div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.extended,--div--;LLL:EXT:lang/locallang_tca.xlf:sys_category.tabs.category,categories';
});
Remove or add any fields after your needs and do so for any CType you wish to change.
See also https://docs.typo3.org/typo3cms/TCAReference/7.6/Reference/Types/Index.html
Meanwhile (since 9 LTS) it is possible via TsConfig:
TCEFORM.tt_content.subheader.types.text.disabled = 1
… disables the subheader field for all text content elements.
You can even disable a field for all cTypes and define an exception:
TCEFORM.tt_content.subheader{
disabled = 1
types.text.disabled = 0
}
As long as you don't need additional conditions like i.e. a certain user or group or a particular branch of the page tree to disable these fields, you should not go for PageTSconfig and TCEFORM but pure TCA types instead.
Just create a site package extension, which would be recommended anyway, and make sure to provide the desired setup for the tt_content table within Configuration/TCA/Overrides/tt_content.php so it will be applied automatically.
You can find some slides about the "Anatomy of Sitepackages" here: https://de.slideshare.net/benjaminkott/typo3-the-anatomy-of-sitepackages
Additional information about the TCA types can be found here:
https://docs.typo3.org/typo3cms/TCAReference/Types/Index.html
As Gridelements just provides mandatory fields for layout, children, container and column, you should not disable these fields though, since it might break the functionality.
I have a list in tt_news and use many folders with tt_news records. I want to use a different template in this list when I filter and display specific category.
My Typoscript is:
[globalVar = GP:tx_ttnews|place|0 = 79]
#Display list of specific category
plugin.tt_news.templateFile = fileadmin/templates/plugins/tt_news/different.html
[else]
#General display list
plugin.tt_news.templateFile = fileadmin/templates/plugins/tt_news/general.html
[end]
I have used plugin.tt_news.templateFile and plugin.tt_news.file.templateFile but don't work. I am using the last version of tt_news and TYPO3 6.2
"plugin.tt_news.templateFile" is right, i think there is a problem in "[globalVar = GP:tx_ttnews|place|0 = 79]" you should close global with "[global]" instead of "[end]". Try this if it is helpful to you.
For the Typoscript way did not resolve this, I do not why? For we needed we have use a category and marker in the template of tt_news and create a logic in frontend through JS for resolve this.
I want to find which page has installed this extension: jc_register, I can check every page, but it takes too much time since there are many pages, so I wonder if there is any fast way to find it instead of checking every page?
If you mean you want to find a content record of type "Insert Plugin" set to a particular extension, you can use "Admin tools".
Open "Admin Tools -> DB check".
Select "Full search" from the drop-down list.
Select "Advanced query".
Tick "Use formatted strings, labels and dates instead of original values for results". This will give you page titles in the results when pid is displayed.
Set the query so that it finds your plugin and lists the page IDs (which means that the "Select fields" must contain pid).
Note: Tested in TYPO3 4.5 LTS and might not work in later versions.
Hi the extension name is located in "tt_content.list_type" field. So something like this should help you:
SELECT tt_content.pid,pages.title
FROM tt_content JOIN pages ON tt_content.pid = pages.uid
WHERE tt_content.list_type LIKE '%register%'
ORDER BY tt_content.uid DESC
gl
If you need to do it more often, you might consider the extension backendtools: http://typo3.org/extensions/repository/view/backendtools
It offers an extension listing with search functionality and links to the according page.
I'm building a Typo3 website with the TT_NEWS extension; now I want to create a TT_NEWS list/latest view with a certain date range, but I cant find a way to do so.
I can't use the ARCHIVE function because I need a specific data range.
I hope that one of you knows the magic answer :-)
You can try setting an exact date range for the archive with TypoScript:
plugin.tt_news.amenuStart = 1.2.2003
plugin.tt_news.amenuEnd = 4.5.2006
This is assuming you only need one date range. For more than one range, maybe news categories would do the trick, but you'd need to assign them manually.
For tx_news use this in TypoScript:
1.settings.timeRestriction = 01.02.2003
1.settings.timeRestrictionHigh = 04.05.2006