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

fortuner

Хранитель порядка
Регистрация
26 Июн 2012
Сообщения
631
Реакции
1.238
Делимся полезными модификациями, хаками, допиленными модулями (или самописными) для Prestashop 1.7.
Предлагаю скопировать правила из темы модулей Prestashop, чтобы в теме было проще ориентироваться.
Правила:
1. Увидели чужую ошибку - исправьте :)
2. Запросы "а сделайте мне то-то" пожалуйста пишите в тему "Помощь с Prestashop".
3. Не спамьте, пусть раздел будет соответствовать своему названию :)
4. Не пишите "спасибо, должен навеки вечные!", просто нажмите "спасибо".
 
HOW-TO Add FREE and fully working Facebook messenger on 1.7.3

1. Go to your facebook page settings > Messenger platform and ADD your website URL to Whitelisted domains.
2. Find your facebook numeric page ID at Для просмотра ссылки Войди или Зарегистрируйся and replace "YOUR_ID" with numeric.
3. Put code to "/public_html/themes/your_theme/templates/_partials/" header.tpl or toofer.tpl

Код:
<div id="fb-root"></div>
<script>(function(d, s, id) {
  var js, fjs = d.getElementsByTagName(s)[0];
  if (d.getElementById(id)) return;
  js = d.createElement(s); js.id = id;
  js.src = 'https://connect.facebook.net/ru_RU/sdk.js#xfbml=1&version=v2.12&autoLogAppEvents=1';
  fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));</script>
<div class="fb-customerchat"
  attribution="setup_tool"
  page_id="YOUR_ID">
</div>

Enjoy :)


У меня возникают проблемы с отображением изображений с помощью этого кода. Бывают идеи? Это может быть тема, а не проблема с кодом?
 
Добавление превью корзины на Prestashop 1.7 как было на версии 1.6
правиться все это в файле themes/(название вашей темы)/module/ps_shoppingcart/ps_shoppingcart.tpl

Код:
<div class="body cart-hover-content">
<ul>
{foreach from=$cart.products item=product}
<li class="cart-wishlist-item">
{include 'module:ps_shoppingcart/ps_shoppingcart-product-line.tpl' product=$product}
</li>
{/foreach}
</ul>
<div class="cart-subtotals">
{foreach from=$cart.subtotals item="subtotal"}
<div class="{$subtotal.type}">
<span class="label">{$subtotal.label}</span>
<span class="value">{$subtotal.value}</span>
</div>
{/foreach}
</div>
<div class="cart-total">
<span class="label">{$cart.totals.total.label}</span>
<span class="value">{$cart.totals.total.value}</span>
</div>
<div class="cart-wishlist-action">
<a class="cart-wishlist-viewcart" href="{$cart_url}">view cart</a>
<a class="cart-wishlist-checkout" href="{$urls.pages.order}">{l s='Check Out' d='Shop.Theme.Actions'}</a>
</div>
</div>

и в файле themes/(название вашей темы)/module/ps_shoppingcart/ps_shoppingcart-product-line.tpl

Код:
{if $product.images}
<div class="shoppingcart_img">
<img src="{$product.images.0.bySize.small_default.url}" title="{$product.name}"/>
</div>
{/if}

А в какое именно место в ps_shoppingcart-product-line.tpl?
 
Конечно можно, но это не ко мне. Все проблемы со стандартным фильтром я решил с помощью Advanced Search 4 :)

Вот еще одна плюшка - добавляем картинку, цену и наличие в Аякс-поиск
В файле
\modules\ps_searchbar\ps_searchbar.js
Заменить целиком на это:
Код:
$(document).ready(function () {
    var $searchWidget = $('#search_widget');
    var $searchBox    = $searchWidget.find('input[type=text]');
    var searchURL     = $searchWidget.attr('data-search-controller-url');

    $.widget('prestashop.psBlockSearchAutocomplete', $.ui.autocomplete, {
        _renderItem: function (ul, product) {
            var line = $("<li>")
                .append($("<a>").addClass("searchLine")
                    .append('<img src="'+product.cover.small.url+'" class="searchImg">') // Добавляем картинку
                    .append($("<div>").addClass("searchDescription") // Это блок со всеми остальными данными товара
                        .append($("<p>").html(product.name).addClass("searchProductname")) // Имя товара
                        .append($("<p>").html(product.price).addClass("searchPrice")) // Цена
                        .append($("<p>").html(product.availability_message).addClass("searchAvailability")) // Наличие
                        )
                ).appendTo(ul);
            return line;
        }
    });

    $searchBox.psBlockSearchAutocomplete({
        source: function (query, response) {
            $.post(searchURL, {
                s: query.term,
                resultsPerPage: 10
            }, null, 'json')
            .then(function (resp) {
                response(resp.products);
            })
            .fail(response);
        },
        select: function (event, ui) {
            var url = ui.item.url;
            window.location.href = url;
        },
    });
});
90650b7e96.jpg

Теперь осталось немного подправить стили, и будет красота :)
Добавилось всего пять-шесть строчек. За это мне нравится 1.7

Спасибо, он работает очень хорошо, но не показано "In stock"
 
Подскажите как реализовать вывод подкатегорий (иконки) на странице родительской категории.

1.png
 
Отключаем форму обращения в регистрации и быстром заказе.
LmGpqvLFekDEl2.png
Редактируем файл: \classes\form\CustomerFormatter.php
Закомментируем или удаляем следующие строки кода:
PHP:
$genderField = (new FormField)
    ->setName('id_gender')
    ->setType('radio-buttons')
    ->setLabel(
        $this->translator->trans(
            'Social title', [], 'Shop.Forms.Labels'
        )
    )
;
foreach (Gender::getGenders($this->language->id) as $gender) {
    $genderField->addAvailableValue($gender->id, $gender->name);
}
$format[$genderField->getName()] = $genderField;

Редактируем файл: \classes\controller\FrontController.php
Также комментим или удаляем:
PHP:
$cust['gender'] = $this->objectPresenter->present(new Gender($cust['id_gender']));
unset($cust['id_gender']);

Я делаю через бесплатный модуль - Для просмотра ссылки Войди или Зарегистрируйся
 

Вложения

  • genderbender_0.0.2.zip
    18,1 KB · Просмотры: 30
Реально рабочий и простой способ Как поменять артикул заказа (order->reference) на ID заказа(order->id) в Prestashop 1.7

Итак, что нам требуется сделать:
В файле /classes/order.php ищем функцию:
public static function generateReference()
{
return strtoupper(Tools::asswdGen(9, 'NO_NUMERIC'));
}

И меняем на:
public static function generateReference()
{
$last_id = Db::getInstance()->getValue('
SELECT MAX(id_order)
FROM '._DB_PREFIX_.'orders');
return str_pad((int)$last_id + 1, 9, '000000000', STR_PAD_LEFT);

}

У меня на Prestashop: 1.7.3.4 получилось, вышеописанные тут ранее методы не работали
Это решение нашел Для просмотра ссылки Войди или Зарегистрируйся
 
Реально рабочий и простой способ Как поменять артикул заказа (order->reference) на ID заказа(order->id) в Prestashop 1.7

Итак, что нам требуется сделать:
В файле /classes/order.php ищем функцию:
public static function generateReference()
{
return strtoupper(Tools::asswdGen(9, 'NO_NUMERIC'));
}

И меняем на:
public static function generateReference()
{
$last_id = Db::getInstance()->getValue('
SELECT MAX(id_order)
FROM '._DB_PREFIX_.'orders');
return str_pad((int)$last_id + 1, 9, '000000000', STR_PAD_LEFT);

}

У меня на Prestashop: 1.7.3.4 получилось, вышеописанные тут ранее методы не работали
Это решение нашел Для просмотра ссылки Войди или Зарегистрируйся

всё тут есть
и через оверрайды решение более красивое:
Для просмотра ссылки Войди или Зарегистрируйся
 
всё тут есть
и через оверрайды решение более красивое:
Для просмотра ссылки Войди или Зарегистрируйся

Оба решения не очень. В магазинах с большим потоком заказов может привести к дублированию. Самое правильное забить на референс, а во всех нужных местах выводить вместо него ID заказа.
 
Назад
Сверху