На нашем сайте мы используем cookie для сбора информации технического характера и обрабатываем IP-адрес вашего местоположения. Продолжая использовать этот сайт, вы даете согласие на использование файлов cookies. Здесь вы можете узнать, как мы пользуемся файлами cookies.
Я согласен
логотип upread.ru

Добавляем функционал избранное к опенкарт



Хотя в заголовке и указано, что для опенкарт, но в принципе должно работать на любой кмс. Рассмотрим функционал добавления в избранное, основанный на сессиях и базе данных. Упрощенно схема такая: клиент заходит – пишется его сессия – специальный скрипт отслеживает нажатия на кнопку избранное – заносит в базу их. Но самом деле все это не так уж и сложно.



Ремарка: в опенкарт есть закладки, но только для зарегистрированных пользователей. Это ограничение можно обойти, но тогда избранные становятся общими для всех. В общем, проще написать необходимый функционал самостоятельно.

Итак, приступим. Сначала создаем табличку в нашей базе данных с названием liked и 4-мя полями: id (int(11)), sesion (text), tovar (text), dat(text). Теперь на страничке товара добавляем кнопку «в избранное» и скрипт обработчик её.

<script>
function saveform (id)
{
      $.ajax({
                type: 'post',
               url: "../ajax/liked.php", 
                data: {'referal':id},
                response: 'text',
                success: function(data){			
	if (data==0)	 alert ("Удалено из избранного!");				
		else	 alert ("Добавлено в избранное!");
            }	
})
}
</script>
<button type="button" id="button-heart" onclick="saveform('<?php echo $product_id; ?>')">
Здесь функция saveform() на вход принимает ид товара (здесь пример конретно для опенкарт, у вас мжет быть другой $product_id), обращается к некоему загадочному файлу liked.php, а затем выводит в случае успеха алерт с сообщением. А вот примерный текст файла liked.php:

<?php
//подключаемся к базе
$db = @mysql_connect ("localhost","лог","пар");
mysql_select_db ("баз",$db);

//устанавливаем куки
$ses = $_COOKIE['PHPSESSID'];	
$referal = $_POST["referal"];//ид товара
  
$result = mysql_query("SELECT * FROM `liked` WHERE sesion = '$ses'") or die (mysql_error());
$num_ans=mysql_fetch_row ($result);

//если такого юзера нет
if ($num_ans==0) {
$dat = date("d-m-Y");
$db_referal = mysql_query("INSERT INTO `liked` (`id`, `sesion`, `tovar`, `dat`) VALUES ('', '".$ses."', '".$referal."', '".$dat."')") or die (mysql_error());	
echo 1;
}
	
else {
$result = mysql_query("SELECT * FROM `liked` WHERE sesion = '$ses'") or die (mysql_error());
$row=mysql_fetch_array($result);
$tovar = $row["tovar"];	
$pos = strpos($tovar, $referal);

//если такого товара нет
if ($pos === false) {
$result = mysql_query("SELECT * FROM `liked` WHERE sesion = '$ses'") or die (mysql_error());
$row=mysql_fetch_array($result);
$tovar = $row["tovar"];	
$tovar = $tovar.",".$referal;
$clean = trim($tovar, ",");
$result = mysql_query("UPDATE `liked` SET tovar = '$clean' WHERE sesion = '$ses'") or die (mysql_error());	
echo 1;	
}	
//если есть такой товар, то удаляем его
else {
$tovar2 = str_replace($referal, "", $tovar);
$tovar2 = preg_replace('/([!();:,.?])\\1+/', '$1', $tovar2);
$clean = trim($tovar2, ",");	
$result = mysql_query("UPDATE `liked` SET tovar = '$clean' WHERE sesion = '$ses'") or die (mysql_error());	
echo 0;
}
}
?>
Комментарии в листинге довольно подробные, хочется обратить внимание только на пару моментов: получающиеся значения 1 или 0 – это нужно для дальнейшей обработки полученных результатов запроса (пример взят с рабочего сайта), также строки с операторами preg_replace и тд в конце – это для удобства, так как в одной ячейке tovar может храниться много товаров.

Вот, собственно, и все. Правда, надо бы добавить вывод всех товаров в избранном на отдельной страничке – но это тема уже другой статьи – там я одновременно покажу, как делать дополнения для опенкарта. Есть вопросы? Задавайте. За небольшую плату также помогу вам с настройкой, расширением функционала опенкарт, пишите на up777up@yandex.ru.


Автор этого материала - я - Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.

тегистатьи IT, php, javascript, скрипты, opencart





Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.




Урок 8. Очередь для отправки email в Laravel
Комментарии к SQLite


© upread.ru 2013-2023
При перепечатке активная ссылка на сайт обязательна.
Задать вопрос
письмо
Здравствуйте! Вы можете задать мне любой вопрос. Если не получается отправить сообщение через эту форму, то пишите на почу up777up@yandex.ru
Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.