Кнопка "В закладки". Если товар в Закладках чтобы была неактивная или меняла цвет.

Установка, ошибки при работе с модулями, интеграции и прочее
Pufak11
Сообщения: 4
Зарегистрирован: 12.07.2022

Кнопка "В закладки". Если товар в Закладках чтобы была неактивная или меняла цвет.

Непрочитанное сообщение Pufak11 »

Вопрос в следующем. Есть в Опенкарт такая кнопка "В закладки"
Когда человек на нее нажимает то товар попадает в закладки и все остается на том же месте, кнопка остается кликабельная, мы при просмотре сайта через N период времени не помним есть ли у нас этот товар в закладках или нет.
Хотелось бы сделать чтобы если товар уже в закладках то или надпись была что Товар уже в закладках, или стиль кнопки менялся или чтобы она хотя бы была уже не кликабельная.
Помогите кто знает.
Аватара пользователя
nikifalex
Разработчик дополнений
Сообщения: 316
Зарегистрирован: 17.03.2022
Откуда: Россия
Поблагодарил: 4 раз
Спасибо: 38 раз
Контактная информация:

Re: Кнопка "В закладки". Если товар в Закладках чтобы была неактивная или меняла цвет.

Непрочитанное сообщение nikifalex »

Ну я вот знаю А чем именно помочь то?
Pufak11
Сообщения: 4
Зарегистрирован: 12.07.2022

Re: Кнопка "В закладки". Если товар в Закладках чтобы была неактивная или меняла цвет.

Непрочитанное сообщение Pufak11 »

Помощь в том где что поменять, что заработало или модуль посоветуйте рабочий. Я вчера попробовал сделать сам, но мое решение опенкарт не принял. 
Аватара пользователя
nikifalex
Разработчик дополнений
Сообщения: 316
Зарегистрирован: 17.03.2022
Откуда: Россия
Поблагодарил: 4 раз
Спасибо: 38 раз
Контактная информация:

Re: Кнопка "В закладки". Если товар в Закладках чтобы была неактивная или меняла цвет.

Непрочитанное сообщение nikifalex »

вариант 1:
в контроллерах добавьте новую переменную где будет результат проверки на наличие товара в закладках.
потом в шаблоне в зависимости от этой переменной меняйте отображение кнопки.
вариант 2:
напишите javascript код, который будет автоматически на странице находить кнопки "в закладки", брать оттуда код товара, делать запрос к сайту на предмет наличия товара в закладках и налету менять отображение кнопки уже после загрузки страницы.

конкретная реализация зависит от версии опенкарта, установленных модулей, используемого шаблона. Ориентировочное время на реализацию 1-3 часа (если это не шаблон journal3).
поэтому как то прямо сразу дать вам готовый код не представляется возможным.
 
Pufak11
Сообщения: 4
Зарегистрирован: 12.07.2022

Re: Кнопка "В закладки". Если товар в Закладках чтобы была неактивная или меняла цвет.

Непрочитанное сообщение Pufak11 »

Шаблон у меня Mango - первый вариант вчера пробовал, почему то опенкарт в позу стал, версия 3038 - буду думать дальше
Аватара пользователя
nikifalex
Разработчик дополнений
Сообщения: 316
Зарегистрирован: 17.03.2022
Откуда: Россия
Поблагодарил: 4 раз
Спасибо: 38 раз
Контактная информация:

Re: Кнопка "В закладки". Если товар в Закладках чтобы была неактивная или меняла цвет.

Непрочитанное сообщение nikifalex »

я не понимаю ваш сленг "встал в позу", "не принял" и т.п.

если какая-то ошибка, то нужен точный текст ошибки.
Pufak11
Сообщения: 4
Зарегистрирован: 12.07.2022

Re: Кнопка "В закладки". Если товар в Закладках чтобы была неактивная или меняла цвет.

Непрочитанное сообщение Pufak11 »

Я использовал такое решение, но оно не помогло. Ошибки как таковой не было, просто за место кнопки появилась html разметка

Код: Выделить всё

catalog\model\account\wishlist.php
    
    public function getAllWishlist() {
        if ($data = $this->getWishlist()) {
            $out = array();
            foreach ($data as $key => $value) {
                $out[] = $value['product_id'];
            }
            return $out;
        } else if (isset($this->session->data['wishlist'])) {
            return $this->session->data['wishlist'];
        }

    }
    
    


    
catalog\view\theme\default\template\product\category.tpl    


вместо:
<button type="button" data-toggle="tooltip" title="<?php echo $button_wishlist; ?>" onclick="wishlist.add('<?php echo $product['product_id']; ?>');"><i class="fa fa-heart"></i></button>


это:
    
    
     <button
                  <?php if(isset($AllWishlist)) { ?>
                      <?php if(in_array($product['product_id'], $AllWishlist)) { ?>
                          style="color: red"
                      <?php } ?>
                  <?php } ?>

type="button" data-toggle="tooltip" title="<?php echo $button_wishlist; ?>" onclick="wishlist.add('<?php echo $product['product_id']; ?>'); ChangeColor(this);"><i class="fa fa-heart"></i></button>       
            
                
                
                <script type="text/javascript">
          function ChangeColor(Element) {
            Element.style.color = 'red';
          }
          </script>
          


catalog\controller\product\category.php    

перед      
          
$data['breadcrumbs'] = array();          

это:
$this->load->model('account/wishlist');
        $data['AllWishlist'] = $this->model_account_wishlist->getAllWishlist();    
        
        
        
catalog\controller\product\product.php


перед

if ($product_info) {
            $url = '';
            
            
это:


$this->load->model('account/wishlist');
        $zol_wish = $this->model_account_wishlist->getAllWishlist();
        if (isset($product_id) && isset($zol_wish)) {
          if (in_array($product_id, $zol_wish)) {
            $data['AllWishlist'] = true;
          }
          }
          
          
          
          
catalog\view\theme\default\template\product\product.tpl


вместо:
<button type="button" data-toggle="tooltip" class="btn btn-default" title="<?php echo $button_wishlist; ?>" onclick="wishlist.add('<?php echo $product_id; ?>');"><i class="fa fa-heart"></i></button>
          
это:          
      <button 
            <?php if(isset($AllWishlist)) { ?>
                    style="color: red" 
                  <?php } ?> 
                 type="button" data-toggle="tooltip" class="btn btn-default" title="<?php echo $button_wishlist; ?>" onclick="wishlist.add('<?php echo $product_id; ?>'); ChangeColor(this);"><i class="fa fa-heart"></i></button>
                 
           
            <script type="text/javascript">
          function ChangeColor(Element) {
            Element.style.color = 'red';
          }
          </script>
Аватара пользователя
nikifalex
Разработчик дополнений
Сообщения: 316
Зарегистрирован: 17.03.2022
Откуда: Россия
Поблагодарил: 4 раз
Спасибо: 38 раз
Контактная информация:

Re: Кнопка "В закладки". Если товар в Закладках чтобы была неактивная или меняла цвет.

Непрочитанное сообщение nikifalex »

ну ищите ошибку в вашем решении. это будет проще чем скакать между модулями
Аватара пользователя
devimirochnik
Разработчик дополнений
Сообщения: 166
Зарегистрирован: 14.04.2022
Откуда: Россия
Мои дополнения: devimirochnik
Поблагодарил: 2 раз
Спасибо: 10 раз

Re: Кнопка "В закладки". Если товар в Закладках чтобы была неактивная или меняла цвет.

Непрочитанное сообщение devimirochnik »

Вы можете прислать сайт и продемонстрировать ваше решение? Чтобы можно было "потыкать лапками". Ну и вообще, в JS лучше использовать jQuery, вместо style лучше class.
Мои модули: Оптимизация, SEO, Скидки, Отчёты и прочее

Также могу заняться задачами по вашему сайту в рамках фриланса. График ненормированный, но дело делаю.
Ответить