:::: МЕНЮ ::::

OpenCart 2.3.x — вывод ссылки на скачивание файла в карточке товара и в разделе товаров

Недавно пришлось модернизировать один инет-магазин на движке OpenCart 2.3.0.2 (rs.4).

Нужно было вывести ссылку на скачивание файла в карточке товара, например, инструкция в формате PDF.

Нашел в интернете инструкцию (автору, как обычно — респект), но мне ее пришлось немного поправить. По-этому предлагаю данный вариант, который я использовал на версии OpenCart 2.3.0.2.

1. Открываем файл catalog/model/catalog/product.php и ищем строку

public function getTotalProductSpecials() {

Перед ней размещаем код:

2. Теперь открываем файл catalog/controller/product/product.php и ищем строку

$this->model_catalog_product->updateViewed($this->request->get['product_id']);

Перед ней размещаем код:

3. В этом же файле, находим строку

public function review() {

И перед ней размещаем код:

4. Теперь, непосредственно в теме, открываем файл catalog/view/theme/default/template/product/product.tpl и в любом месте (я выбрал место перед ценой), вставляем код:

В итоге вот, что получилось

opencart-skachat-pdf

 

UPD 14/05/18: вывод прямой ссылки на скачивание.

Как говорится, по многочисленным просьбам — выводим прямую ссылку на скачивание.

Дописываем п.2 catalog/controller/product/product.php

Дописываем п.4 catalog/view/theme/default/template/product/product.tpl

 

UPD 26/12/18: ссылка на скачивание файла в разделе товаров

1. Открываем файл catalog/model/catalog/category.php и ищем функцию

public function getTotalCategoriesByCategoryId($parent_id = 0) {

после этой функции вставляем

2. Открываем файл catalog/controller/product/category.php и ищем строку

foreach ($results as $result) {

2.1. перед этой строкой вставляем

2.2. после этой строкой вставляем

3. Открываем файл catalog/view/theme/default/template/product/category.tpl и ищем строку

и после нее вставляем

Untitled-261218


57 Комментариев

  • Ответить Ростислав |

    Очень пригодился ваш код, спасибо!
    Только для seo pro изменил ссылку в контроллере такого вида
    ‘href’ => $this->url->link(‘account/download/download’. ‘&download_id=’ . $result['download_id'])
    и прописать в таблице url_alias account/download/download => downloads

  • Ответить Максим |

    А что значит и прописать в таблице url_alias account/download/download => downloads ? это где надо сделать не совсем понял

  • Ответить Максим |

    У меня формируется ссылка типа сайт/tufli_3/?download_id=1

    но скачивания не происходит. не пойму пока почему(

    • Ответить Damon |

      Смириться и принять OpenCart какой он есть — ужасный. Точнее, не он сам ужасен, а все те «дописки» и плагины, которые пишут вольные разработчики. Главное каждый обвиняет другого, но только не свой плагин, типа, «У вас же все работало, пока не установили новый плагин?!». Был у меня один сайт, на котором, я так и не смогу подружить три плагина. Один работает нормал. Добавил второй, пришлось подпилить первый. Ну а третий поломал первые два :))

  • Ответить Михаил |

    А как реализовать чтобы была не ссылка на скачивание того же PDF а просто путь до него? Хочу в fancybox в модальном окне открывалось для чтения.

      • Ответить Александр |

        Добрый вечер! Подскажите пожалуйста глупому человеку, где на странице создания товара мне можно прикреплять файлы. Все установил, версия опенкарта 2302?

        • Ответить Damon |

          1. Заходим в админку
          2. Создаем файл для загрузки: Каталог \ Загрузки \ Добавить. Даем имя и загружаем файл.
          3. Прикрепляем файл к товару: Каталог \ Товары \ Редактировать. Вкладка Связи. Пункт Загрузки. Кликаем в поле ввода и начинаем вводить имя из п.2. После того, как появились варианты с выбором, выбираем нужный файл.
          4. Готово.

      • Ответить Владимир |

        Добрый день.
        Подскажите пожалуйста, как вы вывели ссылку на скачивание в категории товаров?
        Спасибо!!!

          • Владимир |

            Добрый день.
            Да, подскажите пожалуйста, как вы это сделали?

          • Damon |

            Не вопрос. Только надо мне вспомнить, что я там кодил. До пятницы постараюсь рассказать.

          • Damon |

            Инструкция для версии 1.5

            Итак:
            1. /catalog/controller/product/category.php

            ищем строку

            if ($result['image']) {

            добавляем перед ней

            2. /catalog/model/catalog/category.php

            ищем функцию

            добавляем сразу после нее

            3. /catalog/view/theme/default/template/product/category.tpl

            3.1. ищем строку

            < ?php echo $product['description']; ?>

            сразу после нее добавляем

            3.2. ищем строку

            добавляем после нее

            4. Обновляем кэш и бегом проверять в раздел с товарами

          • Владимир |

            Добрый день!
            Спасибо большое!!!
            Только у меня нет html +=, это же в category.tpl ?
            Там нет.

          • Владимир |

            И вот что в итоге — Notice: Indirect modification of overloaded property ControllerProductCategory::$data has no effect in /system/storage/modification/catalog/controller/product/category.php on line 217

          • Владимир |

            Notice: Indirect modification of overloaded property ControllerProductCategory::$data has no effect in /system/storage/modification/catalog/controller/product/category.php on line 217 Parse error: syntax error, unexpected ‘?’ in /system/storage/modification/catalog/view/theme/default/template/product/category.tpl on line 118

          • Damon |

            Да, посмотрел сейчас и сдается мне, что файлы вы мне прислали от версии 2.3, так?
            Дело в том, что у меня сейчас под рукой нет движка 2.3 и попробовать не на чем

          • Владимир |

            Давайте это сделаю я и пришлю на почту все доступы?

  • Ответить Alexandr |

    Что то у меня ошибку бьет

    public function getTotalProductSpecials() {Warning: Cannot modify header information — headers already sent by (output started at /home/c/cd19979/test231/public_html/system/storage/modification/catalog/model/catalog/product.php:1) in /home/c/cd19979/test231/public_html/catalog/controller/extension/module/viewed.php on line 32

    вероятно это из за модуля Complete SEO, но честно говоря без понятия, еще протестирую на голом openart 2.3.0.2

  • Ответить Марианна |

    тот и тот вариант. у меня получился один, просто открывает пдф без возможности ее скачать.

    • Ответить Damon |

      Я подозреваю, что PDF у вас открывается в браузере, а не предлагает сохранить на диск, так?
      Если это так, то просто в браузере измените ассоциацию с PDF файлами. Выберите Открыть в приложении.

  • Ответить Марианна |

    по вашей ссылки где два варианта открыть или скачать без настройки этого в браузере работает. вот я и интересовалась как сделать ту ссылку при нажатии на которую идет сразу скачка.

    • Ответить Damon |

      Марианна, дайте ссылку на сайт, где можно посмотреть, что у вас там происходит не так.

  • Ответить Ирина |

    На сайте вы находитесь с помощью какого-то БРАУЗЕРА. Как он настроен, так и будет действовать. Какой-то сразу скачает, а какой-то (как в вашем случае) откроет для просмотра.
    В этом случае есть возможность скачать:
    - найти пиктограмму (типа дискетки), при наведении на которую всплывет подсказка «СКАЧАТЬ»
    - нажать Ctrl + s
    ——
    P.S. Это не я такая умная, а внуки рассказали, а им нянечка…Сохранить PDF Edge

  • Ответить Марианна |

    вы издевайтесь? на примере ссылке все работает без каких либо настроек браузера! я без вас знаю как сохранить, но это не каждому человеку объяснить который будет качать инструкцию с сайта.

  • Ответить Ирина |

    Может быть тогда файлы предоставлять архивом, а не PDF?
    Архивы сразу качаются.
    Это не проблема ОпенКарта / программирования / администрирования.

  • Ответить Павел |

    У Вас опубликовано решение для вывода ссылки на файл для скачивания в самой карточке товара. А как можно вывести ссылку для скачивания у товара, но уже на странице категории? Т..е на странице списка товаров?

          • Сергей |

            Подскажите, когда примерно ожидать инструкции по данному способу? :) Спасибо!

          • Damon |

            Сергей, пробуйте.
            Если не затруднит, отпишитесь потом, получилось ли

          • Сергей |

            Спасибо за реализацию, но, к сожалению, у меня не получилось. После внесения всех изменений, формируется ссылка вида site.ru/download/install.pdf.yQspqmahNa18No2A7MG4karZw4n2jORP но при попытке перейти по ней выдает ошибку 404. Вероятно потому, что фактически в коре сайта нет папки download и должен сработать редирект, но он не настроен. Может SEO PRO этому как-то мешает, но предыдущий формат ссылок работает…

        • Ответить Damon |

          Павел, Сергей, приветствую! Вы просили вывод ссылки на странице товаров.
          Сорри за ожидание. Конечно же можно все вывести. Вот, что получилось
          https://opencart.damonlsd.ru/opencart/index.php?route=product/category&path=20_27
          Это товары в категории
          У одного товара есть инструкция для скачивания, у другого товара ее нет.
          Ну и выводим ссылку на скачивание.

          Посмотрите, если подойдет, то будем в коде ковыряться :)

          • Сергей |

            Damon, наверное, не в ты ветку нажал ответ, извините :)

            У меня проблема возникла по части Вашей дополненной инструкции, чтобы файл был доступен по ссылке, вида site.ru/download/file.pdf

            Все сделал по новой инструкции, но не получилось. Ещё раз продублирую сообщение с описанием проблемы, заранее большое спасибо за ответ:
            «Спасибо за реализацию, но, к сожалению, у меня не получилось. После внесения всех изменений, формируется ссылка вида site.ru/download/install.pdf.yQspqmahNa18No2A7MG4karZw4n2jORP но при попытке перейти по ней выдает ошибку 404. Вероятно потому, что фактически в корне сайта нет папки download и должен сработать редирект, но он не работает. Может SEO PRO этому как-то мешает, но предыдущий формат ссылок работает…»

          • Damon |

            У вас точно в корне сайта нет папки download?
            А если не секрет, то куда у вас подобные файлы попадают?

          • Сергей |

            Посмотрел, файлы сохраняются в /system/storage/download

          • Damon |

            Поправил код из пункта «Дописываем п.2 catalog/controller/product/product.php».
            Можете брать из него код и заменить у себя на сервере.
            Дело в том, что в версии 1.5 был один путь до папки с файлами, а в версии 2.3 уже другой.

  • Ответить vikaharkov |

    У меня версия ОК 2.3.0.2
    Вставляю коды все, но ничего не вышло — белая страница открывается.
    Сначала никак не реагирует, а после добавления первой части
    «Дописываем п.2 catalog/controller/product/product.php»
    появляется белая страница при открытии карточки товара.

    Помогите разобраться пожалуйста

Оставить комментарий

  • Вставить изображение