Перейти к содержимому


Фото
- - - - -

Чекбокс из бренда в sitemap.php


  • Чтобы отвечать, сперва войдите на форум
4 ответов в теме

#1 Dmitry86

Dmitry86
  • Пользователь
  • 156 сообщений
  • Пользователь
  • Откуда:Мск

Опубликовано 16.08.2019 - 23:43

Ребят, возникла такая задача. Есть бренд, все страницы которого (карточки товаров, страницы категория+бренд и сама страница бренда) нужно скрыть от индексирования поисковыми системами.
 
Для этого в базу для брендов было добавлено поле noindex и сделан соответсвующий чекбокс в админке. Если в админке у бренда поле чекнуто - то на каждой странице (карточка, категория+бренд и станица бренда) появляется соответствующий мета-тег <meta name="robots" content="noindex">. Сразу поясню, что через robots.txt делать не захотел, уж больно много туда урлов прописывать пришлось бы.
 
Яндекс скушал нормально и страницы начали уходить из индекса, а вот Гугл начал ругаться: "Страница, связанная с отправленным URL, содержит тег noindex". Стало быть надо убирать эти страницы из sitemap.xml, который мы скормили Гуглу. Страницу бренда  и категория+бренд я сделал, а вот с карточками товаров не получается разобраться, прошу помощи. По сути вопрос такой: если в бренде чекнуто "Не индексировать" - то товары этого бренда в sitemap не выводятся.

// Товары
$simpla->db->query("SELECT url FROM __products WHERE visible=1");
foreach($simpla->db->results() as $p)
{
	$url = $simpla->config->root_url.'/products/'.esc($p->url);
	print "\t<url>"."\n";
	print "\t\t<loc>$url</loc>"."\n";
	print "\t</url>"."\n";
}

Заранее благодарю.


Изменено: Dmitry86, 16.08.2019 - 23:44


#2 chocolate_moles

chocolate_moles
  • Фрилансер
  • 485 сообщений
  • Программирование, Верстка
  • Версия CMS:2.x
  • Откуда:Санкт-Петербург

Опубликовано 17.08.2019 - 00:04

// Товары
$simpla->db->query("SELECT url FROM __products WHERE visible=1");
Заранее благодарю.

 

Как-то так

$simpla->db->query("
    SELECT
        p.url
    FROM
        __products p
    LEFT JOIN
        __brands b ON b.id = p.brand_id
    WHERE
        p.visible = 1 AND (b.noindex != 0 OR p.brand_id = 0)
");


#3 Dmitry86

Dmitry86
  • Пользователь
  • 156 сообщений
  • Пользователь
  • Откуда:Мск

Опубликовано 17.08.2019 - 00:12

Как-то так

$simpla->db->query("
    SELECT
        p.url
    FROM
        __products p
    LEFT JOIN
        __brands b ON b.id = p.brand_id
    WHERE
        p.visible = 1 AND (b.noindex != 0 OR p.brand_id = 0)
");

 

Спасибо, но не получилось( Всё равно показываются товары с этого бренда. Кэш чистил, через инкогнито тоже пробовал.



#4 chocolate_moles

chocolate_moles
  • Фрилансер
  • 485 сообщений
  • Программирование, Верстка
  • Версия CMS:2.x
  • Откуда:Санкт-Петербург

Опубликовано 17.08.2019 - 00:15

Спасибо, но не получилось( Всё равно показываются товары с этого бренда. Кэш чистил, через инкогнито тоже пробовал.

 

b.noindex != 1


#5 Dmitry86

Dmitry86
  • Пользователь
  • 156 сообщений
  • Пользователь
  • Откуда:Мск

Опубликовано 17.08.2019 - 00:18

b.noindex != 1

 

Супер, спасибо, теперь всё работает!






0 пользователей читают эту тему

0 пользователей, 0 гостей, 0 скрытых