TYPO3: pass categories to mask content element - typo3

In a TYPO3 8.7 project I am using a DatabaseQueryProcessor to fetch the categories of a page and pass them as a parameter to fluid. Works.
But I want to have these categories in a mask content element as well. What is the best approach to achieve this?
Thank you!

I found a solution myself.
Problem was that I used the data processor on the page template level. Now I moved the data processor to a single typoscript object of type "FLUIDTEMPLATE" which is accessible inside a mask template as well.

Related

How to put content elements side-by-side int typo3

I have just started my Typo3 journey. I want to put 2 content elements side-by-side (in one row). Can anyone tell how is it possible. Because whenever I place any content element, it is displayed as a block and fill the entire row.
Thank you for your time and consideration :)
You have to use container elements which come with the extension 'container'. Please have a look at https://extensions.typo3.org/extension/container
There is no build in solution for your problem.
But in TYPO3 you are free to build any kind of html structure for your output. This is necessary as you also can do any rendering of content. either with your own CSS and HTML-markup or if you use frameworks like Bootstrap.
You can build a new page layout, or any special content element which contains other content elements.
Changing layouts can (and should) be reflected in backend-layouts. (https://docs.typo3.org/m/typo3/reference-coreapi/11.5/en-us/ApiOverview/Backend/BackendLayout.html) (there are a lot of other tutorials)
But you also can build/ use individual defined containing content elements. Her you can get support by different extensions (eg. mask, DCE, gridelements) or define it completely on your own (https://docs.typo3.org/m/typo3/reference-coreapi/11.5/en-us/ApiOverview/ContentElements/Index.html)

Get Page Name/ID of Content Element in Backend Edit View

I'm new to Typo3.
Inside the Configuration section of my own Content element I need the ID or name of the Content element's page. How would you implement that?
I already tried to use flux:field.input but I dont know what to do with typoscript.
record.pid was the thing I was looking for!
<f:debug>{record}</f:debug>

FSC: Container elements

I've used many different container solutions in the past, including FluidTYPO3's FCEs, DCE, gridelements and some more.
I primarily use the functionality of providing container elements that lets the backend user nest content elements in the page module.
But what I haven't seen so far is a solution with core functionality. Shouldn't it be possible to provide container elements via FSC? Does anyone know how to solve e.g. a two-column container element?
Thanks for your help!
Nested structures is a missing core functionality but has nothing to do with FSC (fluid_styled_content), because FSC is just an frontend element renderer. It can be replaced by other renderers like the old css_styled_content. Nested structures are more complex because they have affects on database structure and backend handling (dragNdrop, translation, work spaces).
So there is at this moment no other way to use an extension like flux, gridelements, templavoila, ...
Per default TYPO3 has no container elements. The gridelements is the way to go. That's state of the art.
Or you have a look at the extension mask which also brings container elements into TYPO3.

TYPO3: Difference between Plugin and Custom Content Element?

I have to implement a media download feature. The backend user should be able to upload a media file, set the title, description, release date and so on... The result should then be visible and the file available for download in the frontend.
I am not sure what is the best way to achieve this: Plugin or Custom content element ?
Whats the main difference between the two and what would be the best solution for my task ?
Plugins are used for more complex rendering of records with different views (for example a list and a detail view of records stored somewhere in a storage folder). A custom content element (CE) should be preferred if all relevant data is stored in the record.
For your case, a Content Element seems to be the right solution. This kind of custom content elements can also be easily created with helpful extensions like "mask" which may takes you 10 minutes to create a custom CE.
https://typo3.org/extensions/repository/view/mask
If I understood you properly.
You can define plugin as type of "list_type", or as "CType" (if you need to code specific function, which is hard or unable to achieve using eg. Fluid contents) or even as another menu type defined as "menu_type".
These all types can be the same way made plugin, this separation for types are basically only for making it appear in different selectors. So:
your plugin defined as menu_type is to be selected in "Special Menus" content type in "Menu type" selector,
defined as list_type (so called) is to be selected in "Insert Plugin" content in "Selected plugin" selector,
defined as CType is totally new content type.
But they work the same way and this is easily to be switched using parameter in ext_tables plugin register call:
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addPlugin( ['Label', $_EXTKEY.'_myPluginSuffix'], 'CType');
1) You can use the "File Link" content element and adapt its TypoScript (tt_content.uploads.20.renderObj) to your needs.
2) You can use the file_list extension and adapt its Fluid templates to your needs

Preferred way to add an extensions into Fluid Powered TYPO3 template

im working with Claus' Fluid Powered TYPO3 and I'm quiet happy with it. At the moment I have to implement a template wich should contain another extension (e.g. news) in the sidebar.
What is the preferred way to implement this.
My idea was to add the f:cObject ViewHelper and insert the extension in that way.
Is this the correct approach?
Thx
Markus
This depends on the type of template you are building:
Page templates should have proper content areas into which you can insert content. If the content needs to be shared, you have a few options: a) create the element in a sys folder and reference it from your Flux form settings then use v:content.render to render it by UID. b) Place any number of shared elements in a sys folder and render all by PID. c) Use content sliding in a column in your template which is there in all templates and is designed to contain elements which "slide" to every subpage (and can also be edited on subpages if editor has access).
Content templates can use flux:grid with flux:form.column, or flux:form.content as a shortcut to quickly make a single column, to add a content area, then flux:content.render to render those elements. This allows you to control that gets rendered around the plugin.
Plugin templates can associate a Flux form and use the steps described in point 2.
I think you're looking for 1a) or 1c) in this case.