301 редирект

Приветствую)
Подскажите, пожалуйста, как сделать автоматический 301 редирект для товаров, которые имеют статус Скрыто на страницу родительской категории.

А не думали, что может быть корректнее будет там инфу разместить о том, что товар выведен из оборота и вот посмотрите другие? У страницы же трафик может быть, а 301 редирект укажет системе что страница перемещена, а там контент другой и ваше сео относительно этой страницы полететь может

Это нужно только для старых товаров, у которых уже нет трафика, проверяю кроме Статуса еще один статус (собственная доработка)
В модуле Мои изменения
if (AREA == ‘C’ && $product_data[‘status_1c’] == ‘R’ && $product_data[‘status’] == ‘H’) {
if (!empty($product_data[‘category_ids’])) {
foreach ($product_data[‘category_ids’] as $dop_category_id) {
fn_redirect(fn_url(“categories.view&category_id=” . $product_data[‘main_category’], “C”, fn_get_storefront_protocol(), $lang_code), false, true);
}
}
}
Но при таком подходе - не работает штатный обмен с 1С, как только встречается первый такой товар - импорт сбоит.

Подскажите, пожалуйста, как болле грамотно реализовать.
Спасибо!

1 лайк

Это вы хук какой-то используете?

Делайте в контроллере products.post.php

Что-то типа такого

<?php

use Tygh\Registry;

if (!defined('BOOTSTRAP')) { die('Access denied'); }

if ($mode == 'view') {
    $product_data = Tygh::$app['view']->getTemplateVars('product');

     if (AREA == 'C' && $product_data['status_1c'] == ‘R’ && $product_data['status'] == 'H') {
    if (!empty($product_data['category_ids'])) {
    foreach ($product_data['category_ids'] as $dop_category_id) {
    fn_redirect(fn_url("categories.view&category_id=" . $product_data['main_category'], "C", 
    fn_get_storefront_protocol(), $lang_code), false, true);
    }
    }
    }
}

Спасибо большое!

1 лайк