Опубликовано Оставить комментарий

chart.js взаимодействие с php и ajax

php класс генерирующий массивы под chart.js class chartjs { public $barChardData; public function __construct() { $this->createData(); } public function getCount() { return count($this->barChardData[‘labels’]); } public function createData() { $this->barChardData = array(); $this->barChardData[‘labels’] = array(); $this->barChardData[‘datasets’] = array(); } public function addBarChardLabels($labels) { $this->barChardData[‘labels’] = $labels; } public function getData() { return $this->barChardData; } public function addBarChardData($label, $backgroundColor, $borderColor, $borderWidth, $data, $fill) { if (count($data) !== count($this->barChardData[‘labels’])) { exit(«ERROR»); } $this->barChardData[‘datasets’][] = array( ‘label’ => $label, ‘backgroundColor’ => $backgroundColor, ‘borderColor’ => $borderColor, ‘borderWidth’ => $borderWidth, ‘data’ => $data, ‘fill’ => $fill, ); } } использование $chart=new chartjs(); foreach ($month as $year => $val) { $chart->addBarChardLabels($month[$year]); $c = $this->random_color(); $chart->addBarChardData($year, $c, $c, 3, $total[$year], false); } $json[‘barChardData’] = $chart->barChardData; обрабатывается это примерно таким аякс запросом function myChart(json, type) { if (window.myBar !== undefined) window.myBar.destroy(); window.myBar = new Chart(ctx, { type: type, data: json[‘barChardData’], options: { responsive: true } }); } и на выходе получаем долгожданную диаграмму

читать

Опубликовано Оставить комментарий

добавляем в ocfilter сворачивание. минимизируем фильтр цены

Чтобы добиться такого вида окфильтра. необходимо добавить к сайту следующие жс и цсс .noUi-pips-horizontal { display:none; } .ocfilter-option label { float:left; white-space:nowrap!important; width:50%!important; } .noUi-horizontal .noUi-handle { width: 23px!important; height: 23px!important; left: -17px!important; top: -4px!important; border-radius:50%!important; } .list-group .list-group-item { overflow:hidden!important; } .ocfilter-option .ocf-option-name { margin-bottom:0px!important; } .ocf-option-values { margin-top:10px; } var html_bott = «<i class=’fa fa-chevron-down pull-right’></i>»; var html_top = «<i class=’fa fa-chevron-up pull-right’></i>»; $(document).ready(function() { $(«.ocf-option-name»).each(function(index) { var this_html = $(this).html(); var this_text = $(this).text(); $(this).html(this_text + html_top); }); $(«.ocf-option-name»).click(function() { var this_html = $(this).html(); var this_text = $(this).text(); var last_s = this_html.slice(-1); if (last_s == ‘ ‘) { $(this).html(this_text + html_top); } else $(this).html(this_text + html_bott + ‘ ‘); $(this).next().toggle(); }); // сворачиваем все группы начиная с 4 $(«.ocf-option-name»).each(function(index) { if (index > 3) $(this).click(); }); });

читать

Опубликовано Оставить комментарий

округление цен в опенкарте

цены в опенкарте округляются в библиотеке расположенной по пути system/library/currency.php или system/library/cart/currency.php в методе «format». на oCstore 2.3 эта строка выглядит следующим образом $amount = round($amount, (int)$decimal_place); видим что округление работает по принципу round(3.4);         // 3round(3.5);         // 4 если мы хотим обернуть округление в большую или меньшую сторону, то можно использовать функции ceil / floor так же можно реализовать округление цен в корзине. либа корзины находится по путиsystem/library/cart.php или system/library/cart/cart.php код, который отвечает за цены в корзине. ‘price’ => ($price + $option_price),’total’ => ($price + $option_price) * $cart[‘quantity’], и никогда не пишите поверх этого кода. дерзайте OCMOD всем хорошего времени суток

читать

Опубликовано Оставить комментарий

как recaptcha и youtube убивают скорость загрузки сайта

если у вас опенкарт и ответ сервера быстрый, но гугл пейджспид показывает низкий показатель. нужно задуматься вот над чем удалить не используемые скрипты и медиане использовать cdn и не использовать скрипты, которые тянут стили и еще скрипты с других источников (например рекаптча, ютюб и тд). найдите им замену. ютюб замените хтмл5 тэгом видео. а рекаптчу замените комплексом условий для опеределния бота. например скрытая галочка, которая не должна придти на сервер от человека, а от бота придет. и еще какую-то простенькую капчу. типа суммы чиселне покупать шаблоны на темфорест. натыкался лично милен раз на такие темы, у которых ответ сервера из-за модифов и нагрузки становится 3-5секунд.проверить размер изображений. посмотреть максимальные размеры изображений в браузере при разных разрешениях устройства. и прописать в настройках опенкарта максимальныейода еще писал тыщу лет назад отключить подсчет товаров в категориях для менюстили в хеде. скрипты — перед </body>

читать

Опубликовано Оставить комментарий

написание модификации (ocmod) для опенкарт

привет. если вам нужно вставить окмодом куда-то html,js или php код то поступите следующим образом для начала создайте  скелет модуля. создайте контроллер. создайте метод и вьюшку, если она понадобится и затем в нужном месте в окмоде вместо такой простыни, которую часто можно увидеть <add position=»before»><![CDATA[ <label class=»col-sm-2 control-label» for=»input-currency»><span data-toggle=»tooltip» title=»Выводится модулем autocalc_price_option в карточке товара»>Дополнительная валюта <i>(autocalc)</i>:</span></label> <div class=»col-sm-10″> <select name=»config_currency2″ id=»input-currency» class=»form-control»> <option value=»»>{{ text_none }}</option> {% for currency in currencies %} {% if (currency[‘code’] == config_currency2) %} <option value=»{{ currency[‘code’] }}» selected=»selected»>{{ currency[‘title’] }}</option> {% else %} … запихните хтмл в вьюшку(tpl, twig). в методе вызовите эту вьюшку. в свою очередь в окмоде сделайте такой вызов <add position=»before»><![CDATA[$this->load->controller(‘module/test/getHtml’);]]></add> точно так можно поступить и с javascript кодом и php кодом, который вы хотите запихнуть в окмод.  засуньте весь код в контроллер, а потом вызывайте методы в нужном месте код в хмл обычно не имеет подсветки.  плюшки едитора типа форматирование обычно не применить из-за того, что синтаксис автоматически хмл из-за расширения файла. берегите себя и свои мозги. удачи

читать