подскажите модуль для создания sitemap

Последнее редактирование:
подскажите в чём проблема, создаю карту сайта модулем, переделанным для гугл и яндекс, гугл её кушает быстро и всё нормально, а яндекс валидатором её принимат, но когда я отправляю её на индекс, то прошло 2 недели и файл в обработке. Так было не всегда, раньше, за день или 2 всё индексировалось. Страницы сайта индексирует быстро, 20-30 минут. Мне каежется, что так стало после изменений в product.tpl, но это изменение нужно и скажите - есть ли тут связь? спасибо
 
Ещё один модуль для генерации sitemap
Карта сайта Google sitemap
v4.1.0
Для просмотра ссылки Войди или Зарегистрируйся
Зачем такие сложности все модули карт от оф.престы на гитхабе
Для просмотра ссылки Войди или Зарегистрируйся
забыл написать нужно обновить до последней v4.1.0 таже проблема у 30пчел
в старых был такой баг три дубля адреса сайта с разным весом
2019-02-17_232737.jpg
 
Последнее редактирование:
скачал v4.1.0, в коде поддерживаемая версия PS min 1.7.1.0
на PS 1.6 будет работать если проверку отключить?
 
Пользуюсь этим модулем. Ошибка такая же. Никак не могу найти ее. Просматриваю весь код и вроде всё ок.
Потому пришлось прибегнуть к вот таком костылю:
В файле yasitemap.php находим фрагмент:
Код:
foreach ($link_sitemap as $key => $file)
        {
            fwrite($writeFd, '<url>');
            $this->_addSitemapNode($writeFd, htmlspecialchars($file['link']), $this->_getPriorityPage($file['page']), Configuration::get('YASITEMAP_FREQUENCY'), date('c'));
            if ($file['image'])
            {
                $this->_addSitemapNodeImage($writeFd, htmlspecialchars($file['image']['link']), isset($file['image']['title_img']) ? htmlspecialchars(str_replace(array("\r\n", "\r", "\n"), '', $file['image']['title_img'])) : '', isset($file['image']['caption']) ? htmlspecialchars(str_replace(array("\r\n", "\r", "\n"), '', $file['image']['caption'])) : '');
            }
            fwrite($writeFd, '</url>');
        }
У меня это строки 547-556.
Здесь формируется блок страницы в карте сайта.
В самом начале тела цикла после первых двух строк:
Код:
foreach ($link_sitemap as $key => $file)
        {
добавляем две строки:
Код:
            $file1 = str_replace("https://site.ruhttps://site.ru","https://site.ru",$file);
            $file = $file1;

Либо проще... Весь представленный выше кусок меняем на:
Код:
foreach ($link_sitemap as $key => $file)
        {
            $file1 = str_replace("https://site.ruhttps://site.ru","https://site.ru",$file);
            $file = $file1;
            fwrite($writeFd, '<url>');
            $this->_addSitemapNode($writeFd, htmlspecialchars($file['link']), $this->_getPriorityPage($file['page']), Configuration::get('YASITEMAP_FREQUENCY'), date('c'));
            if ($file['image'])
            {
                $this->_addSitemapNodeImage($writeFd, htmlspecialchars($file['image']['link']), isset($file['image']['title_img']) ? htmlspecialchars(str_replace(array("\r\n", "\r", "\n"), '', $file['image']['title_img'])) : '', isset($file['image']['caption']) ? htmlspecialchars(str_replace(array("\r\n", "\r", "\n"), '', $file['image']['caption'])) : '');
            }
            fwrite($writeFd, '</url>');
        }

Не забываем поменять Для просмотра ссылки Войди или Зарегистрируйся на Ваш сайт!

Всем успехов!

PS: Если кто найдет ошибку в том коде, прошу написать здесь. Очень хотелось бы понять причину ошибки и избавиться от костыля!

Такая же ошибка и у меня, исправил удалением ненужного и дублирующего кода. Все работает.
Примеры дублирующего кода примерно на 293 строке:
Код:
foreach ($products_id as $product_id)
        {
            $product = new Product((int)$product_id['id_product'], false, (int)$lang['id_lang']);
            if (_PS_VERSION_ >= 1.5)
            {
                $url = (Configuration::get('PS_SSL_ENABLED') ? Tools::getShopDomainSsl(true) : Tools::getShopDomain(true));
                $url .= str_replace('http://'.$this->context->shop->domain, '', $link->getProductLink($product, $product->link_rewrite, $product->category, $product->ean13, (int)$lang['id_lang'], (int)$this->context->shop->id, 0, true));
            }
            else
Заменил на :
Код:
foreach ($products_id as $product_id)
        {
            $product = new Product((int)$product_id['id_product'], false, (int)$lang['id_lang']);

            $url = $link->getProductLink($product, $product->link_rewrite, htmlspecialchars(strip_tags($product->category)), $product->ean13, (int)$lang['id_lang'], (int)$this->context->shop->id, 0, true);

И еще в нескольких местах, касательно категорий, производителей и поставщиков удалил лишнее и url стали правильные.
Код:
$manufacturer = new Manufacturer((int)$manufacturer_id['id_manufacturer'], $lang['id_lang']);
            $url = (Configuration::get('PS_SSL_ENABLED') ? Tools::getShopDomainSsl(true) : Tools::getShopDomain(true)).$this->context->shop->physical_uri.$this->context->shop->virtual_uri;
            $url .= str_replace(_PS_BASE_URL_.__PS_BASE_URI__, '', $link->getManufacturerLink($manufacturer, $manufacturer->link_rewrite, $lang['id_lang']));
Заменил на
Код:
$manufacturer = new Manufacturer((int)$manufacturer_id['id_manufacturer'], $lang['id_lang']);
            $url = (Configuration::get('PS_SSL_ENABLED') ? Tools::getShopDomainSsl(true) : Tools::getShopDomain(true)).$this->context->shop->physical_uri.$this->context->shop->virtual_uri;
 
Уберите конкатенацию и все будет гуд.

Замените код
Код:
$url .= str_replace('context->shop->domain" rel="nofollow">http://'.$this->context->shop->domain, '', $link->getProductLink($product, $product->link_rewrite, $product->category, $product->ean13, (int)$lang['id_lang'], (int)$this->context->shop->id, 0, true));
на
Код:
$url = str_replace('context->shop->domain" rel="nofollow">http://'.$this->context->shop->domain, '', $link->getProductLink($product, $product->link_rewrite, $product->category, $product->ean13, (int)$lang['id_lang'], (int)$this->context->shop->id, 0, true));

Замените код
Код:
$url .= str_replace(_PS_BASE_URL_.__PS_BASE_URI__, '', $link->getManufacturerLink($manufacturer, $manufacturer->link_rewrite, $lang['id_lang']));
на
Код:
$url = str_replace(_PS_BASE_URL_.__PS_BASE_URI__, '', $link->getManufacturerLink($manufacturer, $manufacturer->link_rewrite, $lang['id_lang']));

Замените код
Код:
$url .= str_replace(_PS_BASE_URL_.__PS_BASE_URI__, '', $link->getSupplierLink($supplier, $supplier->link_rewrite, $lang['id_lang']));
на
Код:
$url = str_replace(_PS_BASE_URL_.__PS_BASE_URI__, '', $link->getSupplierLink($supplier, $supplier->link_rewrite, $lang['id_lang']));
 
Такая же проблема! Невозможно обновить модуль Google sitemap: Ошибка при загрузке последней версии.

Создайте в /modules папку gsitemap вручную и залейте туда содержимое архива нужной версии с GitHub (Для просмотра ссылки Войди или Зарегистрируйся). После этого произведите установку модуля из админки.
 
Назад
Сверху