Classes/Page/Part/MetatagPart.php
protected function advMetaTags(array &$metaTags, array $pageRecord, $sysLanguageId, array $customMetaTagList)
    {
        $pageRecordId = $pageRecord['uid'];
        $storeMeta = $this->getStoreMeta();
        $advMetaTagCondition = array();

        // #################
        // External Og tags (from connector)
        // #################
        if ($this->isAvailableExternalOgTags()) {
            // External OpenGraph support
            $advMetaTagCondition[] = 'tag_name NOT LIKE \'og:%\'';
            if (!empty($storeMeta['meta:og'])) { //overwrite known og tags
                $externalOgTags = $storeMeta['meta:og'];
                foreach ($externalOgTags as $tagName => $tagValue) {
                    if (array_key_exists('og.' . $tagName, $metaTags)) { //_only_ known og tags
                        $metaTags['og.' . $tagName] = array(
                            'tag'        => 'meta',
                            'attributes' => array(
                                'property'  => 'og:' . $tagName,
                                'content'   => $tagValue,
                            ),
                        );
                    }
                }
            }
        }
        if ($this->isAvailableExternalOgCustomTags()) {
            $ogTagKeys = array();
            if (!empty($storeMeta['custom:og'])) {
                $externalCustomOgTags = $storeMeta['custom:og'];
                foreach ($externalCustomOgTags as $tagName => $tagValue) { //take all tags
                    $metaTags['og.' . $tagName] = array(
                        'tag'        => 'meta',
                        'attributes' => array(
                            'property'  => 'og:' . $tagName,
                            'content'   => $tagValue,
                        ),
                    );
                    $ogTagKeys[] = 'og:' . $tagName;
                }
            }
            $advMetaTagCondition[] = DatabaseUtility::conditionNotIn('tag_name', $ogTagKeys, true);
        }

        // #################
        // Adv meta tags (from editor)
        // #################

        if (!empty($advMetaTagCondition)) {
            $advMetaTagCondition = '( ' . implode(') AND (', $advMetaTagCondition) . ' )';
        } else {
            $advMetaTagCondition = '1=1';
        }

        // Fetch list of meta tags from database
        $query          = 'SELECT tag_name,
                                  tag_value
                             FROM tx_metaseo_metatag
                            WHERE pid = ' . (int)$pageRecordId . '
                              AND sys_language_uid = ' . (int)$sysLanguageId . '
                              AND ' . $advMetaTagCondition;
        $advMetaTagList = DatabaseUtility::getList($query);

        // Add metadata to tag list
        foreach ($advMetaTagList as $tagName => $tagValue) {
            if (substr($tagName, 0, 3) === 'og:') {
                $metaTags['og.' . $tagName] = array(
                    'tag'        => 'meta',
                    'attributes' => array(
                        'property'  => $tagName,
                        'content'   => $tagValue,
                    ),
                );
            } else {
                $metaTags['adv.' . $tagName] = array(
                    'tag'        => 'meta',
                    'attributes' => array(
                        'rel'  => $tagName, //see https://github.com/webdevops/TYPO3-metaseo/issues/464
                        'href' => $tagValue,
                    ),
                );
            }
        }

        // #################
        // Custom meta tags (from connector)
        // #################
        foreach ($customMetaTagList as $tagName => $tagValue) {
            $metaTags['adv.' . $tagName] = array(
                'tag'        => 'meta',
                'attributes' => array(
                    'rel'  => $tagName, //see https://github.com/webdevops/TYPO3-metaseo/issues/464
                    'href' => $tagValue,
                ),
            );
        }
    }
protected function advMetaTags(array &$metaTags, array $pageRecord, $sysLanguageId, array $customMetaTagList)
    {
        $pageRecordId = $pageRecord['uid'];
        $storeMeta = $this->getStoreMeta();
        $advMetaTagCondition = array();

        // #################
        // External Og tags (from connector)
        // #################
        if ($this->isAvailableExternalOgTags()) {
            // External OpenGraph support
            $advMetaTagCondition[] = 'tag_name NOT LIKE \'og:%\'';
            if (!empty($storeMeta['meta:og'])) { //overwrite known og tags
                $externalOgTags = $storeMeta['meta:og'];
                foreach ($externalOgTags as $tagName => $tagValue) {
                    if (array_key_exists('og.' . $tagName, $metaTags)) { //_only_ known og tags
                        $metaTags['og.' . $tagName] = array(
                            'tag'        => 'meta',
                            'attributes' => array(
                                'property'  => 'og:' . $tagName,
                                'content'   => $tagValue,
                            ),
                        );
                    }
                }
            }
        }
        if ($this->isAvailableExternalOgCustomTags()) {
            $ogTagKeys = array();
            if (!empty($storeMeta['custom:og'])) {
                $externalCustomOgTags = $storeMeta['custom:og'];
                foreach ($externalCustomOgTags as $tagName => $tagValue) { //take all tags
                    $metaTags['og.' . $tagName] = array(
                        'tag'        => 'meta',
                        'attributes' => array(
                            'property'  => 'og:' . $tagName,
                            'content'   => $tagValue,
                        ),
                    );
                    $ogTagKeys[] = 'og:' . $tagName;
                }
            }
            $advMetaTagCondition[] = DatabaseUtility::conditionNotIn('tag_name', $ogTagKeys, true);
        }

        // #################
        // Adv meta tags (from editor)
        // #################

        if (!empty($advMetaTagCondition)) {
            $advMetaTagCondition = '( ' . implode(') AND (', $advMetaTagCondition) . ' )';
        } else {
            $advMetaTagCondition = '1=1';
        }

        // Fetch list of meta tags from database
        $query          = 'SELECT tag_name,
                                  tag_value
                             FROM tx_metaseo_metatag
                            WHERE pid = ' . (int)$pageRecordId . '
                              AND sys_language_uid = ' . (int)$sysLanguageId . '
                              AND ' . $advMetaTagCondition;
        $advMetaTagList = DatabaseUtility::getList($query);

        // Add metadata to tag list
        foreach ($advMetaTagList as $tagName => $tagValue) {
            if (substr($tagName, 0, 3) === 'og:') {
                $metaTags['og.' . $tagName] = array(
                    'tag'        => 'meta',
                    'attributes' => array(
                        'property'  => $tagName,
                        'content'   => $tagValue,
                    ),
                );
            } else {
                $metaTags['adv.' . $tagName] = array(
                    'tag'        => 'meta',
                    'attributes' => array(
                        'rel'  => $tagName, //see https://github.com/webdevops/TYPO3-metaseo/issues/464
                        'href' => $tagValue,
                    ),
                );
            }
        }

        // #################
        // Custom meta tags (from connector)
        // #################
        foreach ($customMetaTagList as $tagName => $tagValue) {
            $metaTags['adv.' . $tagName] = array(
                'tag'        => 'meta',
                'attributes' => array(
                    'rel'  => $tagName, //see https://github.com/webdevops/TYPO3-metaseo/issues/464
                    'href' => $tagValue,
                ),
            );
        }
    }
protected function advMetaTags ( array & $ metaTags , array $ pageRecord , $ sysLanguageId , array $ customMetaTagList ) { $ pageRecordId = $ pageRecord [ 'uid' ] ; $ storeMeta = $ this -> getStoreMeta ( ) ; $ advMetaTagCondition = array ( ) ; // ################# // External Og tags (from connector) // ################# if ( $ this -> isAvailableExternalOgTags ( ) ) { // External OpenGraph support $ advMetaTagCondition [ ] = 'tag_name NOT LIKE \'og:%\'' ; if ( ! empty ( $ storeMeta [ 'meta:og' ] ) ) { //overwrite known og tags $ externalOgTags = $ storeMeta [ 'meta:og' ] ; foreach ( $ externalOgTags as $ tagName => $ tagValue ) { if ( array_key_exists ( 'og.' . $ tagName , $ metaTags ) ) { //_only_ known og tags $ metaTags [ 'og.' . $ tagName ] = array ( 'tag' => 'meta' , 'attributes' => array ( 'property' => 'og:' . $ tagName , 'content' => $ tagValue , ) , ) ; } } } } if ( $ this -> isAvailableExternalOgCustomTags ( ) ) { $ ogTagKeys = array ( ) ; if ( ! empty ( $ storeMeta [ 'custom:og' ] ) ) { $ externalCustomOgTags = $ storeMeta [ 'custom:og' ] ; foreach ( $ externalCustomOgTags as $ tagName => $ tagValue ) { //take all tags $ metaTags [ 'og.' . $ tagName ] = array ( 'tag' => 'meta' , 'attributes' => array ( 'property' => 'og:' . $ tagName , 'content' => $ tagValue , ) , ) ; $ ogTagKeys [ ] = 'og:' . $ tagName ; } } $ advMetaTagCondition [ ] = DatabaseUtility :: conditionNotIn ( 'tag_name' , $ ogTagKeys , true ) ; } // ################# // Adv meta tags (from editor) // ################# if ( ! empty ( $ advMetaTagCondition ) ) { $ advMetaTagCondition = '( ' . implode ( ') AND (' , $ advMetaTagCondition ) . ' )' ; } else { $ advMetaTagCondition = '1=1' ; } // Fetch list of meta tags from database $ query = 'SELECT tag_name,
                                  tag_value
                             FROM tx_metaseo_metatag
                            WHERE pid = ' . ( int ) $ pageRecordId . '
                              AND sys_language_uid = ' . ( int ) $ sysLanguageId . '
                              AND ' . $ advMetaTagCondition ; $ advMetaTagList = DatabaseUtility :: getList ( $ query ) ; // Add metadata to tag list foreach ( $ advMetaTagList as $ tagName => $ tagValue ) { if ( substr ( $ tagName , 0 , 3 ) === 'og:' ) { $ metaTags [ 'og.' . $ tagName ] = array ( 'tag' => 'meta' , 'attributes' => array ( 'property' => $ tagName , 'content' => $ tagValue , ) , ) ; } else { $ metaTags [ 'adv.' . $ tagName ] = array ( 'tag' => 'meta' , 'attributes' => array ( 'rel' => $ tagName , //see https://github.com/webdevops/TYPO3-metaseo/issues/464 'href' => $ tagValue , ) , ) ; } } // ################# // Custom meta tags (from connector) // ################# foreach ( $ customMetaTagList as $ tagName => $ tagValue ) { $ metaTags [ 'adv.' . $ tagName ] = array ( 'tag' => 'meta' , 'attributes' => array ( 'rel' => $ tagName , //see https://github.com/webdevops/TYPO3-metaseo/issues/464 'href' => $ tagValue , ) , ) ; } }
Advanced meta tags

@param array   $metaTags          MetaTags
@param array   $pageRecord        TSFE Page
@param integer $sysLanguageId     Sys Language ID
@param array   $customMetaTagList Custom Meta Tag list
Advanced meta tags