Erstellung eines neuen Sitemap-Menüs unter FSC ab TYPO3 V8! Warum so kompliziert wenn es auch einfach geht wie unter V6 / V7!?

Erstellung eines neuen Sitemap-Menüs unter FSC ab TYPO3 V8! Warum so kompliziert wenn es auch einfach geht wie unter V6 / V7!?

Ihr werdet hier die nicht gerade einfachen Grundlagen erfahren, wie Ihr per Fluid-Styled-Content-Vorlagen, "etwas" PHP-Code ein zusätzliches Sitemap-Menü erstellen könnt.
Ich muss schon zugeben, dass ich einige Zeit und Unterstützung von Facebook-TYPO3-Gruppenmitgliedern gebraucht habe um das SO hin zu bekommen! Danke an dieser Stelle den Facebook-TYPO3-Gruppenmitgliedern!

Aber, ehrlich gesagt, was ist DAS für ein Aufwand im Vergleich zu den vorhergehenden TYPO3-Versionen, nur um jetzt im BE eine eigene Registerkarte für "Menu" zu bekommen!?

Page-TSConfig

Um das neue Menü auswählen zu können, müsst Ihr es zuerst über die Page-TSConfig "anmelden":

mod.wizards.newContentElement.wizardItems.menu {
//    header = Menu
   elements {
      menu_icon_sitemap {
// irgendwie müssen die SVGs registriert werden. Es geht nicht eine eigene SVG heranzuziehen!?
// Jepp! Siehe ext_localconf.php unter qpxviewhelper-Extension!!!
         iconIdentifier = menu_icon_sitemap
         title = Sitemap mit Bild-Resource
         description = Sitemap mit Bild-Resource und Abstract ...
         tt_content_defValues {
            CType = menu_icon_sitemap
         }
      }
   }
   show := addToList(menu_icon_sitemap)
}

Wie das System feststellt ob es sich um menu_icon_sitemap.SVG oder menu_icon_sitemap.PNG handelt weiß ich auch noch nicht!? Vielleicht muss es ja SVG sein!?

Registrierung des Iconsin der ext_localconf.php unserer viewhelper-Ext. oder in der extTables.php im typo3conf

if (!defined('TYPO3_MODE')) {
    die ('Access denied.');
}

$_EXTCONF = unserialize($_EXTCONF);

$iconRegistry = \TYPO3\CMS\Core\Utility\GeneralUtility::makeInstance(
   \TYPO3\CMS\Core\Imaging\IconRegistry::class
);
$iconRegistry->registerIcon(
   'menu_icon_sitemap', // Icon-Identifier, z.B. tx-myext-action-preview
   \TYPO3\CMS\Core\Imaging\IconProvider\SvgIconProvider::class,
   ['source' => 'EXT:qpxviewhelper/Resources/Public/Icons/ContentElements/menu_icon_sitemap.svg']
);

TCA-Einträge unter ...\typo3\sysext\fluid_styled_content\Configuration\TCA\Overrides\tt_content.php

Für die Darstellung im BE fügen Sie das hinzu:

// Add the CType "Icon Sitemap"
// [] = array ()
\TYPO3\CMS\Core\Utility\ExtensionManagementUtility::addTcaSelectItem(
    'tt_content', 'CType',
    [
        'Sitemap with page-resource-image and abstract',
        'menu_icon_sitemap',
         'EXT:qpxviewhelper/Resources/Public/Icons/ContentElements/menu_icon_sitemap.svg'
    ],
    'menu_sitemap_pages',
    'after'
);
$GLOBALS['TCA']['tt_content']['ctrl']['typeicon_classes']['menu_icon_sitemap'] = 'menu_icon_sitemap';


// Configure the default backend fields for the content element
$GLOBALS['TCA']['tt_content']['types']['menu_icon_sitemap'] = array(
       'showitem' => '
            --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:general,
            --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,pages;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:pages.ALT.menu_formlabel,
            --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,
            --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.appearanceLinks;appearanceLinks,
            --div--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:tabs.accessibility,
            --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.menu_accessibility;menu_accessibility,
            --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:language,
            --palette--;;language,
            --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:access,
            --palette--;;hidden,
            --palette--;LLL:EXT:frontend/Resources/Private/Language/locallang_ttc.xlf:palette.access;access,
            --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:categories,
            --div--;LLL:EXT:lang/Resources/Private/Language/locallang_tca.xlf:sys_category.tabs.category,categories,
            --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:notes,rowDescription,
            --div--;LLL:EXT:core/Resources/Private/Language/Form/locallang_tabs.xlf:extended,
            --div--;LLL:EXT:gridelements/Resources/Private/Language/locallang_db.xlf:gridElements,tx_gridelements_container,tx_gridelements_column
        '
    );

Typoscript Setup

Danke an Matthias Kurz von der media machine GmbH aus Mainz, der mich darauf hat aufmerksam gemacht!

Das hatte ich vergessen, das muss ins setup.txt (Template-Setup):

# Menu of subpages of selected pages including resources and abstracts:
#
# CType: menu_icon_sitemap
tt_content.menu_icon_sitemap =< lib.contentElement
tt_content.menu_icon_sitemap {
    templateName = MenuIconSitemap
    dataProcessing {
        10 = TYPO3\CMS\Frontend\DataProcessing\MenuProcessor
        10 {
            special = directory
            special.value.field = pages
            levels = 1
            dataProcessing {
                10 = TYPO3\CMS\Frontend\DataProcessing\FilesProcessor
                10 {
                    references.fieldName = media
                }
            }
        }
    }

    stdWrap {
        editIcons = tt_content: header [header_layout], pages
        editIcons {
            iconTitle.data = LLL:EXT:fluid_styled_content/Resources/Private/Language/FrontendEditing.xlf:editIcon.menu
        }
    }

     settings.menuIconSitemapImageStyle = width:300px; height:auto; max-height:250px;
}

 

 

Und das Fluid-Template noch dazu:

<html xmlns:f="http://typo3.org/ns/TYPO3/CMS/Fluid/ViewHelpers" data-namespace-typo3-fluid="true">
<f:layout name="Default" />

<f:section name="Main">
    <f:render section="Menu" arguments="{menu: menu}" />
</f:section>

<f:section name="Menu">
    <f:if condition="{menu}">
       <ul class="ce-MenuIconSitemap">
            <f:for each="{menu}" as="page">
                <li>

                    <f:link.page pageUid="{page.data.uid}">
                  <h5>
                     <f:if condition="<f:format.stripTags>{page.nav_title}</f:format.stripTags>">
                        <f:then>
                           <f:format.stripTags>{page.data.nav_title}</f:format.stripTags>
                        </f:then>
                        <f:else>
                           <f:format.raw> {page.data.title} </f:format.raw>
                        </f:else>
                     </f:if>
                  </h5>
                    </f:link.page>

               <f:if condition="{page.files}">
                        <img src="fileadmin/{page.files.0.originalFile.identifier}"
                     {f:if(condition:'{page.files.0.properties.title}',then:' title="{page.files.0.properties.title}"')}
                     {f:if(condition:'{page.files.0.properties.alternative}',then:' alt="{page.files.0.properties.alternative}"')}
                     {f:if(condition:'{settings.menuIconSitemapImageStyle}',then:' style="{settings.menuIconSitemapImageStyle}"')}
                        >
               </f:if>


                  <f:if condition="{page.data.subtitle}">
                        <p class="ce-menu-subtitle"><strong><f:format.raw>{page.data.subtitle}</f:format.raw></strong></p>
                    </f:if>

                    <f:if condition="{page.data.abstract}">
                        <p class="ce-menu-abstract"><f:format.raw>{page.data.abstract}</f:format.raw></p>
                    </f:if>

               <f:render section="Menu" arguments="{menu: page.children}" />
                </li>
            </f:for>
        </ul>
    </f:if>

</f:section>

</html>



Damit müsstet Ihr es eigentlich schaffen, wenn nicht, dann meldet Euch einfach bei uns.

Auswahl dieser Funktion im BE: