Краткая информация о модуле (хаке)
Автор: https://kylaksizov.com/
Версия DLE:
15.2
К сожалению, обновления данного модуля уже давно не выпускаются автором, но возможно кому-то будет нужно прикрутить его к последним версиям DLE. Понятно, что магазин на DataLife Engine это в принципе не самая хорошая мысль, но тем, кто привык к этой CMS (как я, например) будет полезно, так как хороших модулей магазинов для DLE не так много, особенно для последних версий. Ниже я расскажу, как заставить работать Kylshop 5.3 в DLE 15.2.
Во-первых, хочется сразу отметить, что речь идет именно о DLE 15.2. Последняя версия DLE 15.3 настоятельно просит включить поддержку php 8.1 со стороны хостинга, Kylshop с этой версией работать не будет, ему подавай php 7.x, поэтому варианта два либо DLE 15.2 + Kylshop, либо DLE 15.3 с ограниченным функционалом на php 7.x + Kylshop. Выбирайте сами. Моя конфигурация DLE 15.2 + Kylshop 5.3 на php 7.4.
Начнем с установки. Начинаем установку по инструкции автора через управление плагинами. В процессе установки выскочит одна ошибка в замене строчек кода. Правится просто.
Найти
Заменить
После установки удаляем папки yandexkassa и yandexmoney по адресу engine/modules/kylshop/payments/. Это методы оплаты, которые уже давно не работают и будут вешать систему при оформлении заказа. Оставляем только Free Kassa, но и в ней нужно внести корректировки. Открываем engine/modules/kylshop/payments/freekassa.php.
Найти
Заменить
Найти
Заменить
Теперь нужно поправить всем известный контейнер #dle-content. В последних версиях его наконец-то убрали. Поэтому нужно внести корректировки в файл templates/имяшаблона/js/kylshop.js, что бы правильно работали AJAX фильтры модуля.
Найти #dle-content и заменить на имя своего родительского контейнера, в котором новости (товары). В файле две замены. Например, если вы пользуетесь bootstrap, ваша верстка выглядит примерно так:
То #dle-content нужно заменить на #shop-items Есть и второй вариант. Наоборот ничего не менять в kylshop.js, а наоборот вставить id="#dle-content" в родительский контейнер.
С этими изменениями модуль будет работать. Бонусом можно прикрутить сортировку по цене товара в стандартный инструмент сортировки новостей DLE.
engine/init.php
Найти
Заменить
engine/modules/functions.php
Найти
Заменить
Там же, чуть ниже к строке
Добавить запятую и вставить после
На этом все. Не забываем чистить кеш DLE и кеш браузера (если меняли kylshop.js).
Всем успехов!
Во-первых, хочется сразу отметить, что речь идет именно о DLE 15.2. Последняя версия DLE 15.3 настоятельно просит включить поддержку php 8.1 со стороны хостинга, Kylshop с этой версией работать не будет, ему подавай php 7.x, поэтому варианта два либо DLE 15.2 + Kylshop, либо DLE 15.3 с ограниченным функционалом на php 7.x + Kylshop. Выбирайте сами. Моя конфигурация DLE 15.2 + Kylshop 5.3 на php 7.4.
Начнем с установки. Начинаем установку по инструкции автора через управление плагинами. В процессе установки выскочит одна ошибка в замене строчек кода. Правится просто.
Найти
$posts_fields = "SELECT p.id, p.autor, p.date, p.short_story, CHAR_LENGTH(p.full_story) as full_story, p.xfields, p.title, p.category, p.alt_name, p.comm_num, p.allow_comm, p.fixed, p.tags, e.news_read, e.allow_rate, e.rating, e.vote_num, e.votes, e.view_edit, e.editdate, e.editor, e.reason{$user_select}{$full_s_addfield}";
Заменить
$posts_fields = "SELECT p.id, p.autor, p.date, p.short_story, CHAR_LENGTH(p.full_story) as full_story, p.xfields, p.title, p.category, p.alt_name, p.comm_num, p.allow_comm, p.fixed, p.tags, p.kylshop, p.filter, p.price, e.news_read, e.allow_rate, e.rating, e.vote_num, e.votes, e.view_edit, e.editdate, e.editor, e.reason{$user_select}{$full_s_addfield}";
После установки удаляем папки yandexkassa и yandexmoney по адресу engine/modules/kylshop/payments/. Это методы оплаты, которые уже давно не работают и будут вешать систему при оформлении заказа. Оставляем только Free Kassa, но и в ней нужно внести корректировки. Открываем engine/modules/kylshop/payments/freekassa.php.
Найти
$sign = md5($this->config_this->freekassa_id.":".$total.":".$this->config_this->freekassa_word1.":".$id);
Заменить
$sign = md5($this->config_this->freekassa_id.":".$total.":".$this->config_this->freekassa_word1.":RUB:".$id);
Найти
$freekassa_url = "http://www.free-kassa.ru/merchant/cash.php?m=" . $this->config_this->freekassa_id . "&oa=" . $total . "&o=" . $id . "&s=" . $sign . "&us_cekret=" . $secret_key . $email;
Заменить
$freekassa_url = "https://pay.freekassa.ru/?m=" . $this->config_this->freekassa_id . "&oa=" . $total . "&o=" . $id . "&s=" . $sign . "¤cy=RUB&us_cekret=" . $secret_key . $email;
Теперь нужно поправить всем известный контейнер #dle-content. В последних версиях его наконец-то убрали. Поэтому нужно внести корректировки в файл templates/имяшаблона/js/kylshop.js, что бы правильно работали AJAX фильтры модуля.
Найти #dle-content и заменить на имя своего родительского контейнера, в котором новости (товары). В файле две замены. Например, если вы пользуетесь bootstrap, ваша верстка выглядит примерно так:
<div class="row" id="shop-items">
<div class="col-4">товар 1</div>
<div class="col-4">товар 2</div>
<div class="col-4">товар 3</div>
</div>
То #dle-content нужно заменить на #shop-items Есть и второй вариант. Наоборот ничего не менять в kylshop.js, а наоборот вставить id="#dle-content" в родительский контейнер.
С этими изменениями модуль будет работать. Бонусом можно прикрутить сортировку по цене товара в стандартный инструмент сортировки новостей DLE.
engine/init.php
Найти
$allowed_sort = array (
'date',
'rating',
'news_read',
'comm_num',
'title' );
Заменить
$allowed_sort = array (
'date',
'rating',
'news_read',
'comm_num',
'title',
'price' );
engine/modules/functions.php
Найти
$allowed_sort = array ('date', 'rating', 'news_read', 'comm_num', 'title' );
Заменить
$allowed_sort = array ('date', 'rating', 'news_read', 'comm_num', 'title', 'price' );
Там же, чуть ниже к строке
'title' => array ( 'name' => $lang['sort_by_title'], 'value' => "title", 'direction' => "desc", 'image' => "" )
Добавить запятую и вставить после
'price' => array ( 'name' => "цене", 'value' => "price", 'direction' => "desc", 'image' => "" )
На этом все. Не забываем чистить кеш DLE и кеш браузера (если меняли kylshop.js).
Всем успехов!