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,
                ),
            );
        }
    }