Модуль Полезные модификации Prestashop 1.7

Тема в разделе "PrestaShop", создана пользователем fortuner, 25 окт 2017.

XEvil 4.0 Релиз Состоялся!
Информация :
Приветствую гость, обрати внимание! Темы которые закреплены в разделах, в скором времени будут откреплены. Правила раздела PrestaShop

(Не актуальные темы) Каталоги:Модули PrestaShop 1.7Модули PrestaShop 1.5 - 1.6Шаблоны PrestaShop 1.7Шаблоны PrestaShop 1.5 - 1.6
(Не актуальные темы) Поиск / Запросы:Модули PrestaShop 1.7Модули PrestaShop 1.5 - 1.6Шаблоны PrestaShop 1.7Шаблоны PrestaShop 1.5 - 1.6
Полезная информация:Поддержка и помощь c PrestaShopУбираем ПрестаТраст, стучалки и прочую рекламуСовместные покупки модулей и шаблоновПеревод Prestashop и модулей
Модераторы: trace
  1. fortuner

    fortuner

    Регистр.:
    26 июн 2012
    Сообщения:
    606
    Симпатии:
    1.079
    Делимся полезными модификациями, хаками, допиленными модулями (или самописными) для Prestashop 1.7.
    Предлагаю скопировать правила из темы модулей Prestashop, чтобы в теме было проще ориентироваться.
    Правила:
    1. Увидели чужую ошибку - исправьте :)
    2. Запросы "а сделайте мне то-то" пожалуйста пишите в тему "Помощь с Prestashop".
    3. Не спамьте, пусть раздел будет соответствовать своему названию :)
    4. Не пишите "спасибо, должен навеки вечные!", просто нажмите "спасибо".
     
    evgenij.sobolev, deus_blr, zen1 и 9 другим нравится это.
  2. _sashok

    _sashok PrestaShop Expert

    Регистр.:
    15 июл 2011
    Сообщения:
    2.208
    Симпатии:
    3.810
    Как сделать на фронте сайта валюту по-умолчанию всегда ГРН, а в админке хранить стоимость товаров в любой удобной вам (EUR, USD и т.п.:(

    просто создайте файл оверрайдов
    /override/classes/Tools.php

    с содержанием:

    Код:
    <?php
    class Tools extends ToolsCore
    {
        public static function setCurrency($cookie)
        {
            if (Tools::isSubmit('SubmitCurrency') && ($id_currency = Tools::getValue('id_currency'))) {
                /** @var Currency $currency */
                $currency = Currency::getCurrencyInstance((int) $id_currency);
                if (is_object($currency) && $currency->id && !$currency->deleted && $currency->isAssociatedToShop()) {
                    $cookie->id_currency = (int) $currency->id;
                }
            }
    
    
    //webpc
    if (!(int)$cookie->id_currency) $cookie->id_currency = 1;        // 1 - это номер валюты, которую делаем на фронте постоянной по-умолчанию (как правило это ГРН, а в настройках локализации сайта выбираем любую другую валюту по умолчанию, например USD или EUR)
    
            $currency = null;
            if ((int) $cookie->id_currency) {
                $currency = Currency::getCurrencyInstance((int) $cookie->id_currency);
            }
            if (!Validate::isLoadedObject($currency) || (bool) $currency->deleted || !(bool) $currency->active) {
                $currency = Currency::getCurrencyInstance(Configuration::get('PS_CURRENCY_DEFAULT'));
            }
    
            $cookie->id_currency = (int) $currency->id;
            if ($currency->isAssociatedToShop()) {
                return $currency;
            } else {
                // get currency from context
                $currency = Shop::getEntityIds('currency', Context::getContext()->shop->id, true, true);
                if (isset($currency[0]) && $currency[0]['id_currency']) {
                    $cookie->id_currency = $currency[0]['id_currency'];
    
                    return Currency::getCurrencyInstance((int) $cookie->id_currency);
                }
            }
    
            return $currency;
        }
    }
    
    P.S. работает в том числе и на самых новых ядрах 1.7.6.х
     
    apskiper, InMix, vitos1401 и 11 другим нравится это.
  3. petachok

    petachok Постоялец

    Регистр.:
    15 янв 2010
    Сообщения:
    53
    Симпатии:
    41
    Добрый!
    Как в престе 1.7 удалить пустые корзины которые нельзя уже выделить галочкой и не нужные заказы?
    Может у кого плагин есть или придётся лезть всё таки в таблицу!
    Просто может есть удобный способ раз проверил заказ и не нужный или брошенный нажал и удалил!
     
  4. Foma67

    Foma67 Постоялец

    Регистр.:
    8 сен 2013
    Сообщения:
    69
    Симпатии:
    151
    https://www.nulled.cc/threads/281632/page-26#post-2779562
     
    fortuner, Kolfg и petachok нравится это.
  5. petachok

    petachok Постоялец

    Регистр.:
    15 янв 2010
    Сообщения:
    53
    Симпатии:
    41
    Спасибо!
    Он у меня есть!
    Но в бесплатном можно удалять 1 за 1 раз и нету возможности убрать скопом!
    Например скажем так 200 или 500 пустых через него трудно убирать!
    Тогда нужно про версию покупать!
     
    Kolfg и _sashok нравится это.
  6. ded63

    ded63 Создатель

    Регистр.:
    5 июн 2013
    Сообщения:
    20
    Симпатии:
    19
    Ваш_сайт/themes/classic/modules/ps_contactinfo/nav.tpl

    строки 29 - 37

    Код:
          {l
            s='Call us: [1]%phone%[/1]'
            sprintf=[
              '[1]' => '<span>',
              '[/1]' => '</span>',
              '%phone%' => $contact_infos.phone
            ]
            d='Shop.Theme.Global'
          }
    Заменить на

    Код:
    {l s='Call us:' d='Shop.Theme.Global'} <a href="tel:{$contact_infos.phone}">{$contact_infos.phone}</a>
     
    Foma67, vitos1401, mr.stitch и 3 другим нравится это.
  7. _sashok

    _sashok PrestaShop Expert

    Регистр.:
    15 июл 2011
    Сообщения:
    2.208
    Симпатии:
    3.810
    для улучшения страницы редактирования товара, т.е. назначение связей товаров на категории:

    полное отображение всей длины названия категории + перенос галочки для указания дефолтной категории

    добавить в конец файла:

    /YourAdmin/themes/new-theme/public/theme.css

    Код:
    /* webPCstudio */
    .product-page .category-tree-overflow {
        /*white-space: normal !important; */
        overflow: visible !important;
    }
    
    .product-page .category-tree-overflow ul.category-tree label .default-category {
        top: 4px;
        left: -40px;
    }
     
    InMix, leha128, NightHunter и 5 другим нравится это.
  8. evgenij.sobolev

    evgenij.sobolev

    Регистр.:
    8 дек 2015
    Сообщения:
    261
    Симпатии:
    358
    Отличный метод, но, похоже он не совместим с модулем доставки новой почтой от Elcommerce.
    Неправильно считается стоимость доставки и комиссия наложенного платежа:

    Screenshot_3.png
     
  9. fortuner

    fortuner

    Регистр.:
    26 июн 2012
    Сообщения:
    606
    Симпатии:
    1.079
    С модулем ElCommerce много чего несовместимо. Чем допиливать и перепиливать, лучше заказать на стороне за 100-200 баксов или написать самому.
     
    evgenij.sobolev нравится это.
  10. evgenij.sobolev

    evgenij.sobolev

    Регистр.:
    8 дек 2015
    Сообщения:
    261
    Симпатии:
    358
    А есть ли какие-то аналоги их модуля доставки Новой почтой?
    Заказывать модуль с нуля дороговато выходит..., а купить стабильное, готовое решение за адекватную стоимость - это можно.
     
  11. sergiykhd

    sergiykhd Prestashop Expert

    Регистр.:
    17 апр 2013
    Сообщения:
    1.211
    Симпатии:
    1.023
    Кстати, кто-то реализовывал Autocomplete для города с привязкой области?
    Пытаюсь реализовать - может кому-то будет тоже интересно - подключайтесь...

    Конечно, все это дело должно легко подгружаться.

    Код:
    <!DOCTYPE html>
    
    <html>
    <head>
      <title>Untitled</title>
      <meta charset="utf-8">
      <style type="text/css">
      </style>
      <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
      <link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/themes/smoothness/jquery-ui.css">
      <script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.11.4/jquery-ui.min.js"></script>
      <script>
    $(function() {
    var $_searchCountry = $("#search-country");
    var country = {
        1: "Ukraine",
        2: "Germany",
        3: "France",
        4: "Spain",
        5: "Sweden",
        6: "USA",
        7: "Canada",
        8: "Moldova",
        9: "Belarus",
        10: "Poland"
    };
    $.ui.autocomplete.prototype._renderItem = function(ul, item) {
        var re = new RegExp($.ui.autocomplete.escapeRegex(this.term), "i");
        var t = item.label.replace(re, "<span style='font-weight:600;color:#FF0000;'>" + "$&" + "</span>");
        return $("<li></li>").append("<a>" + t + "</a>").appendTo(ul)
    };
    $_searchCountry.autocomplete({
        source: function(request, response) {
            var matcher = new RegExp($.ui.autocomplete.escapeRegex(request.term), "i");
            response($.map(Object.keys(country), function(item) {
                return {
                    value: country[item],
                    label: country[item]
                }
            }).filter(function(item) {
                return matcher.test(item.label)
            }))
        }
    });
    var city = {
        "1": {
            "country": 1,
            "name": "Kiev"
        },
        "2": {
            "country": 3,
            "name": "Paris"
        },
        "3": {
            "country": 4,
            "name": "Madrid"
        },
        "4": {
            "country": 6,
            "name": "Houston"
        },
        "5": {
            "country": 7,
            "name": "Montreal"
        },
        "6": {
            "country": 8,
            "name": "Кишинев"
        },
        "7": {
            "country": 9,
            "name": "Minsk"
        },
        "8": {
            "country": 10,
            "name": "Warsaw"
        },
        "100": {
            "country": 1,
            "name": "Львов"
        },
        "101": {
            "country": 1,
            "name": "Николаев"
        },
        "103": {
            "country": 1,
            "name": "Переяслав-Хмельницкий"
        },
        "104": {
            "country": 1,
            "name": "Каменец-Подольский"
        },
        "105": {
            "country": 1,
            "name": "Donetsk"
        },
        "106": {
            "country": 1,
            "name": "Kharkov"
        },
        "107": {
            "country": 1,
            "name": "Луцк"
        },
        "108": {
            "country": 1,
            "name": "Poltava"
        },
        "109": {
            "country": 1,
            "name": "Черновцы"
        },
        "299": {
            "country": 1,
            "name": "Чернигов"
        },
        "333": {
            "country": 1,
            "name": "Чернигов"
        }
    }
    var $_searchCity = $("#search-city");
    $_searchCity.autocomplete({
        source: function(request, response) {
            var matcher = new RegExp($.ui.autocomplete.escapeRegex(request.term), "i");
            var land = $_searchCountry.val();
            land = Object.keys(country).filter(function(item) {
                return country[item] == land
            });
            var town = Object.keys(city).filter(function(item) {
                return city[item].country == land
            });
            response($.map(town, function(item) {
                return {
                    value: city[item].name,
                    label: city[item].name
                }
            }).filter(function(item) {
                return matcher.test(item.label)
            }))
        },
        minLength: 0
    });
    });
      </script>
    </head>
    
    <body>
    <label>Search country:</label>
    <input id="search-country" type="text" />
    <label>Search city:</label>
    <input id="search-city" type="text" />
    
    </body>
    </html>
    
     

    Вложения:

    Belena27089, leha128, Anvar6120 и 3 другим нравится это.