protected function applyMarker($robotsTxt)
    {
        $ret = $robotsTxt;

        $markerList     = array();
        $markerConfList = array();

        foreach ($this->tsSetupSeo['marker.'] as $name => $data) {
            if (strpos($name, '.') === false) {
                $markerConfList[$name] = null;
            }
        }

        if ($this->linkToStaticSitemap) {
            // remove sitemap-marker because we link to static url
            unset($markerConfList['sitemap']);
        }

        // Fetch marker content
        foreach ($markerConfList as $name => $conf) {
            $markerList['%' . $name . '%'] = $this->cObj->cObjGetSingle(
                $this->tsSetupSeo['marker.'][$name],
                $this->tsSetupSeo['marker.'][$name . '.']
            );
        }

        // generate sitemap-static marker
        if ($this->linkToStaticSitemap) {
            if ($this->sitemapLanguageLock) {
                $path = 'uploads/tx_metaseo/sitemap_xml/index-r' . (int)$this->rootPid . '-l'
                    . (int)$this->languageId . '.xml.gz';
            } else {
                $path = 'uploads/tx_metaseo/sitemap_xml/index-r' . (int)$this->rootPid . '.xml.gz';
            }

            $conf = array(
                'parameter' => $path
            );

            $markerList['%sitemap%'] = $this->cObj->typoLink_URL($conf);
        }

        // Fix sitemap-marker url (add prefix if needed)
        $markerList['%sitemap%'] = GeneralUtility::fullUrl($markerList['%sitemap%']);

        // Call hook
        GeneralUtility::callHookAndSignal(__CLASS__, 'robotsTxtMarker', $this, $markerList);

        // Apply marker list
        if (!empty($markerList)) {
            $ret = strtr($ret, $markerList);
        }

        return $ret;
    }