Бывают такие ситуации в процессе импорта, когда товары добавились, но чпу для них не сгенерировано. Совсем не обязательно у каждого товара прописывать вручную, решается все достаточно просто:
include(dirname(__FILE__).'/config/config.inc.php'); include(dirname(__FILE__).'/init.php'); $defaultLanguage = _PS_LANG_DEFAULT_; function createMultiLangField($field) { $languages = Language::getLanguages(false); $res = array(); foreach ($languages as $lang) $res[$lang['id_lang']] = $field; return $res; } $products = Db::getInstance()->ExecuteS('SELECT p.id_product, pl.link_rewrite FROM ps_product p, ps_product_lang pl WHERE p.id_product = pl.id_product AND pl.link_rewrite = ""'); foreach($products as $row){ $product = new Product($row['id_product']); $product->link_rewrite = createMultiLangField(Tools::link_rewrite($product->name[$defaultLanguage])); $product->update(); } |
Этот хак подходит для 1.4 Для 1.5 возможно требуеются небольшие корректировки.
Сохраняем вышеуказанный код в отдельный файл и выкладываем в корень сайта. Запускаем скрипт и проверяем результат.
Если вдруг вам надо перегенерировать чпу у всех товаров, даже у тех что уже заполнено, нужно убрать условие в конце запроса
$products = Db::getInstance()->ExecuteS('SELECT p.id_product, pl.link_rewrite FROM ps_product p, ps_product_lang pl WHERE p.id_product = pl.id_product AND pl.link_rewrite = ""'); |
Похожие
Подскажите, что конкретно надо убрать, какое условие? На 1.4.11 не работает
Этот хак работает по принципу создания ЧПУ для всех товаров, у которых оно не прописалось, без условия, строка с запросом будет выглядеть так:
$products = Db::getInstance()->ExecuteS(‘SELECT p.id_product, pl.link_rewrite FROM ps_product p, ps_product_lang pl WHERE p.id_product = pl.id_product’);
500 ошибка