Ответы пользователя по тегу Prestashop
  • Как переопределить контроллер модуля в Presta Shop?

    IvanIlyasov
    @IvanIlyasov
    Познаю мир
    Вот тут подробно расписано и показано на видео:
    nemops.com/overriding-modules-controllers-in-prest...
    Ответ написан
    Комментировать
  • Как в PrestaShop создать купон/ваучер через API?

    IvanIlyasov
    @IvanIlyasov
    Познаю мир
    Как пример:
    $cart_rule = new CartRule();
                $cart_rule->code = $discountCode;
                foreach (Language::getLanguages(false) as $language)
                $cart_rule->name[$language['id_lang']] = Configuration::get('COUPON_DESC');
                $cart_rule->id_customer = (int)$customer->id;
                $cart_rule->free_shipping = false;
                $cart_rule->quantity = 1;
                $cart_rule->quantity_per_user = 1;
                $cart_rule->reduction_currency = (int)$this->context->cart->id_currency;
                $cart_rule->reduction_percent = Configuration::get('COUPON_DISCOUNT');
                $cart_rule->date_from = date('Y-m-d H:i:s', time());
                $cart_rule->date_to = date('Y-m-d H:i:s', time() + (3600 * 24 * Configuration::get('COUPON_DAY')));
                $cart_rule->active = 1;
    
            if ($cart_rule->add())
            {
                Mail::Send(Configuration::get('PS_LANG_DEFAULT'), 'coupon', 'Вам купон на скидку', array('{shop_name}' => Configuration::get('PS_SHOP_NAME'), '{firstname}' => $customer->firstname, '{lastname}' => '', '{email}' => $customer->email, '{code}' => $discountCode), $customer->email, NULL, strval(Configuration::get('PS_SHOP_EMAIL')), strval(Configuration::get('PS_SHOP_NAME')), NULL, NULL, dirname(__FILE__).'/mails/');
                die(true);
            }
    Ответ написан
  • Почему после изменения css в prestashop не применяются стили?

    IvanIlyasov
    @IvanIlyasov
    Познаю мир
    Если вы редактируете css-файлы модуля. То они могут быть переопределены вашим шаблоном.
    /ваш_сайт/themes/ваш_шаблон/modules/модуль/templates/css/css-файл.css
    Ответ написан
    Комментировать
  • Как правильно подключить смс оповещение к сайту?

    IvanIlyasov
    @IvanIlyasov
    Познаю мир
    Лучше установите специальный модуль. Их достаточно много.
    Например: www.presta-sms.com/ru/index.html (в Украине тоже работает)
    Ответ написан
    Комментировать
  • Как понять какой шаблон использован модулем?

    IvanIlyasov
    @IvanIlyasov
    Познаю мир
    Обычно в
    your_site/modules/your_module/views/templates/front/

    или бывает переопределено в теме: your_site/themes/your_theme/modules/your_module/

    Чтобы узнать какой файл нужен (стопудовый способ):
    1. Cкачиваете модуль на комп
    2. Устанавливаете программу Folder Find Text (или подобную, эта под Windows прога)
    3. Заходите на ваш сайт (желательно через Chrome)
    4. Наводите мышью на вашу корзину
    5. Кликаете Правой кнопкой мыши > Посмотреть код
    6. Копируете название id или class-а данного элемента и ищите в папке модуля с помощью Folder Find Text.
    7. Всё. Программа нашла нужный файл (или несколько)
    8. С помощью Notepad++ (или подобной) открываете файл/файлы по очереди
    9. Ищите всё то же название id или class-а через поиск (Ctrl+F) и сопоставляете с тем, что вы видите в "Инструменте разработчика Chrome"
    Ответ написан
    Комментировать
  • Как подключить плагин jQuery в Prestashop 1.6?

    IvanIlyasov
    @IvanIlyasov
    Познаю мир
    Да в header-е тоже можно, только обрамите ваш код в
    {literal}
    ваш код
    {/literal}
    Ответ написан
    Комментировать
  • Как сделать скидку при покупке нескольких товаров в PrestaShop?

    IvanIlyasov
    @IvanIlyasov
    Познаю мир
    Только искать подходящий модуль или писать свой. Такого в стандартном функционале Престы нет.
    Ответ написан
    Комментировать
  • Как отключить модуль на всех страницах, кроме главной в Prestashop?

    IvanIlyasov
    @IvanIlyasov
    Познаю мир
    Странно. То, что вы выше написали, должно работать.
    Ну.. попробуйте так:
    {if $smarty.server.REQUEST_URI == '/'}
           . . .
    {/if}

    А вообще, узнайте свой "пейдж нейм".
    Добавьте в tpl-файл переменную{$page_name} и перейдите на главную.
    Должно быть написано INDEX, тогда
    {if $page_name == 'index'}
           . . .
    {/if}
    должно работать.

    Если будет другое значение, тогда его и пропишите в tpl-файле:
    {if $page_name == 'ваше_значение'}
           . . .
    {/if}
    Ответ написан
    5 комментариев
  • Что не так с картинками PrestaShop?

    IvanIlyasov
    @IvanIlyasov
    Познаю мир
    Отключите ЧПУ. Вкладка: "Настройки" > "SEO и URL".
    После сделайте перегенерацию, но возможно, не понадобится.

    Если появятся изображения, то пинайте хостера, проблема на их стороне.

    Update:
    Была такая проблема, если на сервере был утановлен nginx. Используйте apache.
    Ответ написан
    1 комментарий
  • Почему возникает friendly-url-autogeneration-failed при генерации ЧПУ?

    IvanIlyasov
    @IvanIlyasov
    Познаю мир
    У вас что-то не так с csv-файлом импорта. Например, где-то присутствуют невидимые символы. Нужно чистить файл импорта и проверять на наличие всякой нечисти.
    Ответ написан
  • Как обойти проблему при переносе сайта с хоста на локалку?

    IvanIlyasov
    @IvanIlyasov
    Познаю мир
    Чтобы перенести Prestashop-сайт с хостинга на локалку. Надо сделать следующее:
    1) Очищаем кэш.
    Заходим в /prestashop/cache/smarty/cache и удаляем всё, кроме index.php и last_template_flush.
    Заходим в /prestashop/cache/smarty/cache/compile и удаляем всё, кроме index.php и last_flush.
    Заходим в /prestashop/themes/ваша_тема/cache и удаляем всё, кроме index.php.
    2) Меняем домен в БД.
    Меняем либо через текстовый редактор, либо заранее в phpMyAdmin.
    Таблица ps_shop_url колонки domain и domain_ssl. Меняете домен на localhost (без http:// и других лишних символов.)
    3) Меняем пути к БД в файле конфигурации.
    Открываем в текстовом редакторе /prestashop/config/settings.inc.php
    и меняем на следующее:
    define('_DB_SERVER_', 'localhost');
    define('_DB_NAME_', 'prestashop'); //название БД на локалке
    define('_DB_USER_', 'root'); //ваш логин к БД а локалке
    define('_DB_PASSWD_', '123'); //пароль к БД на локалке

    Если имя сервера отличается от localhost, то его нужно поменять на это значение.
    4) Загружаем на локальный сервер БД и и файлы сайта.
    5) Заходим в админку (в данном случае localhost/admin3200), вводим логин и пароль админа.
    6) Идем в Расширенные параметры >> Производительность, передергиваем Оптимизация Apache (выкл >> Сохранить, вкл >> Сохранить), тем самым обновляем .htaccess.
    Всё.

    Чтобы перенести обратно на хостинг, надо проделать всё тоже самое, только в конце еще один пункт:
    7) Идем в Настройки >> SEO и URL >> внизу страницы кнопка "Генерировать Robots.txt"
    Ответ написан
    Комментировать
  • Как правильно сделать редирект в Prestashop?

    IvanIlyasov
    @IvanIlyasov
    Познаю мир
    Начну с того, что так уж повелось, что в Престашоп, обычно, страницы оканчиваются без слеша.
    Так что, проверьте свои модули и сделайте так, чтобы они делали страницы без слеша на конце.

    Если всё-таки нужно сделать со слешем какую-то определенную статическую страницу, да так, чтобы не было дублей, то добавьте в .htaccess строку 301-ого (полного) редиректа для этой страницы:
    Redirect 301 /module /module/
    и чтобы эта запись не сбивалась при обновлении кеша, в файле ../ваш_сайт/classes/Tools.php
    найдите запись: fwrite($write_fd, "</IfModule>\n\n");(или подобную, примерно на 2500 строке).
    Ниже нее вставьте:
    fwrite($write_fd, "Redirect 301 /module /module/\n");


    Update:
    Придумал более глобальный и правильный вариант через mod_rewrite:
    в файле ../ваш_сайт/classes/Tools.php
    находим запись:
    fwrite($write_fd, 'RewriteRule ^api/(.*)$ %{ENV:REWRITEBASE}webservice/dispatcher.php?url=$1 [QSA,L]'."\n\n");

    после нее вставляем:
    fwrite($write_fd, "RewriteCond %{REQUEST_URI} ^/module$\n");
    fwrite($write_fd, "RewriteRule .+ ".(Configuration::get('PS_SSL_ENABLED') ? 'https://' : 'http://')."".$domain."/module/ [R=301,L]\n\n");

    Обновляем .htaccess передергиванием переключателя "Оптимизация Apache" в "Расширенные настройки >> Производительность"
    Ответ написан
    Комментировать
  • Перестали работать способы доставки и оплаты, какие файлы отвечают за это в PRESTASHOP?

    IvanIlyasov
    @IvanIlyasov
    Познаю мир
    "Нет доступных способов доставки" может высвечиваться если для данного способа доставки нет подходящей цены, или подходящих способов оплаты. Перепроверьте зависимость доставки от оплаты. То есть есть ли для данного диапазона цен доставка.
    Второе - пошаманить с зонами и регионами.
    Возможно, где-то в способах доставки указан, например, вес. И способ доставки зависит от веса.
    Вот тут кое что есть.

    Файлы:
    \controllers\admin\AdminCarriersController.php
    \controllers\admin\AdminShippingController.php
    \controllers\front\OrderController.php
    \classes\Carrier.php
    \classes\Cart.php
    Возможно, это не всё.

    Также не забывайте проверять, аккаунт с которого вы делаете заказ. Какая там установлена страна.
    Ответ написан
    Комментировать
  • Как поставить принудительную стоимость доставки?

    IvanIlyasov
    @IvanIlyasov
    Познаю мир
    Изменяя настройку бесплатной доставки в "Перевозчики" >> "Настройки" Вы задаете параметры для всех способов доставки, когда либо созданных. Верните настройки по умолчанию.
    И настройте правильный диапазон для каждого способа доставки отдельно.
    В одном из способов доставки, в шаге "Место и стоимость доставки" (по-моему 2-й шаг при создании/изменении способа доставки) выберите:
    ☑ "В соответствии с общей ценой."
    Будет применено если цена >= (больше или равно): 1 руб.
    Будет применено если цена < (меньше чем): 20000 руб.
    Europe (non-EU) (в эту зону входит Россия): 200 руб. (или сколько там у Вас доставка стоит)
    Потом добавляете еще один диапазон, нажав на кнопку "Добавить новый диапазон", и выбираете:
    Будет применено если цена >= (больше или равно): 20000 руб.
    Будет применено если цена < (меньше чем): 9999999 руб.
    Europe (non-EU) : 0 руб. (то есть бесплатно)
    Всё. Теперь для данного способа доставки у Вас будет так:
    Если в корзине товара меньше чем на 20000 то, доставка платная (в данном случае - 200 руб.), если больше 20000, то бесплатно.

    По аналогии настраиваете другие способы доставки.
    В вашем случае второй способ доставки будет с одним диапазоном:
    Будет применено если цена >= (больше или равно): 1 руб.
    Будет применено если цена < (меньше чем): 9999999 руб.
    Europe (non-EU): 300 руб. (или сколько там у Вас доставка стоит)

    Также, если Вы работаете не только по России, то не забывайте назначать цены и для других зон (и регионов).
    Настройка зон и регионов это уже отдельная тема.
    Ответ написан
  • Почему нет перевода Prestasop в файе локализации?

    IvanIlyasov
    @IvanIlyasov
    Познаю мир
    Именно так. Там у них непонятки с переводом.
    C русским, я вам помогу. Вот перевод с краудина + мои многочисленные правки: https://cloud.mail.ru/public/K7xB/DmN7MWAgo
    Ответ написан
    1 комментарий
  • Какой тип атрибута указать?

    IvanIlyasov
    @IvanIlyasov
    Познаю мир
    radio
    Ответ написан
    Комментировать
  • Нужно ли включить кеширование?

    IvanIlyasov
    @IvanIlyasov
    Познаю мир
    Кеш увеличивает скорость работы php-скриптов. За счет чего увеличивает скорость работы сайта.
    Всегда желателен к установке и включению на сайтах Prestashop. В общем, включайте, хуже не будет.
    Но я советую Memcached.
    Ответ написан
    2 комментария
  • Где хранятся фотки от товаров?

    IvanIlyasov
    @IvanIlyasov
    Познаю мир
    Где находится изображение можно посмотреть через код, например, в Хроме.
    ПКМ > Просмотреть код. Там уже ищите адрес изображения.
    Потом заходите в соответствующую директорию на хостинге.
    Это если по стандарту.

    В данном случае, для изображений товара, Prestashop сокращает/меняет url.
    Почти все изображения находятся в папке .../img в ней рандомно создаются папки с названием в 1-3 рандомных буквы. То есть папка с одной из частей изображений товаров может находиться в папке, например, .../img/I, или .../img/h, или .../img/v и т.д.
    В этих папках содержатся папки с названием в цифрах от 1 до 9 и в каждой из этих папок еще папки от 1 до 9 и т.д. получаются каталоги большой вложенности.

    Я вам советую:
    1. Скачать весь сайт на компьютер в отдельную папку.
    2. Узнать название файла изображения по инструкции выше.
    3. И найти данный файл в папке сайта.
    Ответ написан
    Комментировать
  • Как убрать из title название магазина?

    IvanIlyasov
    @IvanIlyasov
    Познаю мир
    classes/Meta.php

    строку:
    $ret['meta_title'] = (isset($metas['title']) && $metas['title']) ? $metas['title'].' - '.Configuration::get('PS_SHOP_NAME') : Configuration::get('PS_SHOP_NAME');

    заменить на:
    $ret['meta_title'] = (isset($metas['title']) && $metas['title']) ? $metas['title'] : '';

    Мета-тег generator обычно показывает с помощью чего был сделан сайт. Вот тут можно почитать подробнее.
    Удаляется в header.tpl в папке вашей темы, как уже ранее писал archelon
    Ответ написан
    1 комментарий