TYPO3 Plugin:

mp_sitemap

Medienpalast - MpSitemap

Doku

Haken für andere Verlängerungen

So erweitert man die mp_sitemap in einer anderen Erweiterung (am Beispiel mp_brands_and_products):

ext_localconf.php:

/ / mp_sitemap Haken
$GLOBALS['TYPO3_CONF_VARS']['EXTCONF']['mp_sitemap']['additionalExtensions'][] ='Medienpalast\\MpBrandsAndProducts\Hooks\MpSitemap->InsertBrandsAndProducts';

HOOK (z.B. "./Klassen/Haken/MpSitemap.php"):

<?php
namensraum Medienpalast\MpBrandsAndProducts\Hooks;

verwenden Sie Medienpalast\MpLib\Utility\GeneralUtility\GeneralUtility;

/**
 * Klasse MpSitemap
 * 
 * @package Medienpalast\MpMarkenAndProdukte\Haken
 */
klasse MpSitemap erweitert \Medienpalast\MpLib\ProcFuncs\AbstractFrontendProcFunc {

    /**
     * brandRepository
     *
     * @var \Medienpalast\MpBrandsAndProducts\Domain\Repository\BrandRepository\BrandRepository
     * @inject
     */
    geschütztes $brandRepository = NULL;

    /**
     * insertMarkenAndProdukte
     *
     * @param $params
     * @param $parentObjekt
     * @return-Array
     */
    öffentliche Funktion insertBrandsAndProducts(&$params, &$parentObj) {
        $tree = array();

        if ($params['type'] =='mpBrandsAndProducts') {
            $storagePids = array();
            if (is_array($params['variable']))) {
                $storagePids = GeneralUtility::trimExplode(',',', $params['variable']['storage']['storage'], TRUE);
                if (isset($params['variable']['list']) && $params['variable']['list']]) {
                    $listPid = $params['variable']['list']['list'];
                } sonst {
                    $listPid = $params['showOnPid'];
                }
            } sonst {
                $storagePids = GeneralUtility::trimExplode(',',', $params['variable'], TRUE);
                $listPid = $params['showOnPid'];
            }

            $params['typeFound']] = TRUE;
            $params['partial'] = 'MpBrandsAndProductsSitemap';  // nicht pflicht (auch default wird vom Typ mit Großbuchstabem am anfang genommen)
            
            

            / / init
            $this->init('mpBrandsAndProducts');
            $this->initBrandRepository($storagePids);
            $tree['aBrands'] = $this->brandRepository->findAllBrandsByType('a');
            $tree['bBrands'] = $bBrands = $this->brandRepository->findAllBrandsByType('b');
        }

        gibt $tree zurück;
    }

    /**
     * initBrandRepository
     *
     * @return void
     */
    geschützte Funktion initBrandRepository($storagePids) {
        if (!$this->brandRepository) {
            $this->brandRepository = $this->objectManager->get('Medienpalast\\\MpBrandsAndProducts\Domain\\\Repository\\BrandRepository');
            /** @var \TYPO3\CMS\Extbase\Persistenz\Generic\QuerySettingsInterface $defaultQuerySettings */
            $defaultQuerySettings = $this->objectManager->get('TYPO3\\CMS\\Extbase\\Persistence\\Generic\\QuerySettingsInterface');
            $defaultQuerySettings->setStoragePageIds($storagePids);
            $this->brandRepository->setDefaultQuerySettings($defaultQuerySettings);
        }
    }
}

Typoscript:

# Sitemap
plugin.tx_mpsitemap {
    ansicht {
        partielle Wurzelpfade {
            # no not vergebene nummer verwenden (vergeben: 10)
            10 = {$plugin.tx_mpbrandsandproducts.view.partialRootPath}
        }
    }
    einstellungen {
        /*
        erweiterungen {
            mpMarkenAndProdukte {
                typ = mpMarkenAndProdukte
                teile {

                    # showOnPid = storagePids (kommagetrennte Liste) # detail = list = showOnPid
                    #      5673 = 4321,3454
                    # oder showOnPid {data }
                    #      5673 {
                    # Speicher = 4321.3454
                    # Liste = 4320
                    #      }
                }
            }
        }
        */
    }
}

Vorlagen (z.B. "./Ressourcen/Teile/"):
MpMarkenAndProdukteSitemap.html:

{namespace lib=Medienpalast\MpLib\ViewHelpers}

<f:für jede="{conf.tree.aBrands}"" as="brand">
    <f:render partial="MpBrandsAndProductsSitemap/Item" arguments="{brand:brand, targetPage:conf.listPid}"" />
</f:for>

<f:if condition="{conf.tree.bBrands}">
    <li>
        <a title="{f:translate(extensionName:'mpBrandsAndProducts', Schlüssel:'brand_menu_more_brands')}" href="#" onclick="return false;"><f:translate extensionName="mpBrandsAndProducts" key="brand_menu_more_brands" /></a>>
        <ul>
            <f:für jede="{conf.tree.bBrands}"" as="brand">
                <f:render partial="MpBrandsAndProductsSitemap/Item" arguments="{brand:brand, targetPage:conf.listPid}"" />
            </f:for>
        </ul>
    </li>
</f:if> if>

MpMarkenAndProdukteSitemap/Item.html:

<li>
    <f:link.page pageUid="{targetPage}" class=""" additionalParams="{tx_mpbrandsandproducts_products:{brand:'{brand.uid}'}}}">{brand.name}</f:link.page>

    <f:if condition="{brand.productLines}">
        <ul>
            <f:für jede="{brand.productLines}"" as="productLine">
                <li>
                    <f:link.page page pageUid="{targetPage}" additionalParams="{tx_mpbrandsandproducts_products:{brand:'{brand.uid}',productLine:'{productLine.uid}'}}}}">{productLine.name}</f:link.page>

                    <f:if condition="{productLine.products}">
                        <ul>
                            <f:für jedes="{productLine.products}"" as="product">
                                <li>
                                    <f:link.page pageUid="{targetPage}" additionalParams="{tx_mpbrandsandproducts_products:{brand:'{brand.uid}',productLine:'{productLine.uid}'}}}}">{product.name}</f:link.page>
                                </li>
                            </f:for>
                        </ul>
                    </f:if> if>
                </li>
            </f:for>
        </ul>
    </f:if> if>
</li>

MpBrandsAndProductsSitemap.xml (für google Sitemap):

{namespace lib=Medienpalast\MpLib\ViewHelpers}

<f:für jede="{conf.tree.aBrands}"" as="brand">
    <f:render partial="MpBrandsAndProductsSitemap/Item" arguments="{brand:brand, targetPage:conf.listPid}"" />
</f:for>
<f:für jede="{conf.tree.bBrands}"" as="brand">
    <f:render partial="MpBrandsAndProductsSitemap/Item" arguments="{brand:brand, targetPage:conf.listPid}"" />
</f:for>

MpMarkenAndProdukteSitemap/Item.xml:

<url>
    <loc><f:uri.page page pageUid="{targetPage}" absolut="true" additionalParams="{tx_mpbrandsandproducts_products:{brand:'{brand.uid}'}}}}" " /></loc>
    <lastmod><f:format.date format="c">{brand.tstamp}</f:format.date></lastmod>
</url>

<f:if condition="{brand.productLines}">
    <f:für jede="{brand.productLines}"" as="productLine">
        <url>
            <loc><f:uri.page page pageUid="{targetPage}" absolut="true" additionalParams="{tx_mpbrandsandproducts_products:{brand:'{brand.uid}',productLine:'{productLine.uid}'}}}"" /></loc>
            <lastmod><f:format.date format="c">{productLine.tstamp}</f:format.date></lastmod>
        </url>

        <f:Kommentar>
        <f:if condition="{productLine.products}">
            <f:für jedes="{productLine.products}"" as="product">
                <url>
                    <loc><f:uri.page page pageUid="{targetPage}" absolut="true" additionalParams="{tx_mpbrandsandproducts_products:{brand:'{brand.uid}',productLine:'{productLine.uid}'}}}"" /></loc>
                    <lastmod><f:format.datum format="c">{product.tstamp}</f:format.date></lastmod>
                </url>
            </f:for>
        </f:if> if>
        </f:Kommentar>
    </f:for>
</f:if> if>

Benötigen Sie schnelle Hilfe mit dieser Extension? Unser Team von erfahrenen TYPO3-Entwicklern löst Probleme unkompliziert und zum Stundensatz.

Verteilung:MP_SITEMAP ist auf

0.03 % aller TYPO3 installiert.

  • 0.19 % aller TYPO3 8.7.x Installationen installiert
  • 0.02 % aller TYPO3 7.6.x Installationen installiert

Aktualität:MP_SITEMAP ist auf dem neusten Stand (v.unknown) bei

100 % aller TYPO3 Installationen

  • 0 % aller TYPO3 9.5.x Installationen
  • 0 % aller TYPO3 9.3.x Installationen
  • 0 % aller TYPO3 9.2.x Installationen
  • 0.19 % aller TYPO3 8.7.x Installationen
  • 0.02 % aller TYPO3 7.6.x Installationen
  • 0 % aller TYPO3 7.5.x Installationen
  • 0 % aller TYPO3 7.4.x Installationen
  • 0 % aller TYPO3 7.3.x Installationen
  • 0 % aller TYPO3 7.2.x Installationen
  • 0 % aller TYPO3 7.1.x Installationen
  • 0 % aller TYPO3 7.0.x Installationen
  • 0 % aller TYPO3 6.2.x Installationen
  • 0 % aller TYPO3 6.1.x Installationen
  • 0 % aller TYPO3 6.0.x Installationen
  • 0 % aller TYPO3 5.0.x Installationen
  • 0 % aller TYPO3 4.7.x Installationen
  • 0 % aller TYPO3 4.6.x Installationen
  • 0 % aller TYPO3 4.5.x Installationen
  • 0 % aller TYPO3 4.4.x Installationen
  • 0 % aller TYPO3 4.3.x Installationen
  • 0 % aller TYPO3 4.2.x Installationen
  • 0 % aller TYPO3 4.1.x Installationen
  • 0 % aller TYPO3 4.0.x Installationen
  • 0 % aller TYPO3 3.5.x Installationen

Gosign-Responsive Index: TYPO3 Installationen nutzen MP_SITEMAP zu

  • 60 % wenn der Gosign-Responsive-Index zwischen 80 % und 100 % ist
  • 0 % wenn der Gosign-Responsive-Index zwischen 60 % und 80 % ist
  • 40 % wenn der Gosign-Responsive-Index zwischen 40 % und 60 % ist
  • 0 % wenn der Gosign-Responsive-Index zwischen 20 % und 40 % ist
  • 0 % wenn der Gosign-Responsive-Index zwischen 0 % und 20 % ist

Pagespeed: TYPO3 Installationen nutzen MP_SITEMAP zu

  • 10 % wenn der Pagespeed zwischen 80 % und 100 % ist
  • 30 % wenn der Pagespeed zwischen 60 % und 80 % ist
  • 30 % wenn der Pagespeed zwischen 40 % und 60 % ist
  • 20 % wenn der Pagespeed zwischen 20 % und 40 % ist
  • 10 % wenn der Pagespeed zwischen 0 % und 20 % ist


Stichprobe n=37950 von Gosign gecrawlte TYPO3-Seiten mit den Top-Level-Domains <.de/.ch/.at>