ЧПУ товаров
Подскажите, при создании товара ему автоматически задается ЧПУ из его имени. Я понимаю что вручную можно изменить, но можно ли эту функцию отключить вообще? Мне нужно чтобы в качестве ЧПУ был ID товара.
Подскажите, при создании товара ему автоматически задается ЧПУ из его имени. Я понимаю что вручную можно изменить, но можно ли эту функцию отключить вообще? Мне нужно чтобы в качестве ЧПУ был ID товара.
7 ответов
Никак.
Уже давно просили этот функционал - ID вместо ЧПУ.
Но так и не добавили.
ps: Только через запуск скрипта прописывать в базу вместо ЧПУ id товаров.
или через импорт-экспорт намутить, кто в sql не умеет )
Сейчас делаю через запрос к БД командой UPDATE shop_product SET url = id WHERE 1
Может кто знает, возможно ли чтобы этот запрос применялся не ко всем товарам? Например если у товара есть некая характеристика и в этой характеристики стоит значение 1. Возможно ли такое?
Да. Такое возможно. Это тоже делается одним запросом.
А можете подсказать как именно? А-то я в этом не понимаю ничего)
Сорри, что не сразу ответил. Закрутился перед НГ.
Допустим мы создаем у товара доп. параметр, наличие которого показывает нам, что такой товар требует замены ЧПУ на ID. В тестах я назвал его 'curl'. Значение его в принципе не важно. Будем проверять просто на наличие.
Запрос на обновление URL таких товаров будет выглядеть так
Можете усложнить проверку, если вам надо проверять именно значение ключа, то в условие WHERE добавьте еще и AND shop_product_params.value='1' и проверку на ваше значение равное 1, например. Хотя, лично для себя, проверяю ключ только на наличие, если требуется ответ типа ДА/НЕТ. Нет ключа - НЕТ. Есть ключ - ДА, а значение - фиолетово. Хотя это дело личное и кому как нужно, тот так и делает.
Большое спасибо за ответ. Только это не совсем то что нужно. Нужно с точности до наоборот. Если у товара нет доп параметра, то нужно сделать ЧПУ в виде ID, а если есть то не трогать ЧПУ))) какой тогда будет запрос?))
Ну замените знак равенства на знак неравенства перед 'curl' или как там у вас условия проверки должны выполняться. Основной запрос от этого не поменяется вообще никак.
phpmyadmin в принципе принимает разные варианты (потренируйтесь сначала на SELECT'ах)
= или наоборот !=
LIKE или наоборот будет NOT LIKE
Запросы SQL написаны почти человеческим языком. ОБНОВИТЬ таблицу и конкретные данные в этой таблице и УСТАНОВИТЬ новые значения такие-то КОГДА что-то равно (или не равно) чему-то И... т.д.
Для начала попробовал первый ваш вариант. Сделал для одного товара доп параметр
В phpmyadmin сделал запрос
Читайте внимательнее. curl - это не значение. curl - это и есть key в данном случае. Я же написал, что проверяем по наличию ключа, а не по его значению. Если проверять значения, то надо запрашивать еще и value определенного параметра или только value в зависимости от того насколько value уникально для вашего случая и достаточно ли только его для подобной выборки.
Для случая key = curl (key - это name, а curl - это value)
Не знаю как объяснить более подробно. Вот скриншот структуры таблицы shop_product_params
В моем примере доп. параметр curl=id. А у вас key=curl. Разница огромна. curl будет в разных колонках таблицы в вашем и моем случае. У меня это name, а у вас value.
И снова читаем первый пост и запрос, где все четко написано и про name и про value.
Конечно не сработало, потому что создали не то, что надо для этого примера. Перевернули ровно с ног на голову. Доп. параметр должен называться curl, а не key, а чему он будет равен дело ваше. Напишите curl=curl и точно не промажете. :)))
Ну я же говорил что вообще не шарю (от слова совсем) :)
Написал curl=curl и все получилось ) Спасибо!
Постепенно разберетесь. Да и phpmyadmin подскажет, если что.
А можете еще подсказать по
= или наоборот !=
LIKE или наоборот будет NOT LIKEМ
Мне нужно чтобы урл не обновлялся у товаров с доп параметром. Я попробовал запрос:
UPDATE shop_product LEFT JOIN shop_product_params ON shop_product.id = shop_product_params.product_id SET shop_product.url = shop_product.id WHERE shop_product_params.name != 'curl'
Но не прошло, может есть еще какие то варианты?
проверял так
1 товару сделал чпу test-1 и добавил доп параметр.
2 товару сделал чпу test-2 и ничего не добавлял. Сделал запрос UPDATE shop_product LEFT JOIN shop_product_params ON shop_product.id = shop_product_params.product_id SET shop_product.url = shop_product.id WHERE shop_product_params.name != 'curl'
Поидеи у товара 1 должен был чпу сохраниться, а у 2 скинуться но ничего не произошло. Написано затронуто 0 строк (((
Если =, то url обновится у тех, у кого доп. параметр имеет такой key
Если !=, то url обновится у тех, у кого доп. параметры не имеет такого key, но их записи есть в таблице shop_product_params т.е. есть любые другие доп. параметры.
Если записи о товаре в этой таблице нет и доп. параметров у товара вообще нет, то ничего и не произойдет.
LIKE и NOT LIKE работают аналогично.
Ааа, теперь понятно в чем дело. Мне то нужно чтобы обновлялись все товары у которых нет доп параметра url но могут быть другие.
Если доп параметр есть и = url то обновлять чпу ненужно.
Изначально было так как в цитате и запрос четко такие ситуации отрабатывает. А именно, если у товара есть параметр, то заменить URL на ID. Потом вы перевернули всё как-то по-другому. Под ваши новые условия задачи запросы будут иные.
Объясняю:
UPDATE shop_product SET url = id WHERE 1 - делается по крону 1 раз в минуту для того, чтобы обновить ID ко всем товарам которые автоматически импортируются от поставщика (их 20 тысяч). Делаю я это для того, чтобы через robots.txt закрыть все товары в ЧПУ которых есть числа от индексации.
Далее вступает в работу контент менеджер. Он открывает товары, делает товарам нормальное название, пишет нормальное и УНИКАЛЬНОЕ описание - приводит карточку товара в человеческий вид, а не тот что идет от поставщика и стоит на тысячах магазинов. Далее для этих товаров (примерно 50 шт. в день) задается ЧПУ из названия. Этот товар разрешается к индексации т.к. в ЧПУ таких товаров нет цифр.
Поэтому и нужно как то для таких товаров поставить запрет на обновление командой UPDATE shop_product SET url = id WHERE 1 , чтобы эти отредактированные товары попадали в индекс поисковиков.
Вот в этом то вся и проблема.
Каким образом вы обеспечиваете разрешение/запрет на индексацию товара?
disallow:/product/*0
disallow:/product/*1
disallow:/product/*2
disallow:/product/*3
disallow:/product/*4
disallow:/product/*5
disallow:/product/*6
disallow:/product/*7
disallow:/product/*8
disallow:/product/*9
Таким образом все что находится в /product/ и имеет в ЧПУ цифры запрещено к индексации.
/product/bla-bla индексируется т.к. в нем нет цифр.
Лично у меня вызывает вопросы запрос, который выполняется по крону раз в минуту. Уверен, что можно обойтись без этого на уровне массового запрета карточки товара к индексации через <meta name =“robots” content=”noindex,nofollow”/> и открытия её только после простановки определенного ключа контент-менеджером. Одна строка в шаблоне и никакой возни с запросами в БД напрямую. Зачем запрос в базу по крону? Мне пока непонятно.
Этот запрос растет из придуманного "технологического" процесса, а сам процесс нацелен на недопускание индексации таких товаров. Вот я и начал распутывать клубок с начала, а не с того места, с которого началась эта тема =)
Процесс придуман был очень "оригинальный". Думаю, что если товары проходят "модерацию", то надо закрыть все карточки и открывать по ключу вручную. Интересно глянуть на sitemap этого проекта. Придуманая связка URL = ID тут непричем даже будет.
Всё так. Только думаю топикстартеру все же надо чтобы новые товары были видны на сайте, но при этом не индексировались. Первое что приходит в голову - убрать все из robots и воспользоваться noindex (или как там его), отмодерированным товарам проставлять доппараметр, а в уже в шаблоне проверять наличие этого доппараметра и в случае отсутствия ставить noindex. Но, конечно, надо знать детали. Может еще какие заковырки имеются.
Я имел ввиду закрыть все карточки от индексации мета-тегом, а не совсем от просмотра.
А, ну если так, то да. В общем, концептуально направление в любом случае должно быть такого плана.
Напишите лучше мне в telegram, потому что похоже у вас всё запутано основательно как-то или я просто не вижу всей картины целиком.
Я могу добавить <meta name =“robots” content=”noindex,nofollow”/> это не проблема. Вопрос в том, как потом открыть какой то товар не удаляя этот тег.
Тег этот автоматически удалится у разрешенных к открытию товаров и товар пойдет в индексацию, после некоторых действий контент-менеджера. Разве не такая цель?
Да, такая конечно. А каких именно действий если я прямо сейчас такой тег добавлю?
Что-то прям сложно все. Уже подумываю забить на это дело. Пусть индексируются, просто в будущем у товаров будет меняться ЧПУ - старый вылетать - не очень хорошо для SEO вроде.
Скорее наоборот. Я тут накидал в index.html примерно смысл.
Товар не будет индексироваться пока менеджер не создаст ему доп.параметр index=1 например. Наличие этого параметра убирает мета-тег запрета индексации роботом товарных страниц. Никакие URL на ID по крону менять для этого не надо. С плагином управление доп.параметрами вообще все можно сделать красиво в виде списка значений yes/no.
Или так
Мышкой клац и товар пошел в поиск. По умолчанию можно поставить no и чуть-чуть поменять условие в коде.
А можно с вами кроме как по телеграму еще как-то связаться? Может сделаете за оплату? Чтобы по умолчанию все товары не индексировались. Вообще все в том числе которые сейчас есть на сайте.
Добавить нужный код в нужный шаблон. И просто сказать что прописать в доп параметрах чтобы товар начал индексироваться)
Код уже написан выше. Поставить его надо в index.html после строки примерно такого вида
Товару, который хотите разрешить к индексации, надо прописать доп. параметр index=yes.
Спасибо, сейчас буду пробовать. Надеюсь сработает. Так действительно проще чем с УРЛ заморачиваться.
Работает или нет надо смотреть в исходном коде HTML страницы товара в браузере. Там либо будет нужный мета-тег, либо нет, в зависимости от наличия доп. параметра index у товара.
Есс-но все старые блокирующие конструкции в robots.txt надо убрать.
Да, похоже что работает. Поставил доп. параметр и мета тег исчез. Спасибо огромное. Вы мне ужасно сильно помогли!
Надеюсь это решение вам подойдет и поисковые роботы будут вести себя так, как вам надо.
Вы в следующий раз лучше сразу описывайте задачу целиком от и до. Так проще искать решение, когда целиком видна вся картина, а не какие-то кусочки и части.
На будущее советую купить плагин Управление доп. параметрами для категорий, товаров и страниц. Он сильно упростит работу с параметрами как в редакторе товара, так и в таблице товаров в категории массово с группами выбранных товаров. Грубо говоря в "один клик" проставить параметры для 10 товаров - запросто.