Beispiel #1
0
    public function generateSeoGSiteMap()
    {
        $res = true;
        $xmlSiteMapHeader = <<<XML
<?xml version="1.0" encoding="UTF-8" ?>
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
</urlset>
XML;
        $xml = array();
        foreach (AdvancedSearchClass::getSearchsId(true) as $searchRow) {
            $idSearch = (int) $searchRow['id_search'];
            $idShop = (int) AdvancedSearchClass::getShopBySearch($idSearch);
            if (version_compare(_PS_VERSION_, '1.5.0.0', '>=')) {
                $shop = new Shop($idShop);
            }
            if (!isset($xml[$idShop])) {
                $xml[$idShop] = new SimpleXMLElement($xmlSiteMapHeader);
            }
            foreach (Language::getLanguages(true) as $language) {
                $seoSearchs = AdvancedSearchSeoClass::getSeoSearchs($language['id_lang'], false, $idSearch);
                foreach ($seoSearchs as $seoSearch) {
                    $nbCriteria = count(unserialize($seoSearch['criteria']));
                    if ($nbCriteria <= 3) {
                        $priority = 0.7;
                    } else {
                        if ($nbCriteria <= 5) {
                            $priority = 0.6;
                        } else {
                            $priority = 0.5;
                        }
                    }
                    $sitemap[$idShop] = $xml[$idShop]->addChild('url');
                    if (version_compare(_PS_VERSION_, '1.5.0.0', '>=')) {
                        $url = $shop->getBaseURL() . (Language::countActiveLanguages() > 1 ? $language['iso_code'] . '/' : '') . 's/' . (int) $seoSearch['id_seo'] . '/' . htmlentities($seoSearch['seo_url'], ENT_COMPAT, 'UTF-8');
                        if (Configuration::get('PS_SSL_ENABLED') && Configuration::get('PS_SSL_ENABLED_EVERYWHERE')) {
                            $url = 'https://' . ltrim($url, 'http://');
                        }
                        $sitemap[$idShop]->addChild('loc', $url);
                    } else {
                        $sitemap[$idShop]->addChild('loc', _PS_BASE_URL_ . __PS_BASE_URI__ . (Language::countActiveLanguages() > 1 ? $language['iso_code'] . '/' : '') . 's/' . (int) $seoSearch['id_seo'] . '/' . htmlentities($seoSearch['seo_url'], ENT_COMPAT, 'UTF-8'));
                    }
                    $sitemap[$idShop]->addChild('priority', $priority);
                    $sitemap[$idShop]->addChild('changefreq', 'weekly');
                }
            }
        }
        foreach ($xml as $idShop => $xmlContent) {
            if ($idShop) {
                $res &= file_put_contents(_PS_ROOT_DIR_ . '/modules/pm_advancedsearch4/sitemap/seositemap-' . (int) $idShop . '.xml', $xmlContent->asXML());
            } else {
                $res &= file_put_contents(_PS_ROOT_DIR_ . '/modules/pm_advancedsearch4/sitemap/seositemap.xml', $xmlContent->asXML());
            }
        }
        return $res;
    }