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


Редирект-301 с "вышедших из обращения" товаров и категорий


  • Вы не можете ответить в тему
В этой теме нет ответов

#1 badisoft

    Продвинутый пользователь

  • Assistent vsupport.club
  • PipPipPip
  • 5075 сообщений
Репутация: 786
Мастер

Отправлено 07 November 2012 - 10:23 PM

Модуль дает возможность ставшие не актуальными категории и товары отредиректить на другие товары/категории, чтобы не пропадали зря накопившиеся в интернете ссылки на эти категории и товары.
Посмотреть, как оно выглядит можно по ссылкам http://cpu.badisoft....Book/Pro-seria/ (категория) и http://cpu.badisoft....BYY-Lingvo.html (товар).
Собственно, никто не мешает сделать редирект с категории на товар или наоборот, а также на какую-то дополнительную страницу или вообще использовать внешнюю ссылку :).



1. копируем файлы category_redirect.tpl.html и product_redirect.tpl.html в core/tpl/user/[шаблон]

comment: Шаблоны простейшие, просто как пример. Кому надо - кисти и краски в руки.


2. в файле admin.php

2.1 после второго (!) вхождения строки (т.е. вставляем в поиск эту строку и первую найденную пропускаем)


", meta_description='".xToText(trim($_POST["meta_d"]))."', meta_keywords='".xToText(trim($_POST["meta_k"])).


вставляем строку


"', redirect_enable=".(isset($_POST["redirect_enable"]) ? 1 : 0).", redirect_url='".xToText(trim($_POST["redirect_url"])).


2.2 перед строкой


$row = catGetCategoryById($_GET["categoryID"]);


вставляем


$fields =array (
array ('Field' => 'redirect_enable', 'Type' => 'tinyint(1)', 'Default' => '0'),
array ('Field' => 'redirect_url', 'Type' => 'varchar(255)', 'Default' => 'NULL'));
$data = mysql_query("desc ".CATEGORIES_TABLE);
while ($row[] = mysql_fetch_assoc($data));
foreach ($fields as $field)
{
$flag = true;
foreach ($row as $cur_row) if ($field['Field'] == $cur_row['Field']) {$flag=false; break;}
if ($flag) mysql_query("ALTER TABLE ".CATEGORIES_TABLE." ADD ".$field['Field']." ".$field['Type']." DEFAULT ".$field['Default']);
}


2.3 после строк

echo ADMIN_SHOW_PRODUCT_IN_SUBCATEGORY;
?></label></td></tr>


вставляем


<tr>
<td align="left"><input type="checkbox" name='redirect_enable' id="redirect_enable" <?php if ($row["redirect_enable"] == 1){?>checked<?php }?>></td>
<td align="left"> &nbsp;<?php echo "Redirect this category to &nbsp;";?>
<input type="text" name="redirect_url" value="<?php echo $row["redirect_url"];?>" style="width: 590px;" class="textp" placeholder="/other/category/"></td>
</tr>


2.4 перед вторым (!) вхождением строки (т.е. вставляем в поиск эту строку и первую найденную пропускаем)


$updatedValues = ScanPostVariableWithId(array("option_value", "option_radio_type"));


вставляем


db_query("UPDATE ".PRODUCTS_TABLE." SET redirect_enable=".(isset($_POST["redirect_enable"]) ? 1 : 0).", redirect_url='".xToText(trim($_POST["redirect_url"]))."' WHERE productID=".(int)$productID);


2.5 перед строкой


$product = GetProduct($_GET["productID"]);


вставляем


$fields =array (
array ('Field' => 'redirect_enable', 'Type' => 'tinyint(1)', 'Default' => '0'),
array ('Field' => 'redirect_url', 'Type' => 'varchar(255)', 'Default' => 'NULL'));
$data = mysql_query("desc ".PRODUCTS_TABLE);
while ($row[] = mysql_fetch_assoc($data));
foreach ($fields as $field)
{
$flag = true;
foreach ($row as $cur_row) if ($field['Field'] == $cur_row['Field']) {$flag=false; break;}
if ($flag) mysql_query("ALTER TABLE ".PRODUCTS_TABLE." ADD ".$field['Field']." ".$field['Type']." DEFAULT ".$field['Default']);
}


2.6 перед строками (если брать только первую строку для поиска, то это второе вхождение)


<table class="adn"><tr><td class="separ"><img src="data/admin/pixel.gif" alt="" class="sep"></td></tr><tr><td class="se5"></td></tr></table>
<a href="#" onclick="upd(),document.getElementById('MainForm').submit(); return false" class="inl"><?php


вставляем


<table class="adn"><tr>
<td align="left"><input type="checkbox" name='redirect_enable' id="redirect_enable" <?php if ($product["redirect_enable"] == 1){?>checked<?php }?>></td>
<td align="left"> &nbsp;<?php echo "Redirect this category to &nbsp;";?>
<input type="text" name="redirect_url" value="<?php echo $product["redirect_url"];?>" style="width: 590px;" class="textp" placeholder="/other/product.html"></td>
</tr></table>



3. в файле category_functions.php

в функции catGetCategoryById

после строки


" products_count_admin, sort_order, viewed_times, allow_products_comparison, allow_products_search, ".


вставляем


"redirect_enable, redirect_url, ".





4. в файле category.php

перед строками (т.е. в самом-самом конце файла)


}
}
?>


вставляем


if($category['redirect_enable'])
{
header("HTTP/1.1 301 Moved Permanently");
$smarty->assign("main_content_template", "category_redirect.tpl.html");
}



5. в файле product_detailed.php

после строки


$smarty->assign("main_content_template", "product_detailed.tpl.html");


вставляем


if($product['redirect_enable'])
{
header("HTTP/1.1 301 Moved Permanently");
$smarty->assign("main_content_template", "product_redirect.tpl.html");
}

Прикрепленные файлы


  • 2
http://cpu.badisoft.ru (тестовый сайт), http://badisoft.ru (модули)