Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Модули для DLE » Адаптация Kylshop 5.3 для DLE 15

Адаптация Kylshop 5.3 для DLE 15


     10.12.2022    Модули для DLE    329    9 комментариев

Краткая информация о модуле (хаке)

Автор: 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.

Начнем с установки. Начинаем установку по инструкции автора через управление плагинами. В процессе установки выскочит одна ошибка в замене строчек кода. Правится просто.
Найти
$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 . "&currency=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).
Всем успехов!

9 комментариев

LazyDev
PHP-developer

LazyDev - 10 декабря 2022 23:58 -

либо DLE 15.3 с ограниченным функционалом на php 7.x + Kylshop.

Никакого ограниченного функционала на 15.3 и php 7.4 нет.

Мой блог: LazyDev.pro

Помогаю с решением проблем на платной основе.

svbox
Юзер

svbox - 11 декабря 2022 00:05 -


У Вас явно больше опыта, спорить не стану, тогда не могли бы Вы пояснить к чему эта надпись?

LazyDev
PHP-developer

LazyDev - 11 декабря 2022 00:10 -

svbox, потому что написали от балды. Я проверял билд 15.3 когда было заявлена поддержка 7.2 и выше. Там была ошибка, после чего я отписал. На php 7.4 её нет. celsoft вообще не хотел менять системные требования но под напором пал и поднял как требовалось этого. Но проверять ниже видно им было уже лень, хотя на сайте на странице сис требований написано 7.4 и выше

Мой блог: LazyDev.pro

Помогаю с решением проблем на платной основе.

svbox
Юзер

svbox - 11 декабря 2022 00:32 -

Спасибо, буду знать!

dj-avtosh
PHP-developer

dj-avtosh - 12 декабря 2022 20:46 -

Эта "надпись" многим испортила жизнь) Особенно с ионкуб))

ЯД: 41001679231462
Заказы в telegram (ремонт модулей, оптимизация нагрузок и т.п.): @blob42
В телегу писать сразу задачу и бюджет.

LazyDev
PHP-developer

LazyDev - 12 декабря 2022 23:48 -

dj-avtosh, ионкуб сам себе портил жизнь не выпуская более 2 лет обновления.

Мой блог: LazyDev.pro

Помогаю с решением проблем на платной основе.

svbox
Юзер

svbox - 13 декабря 2022 02:18 -

dj-avtosh,
Не могли бы вы пояснить суть комментария с IonCube? Мой уровень знаний php остановился в районе линейного программирования на php 5 лет 15 назад. У меня был сайт на php fusion 6, для которого я написал много дополнений. Я знаю для чего нужен ион куб, просто не совсем понимаю взаимосвязь между "надписью" и ионкуб.

LazyDev
PHP-developer

LazyDev - 13 декабря 2022 02:51 -

svbox, потому что долгое время ioncube не поддерживал 8.1. И не все авторы модулей обновили поддержку своих продуктов под 8.1 из-за кубика.

Мой блог: LazyDev.pro

Помогаю с решением проблем на платной основе.

svbox
Юзер

svbox - 13 декабря 2022 03:10 -

Спасибо, стало понятно.
Раньше, конечно, все было не так. По крайне мере на моей памяти. В то время в принципе понятия "платный модуль" и закрытый исходный код было мало распространено. Писали, кто, как мог, для своих проектов и выкладывали потом свои новшества. Про какой-нибудь ajax вообще единицы слышали. Смотрю, теперь все иначе.

Чтобы комментировать - войдите или зарегистрируйтесь на сайте
наверх