Перейти к содержанию
traffs

Скрипт для случайного заполнения рекомендуемых товаров в OpenCart

Рекомендуемые сообщения

Всем приВет.Искал в интернете , каким образом можно реализовать перелинковку в магазине и наткнулся на интересную инфу.Кто нибудь испытывал предложенный скрипт.

Поскольку мне лениво подбирать к каждому товару интернет-магазина рекомендуемые, а внутренней перелинковки хочется — был написан чудо-скрипт, заполняющий табличку рекомендуемых товаров рандомными значениями.

Как водится, нет ничего более постоянного, нежели временное и скрипт стал использоваться все чаще. Дописывать далее лень, лично мне функциональности хватает. Однако может кому-то и пригодится для доработки.

Для начала о структуре базы с этими самыми рекомендуемыми товарами. Она имеет имя вида DB_PREFIX_product_related, где DB_PREFIX — префикс таблиц, который вы выбирали при установке OpenCart. Структура таблицы проста, как мысли ежика — всего два поля: product_id и related_id. Логично — в product_id хранится значение самого товара, а в related_id — рекомендуемого ему. Выборка рекомендуемых товаров для товара с идентификатором ID осуществляется запросом запросом типа:

SELECT related_id FROM dbprefix_product_related WHERE product_id='ID';

Собственно скрипт:

$host = 'localhost'; //Хост с базой
$db       = 'database_name'; //Имя базы
$login = 'login'; //Логин в базу
$passw = 'passwd'; //Пароль к базе
$prefix = 'oc'; //Префикс таблиц базы
$sqlink = mysql_connect($host, $login, $passw); //Подключились к базе
if (!($sqlink)){die('Could not connect to database! - '.mysql_error());} //Остановились, если ошибка
mysql_query('SET NAMES utf8'); /*Установили кодировку. Почему-то без этого выдавало непонятно-что.
База в utf8, сравнение utf8_general_ci*/
$db = mysql_select_db($db);
//Чистим базу, исключая одну из категорий, которая лично мне нужна:)
//Если Вам не нужна, уберите WHERE NOT manufacturer_id='41'
$delres = mysql_query("SELECT product_id FROM ".$prefix."_product WHERE NOT manufacturer_id='41'");
while ($del = mysql_fetch_row($delres)){
mysql_query("DELETE FROM ".$prefix."_product_related WHERE product_id='".$del[0]."'");
}
//Получаем все товары с статусом "Включен". Если у Вас ИД статуса какой-либо другой, замените.
$res = mysql_query("SELECT product_id FROM ".$prefix."_product WHERE status='1' AND NOT manufacturer_id='41'");
$prods = array();
//Добавляем в массив все идентификаторы товаров.
while ($a = mysql_fetch_row($res))
{
$i = (int)$a[0];
$prods[]=$i;
}
//Для каждого идентификатора товара формируем массив из 9 уникальных элементов
foreach ($prods as $i)
{
$arr = array();
for ($k=1;$k<=9;$k++)
{
$s = $prods[rand(0,count($prods)-1)];
while (in_array($s, $arr))
{
$s = $prods[rand(0,count($prods)-1)];
}
$arr[]=$s;
}
//Ну и записываем в базу
foreach ($arr as $ael){
mysql_query("INSERT INTO ".$prefix."_product_related (product_id, related_id) VALUES ('".$i."','".$ael."')");
}
}

Нашёл здесь http://itforce.org.ua

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Поскольку не программист, требуются пояснения. Это скрипт, я так понимаю, надо как то назвать и положить в какую-то папку. Или же его надо внутри какого-то файла вписать?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.