Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

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


traffs

Recommended Posts

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

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

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

Для начала о структуре базы с этими самыми рекомендуемыми товарами. Она имеет имя вида 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

Надіслати
Поділитися на інших сайтах


  • 1 year later...

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

Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.