Перейти к содержанию

Pascha

Разработчик
  • Постов

    85
  • Зарегистрирован

  • Посещение

Информация о Pascha

  • День рождения 27.05.1972

Персональная информация

  • Рабочие дни:
    Пн
    Вт
    Ср
    Чт
    Пт
  • Время работы
    8-00 до 20-00

Посетители профиля

523 просмотра профиля

Достижения Pascha

  1. Еще один реальный кейс по услугам на данном дополнении https://dianachernyh.ru/ редизайн существующего https://www.xn--80aakgm5acx0cq1c.xn--p1ai/ почувствуйте разницу)))) И все это на Опенкарт! стоимость как "землячке" - 30 тыс руб. срок выполнения 1,5 дня вместе с наполнением и настройкой доп модулей.
  2. Актуально для Opencart 2. Открываем файл catalog\controller\product\product.php Находим строку $results = $this->model_catalog_product->getProductRelated($this->request->get[‘product_id’]); И после нее добавляем $results = array_slice($results, 0, 7); Где 7 — и есть то самое количество выводимых рекомендуемых товаров (лимит). После добавления обязательно обновить кеш модификаторов!!! Чтобы они показывались в случайном порядке (рандомно) Помните в старом добром винампе была кнопка шаффл (shuffle), для рандомного воспроизведения музыки?)) Короче нам нужно добавить между ними одну строку — заключить резалтс в шаффл, то бишь вот так: $results = $this->model_catalog_product->getProductRelated($this->request->get['product_id']); shuffle($results); $results = array_slice($results, 0, 4); Со статусом в наличии Если нужно исключить отсутствующие товары, то делаем так: Всё тот же файл catalog\model\catalog\product.php Находим метод getProductRelated И после AND p.status = ‘1’ добавляем AND p.quantity > 0
  3. Сначала в контроллере нужно прописать (зарегистрировать) переменную. То есть открываем файл catalog/controller/product/category.php, находим строчку 'name' => $result['name'], и после нее вставляет, то что нам необходимо зарегистрировать, то есть: для модели вставляем 'model' => $result['model'], а для артикула вставляем 'sku' => $result['sku'], Сохраняем, закрываем. Теперь открываем сам файл шаблона страницы категории catalog/view/theme/ВАША_ТЕМА/template/product/category.tpl И там, где нам нужно вывести модель, пишем: для 2-ки <?php echo $product['model']; ?> для 3-ки {{ product.model }} а там, где нужен артикул, пишем: для 2-ки <?php echo $product['sku']; ?> для 3-ки {{ product.sku }} Сохраняем, закрываем. Обазятельно!!! Очистите кеш модификаторов, а-то не заработает! По сути всё. Должно работать. Вывести артикул или модель на странице производителей — аналогично.
  4. Чтобы в Opencart определить страницу категории как главную (домашнюю), надо проделать следующее. Открываем файл .htaccess и после строки RewriteBase / Вставляем следующую строку RewriteRule ^/?$ index.php?route=product/category&path=111/ [L] где, 111 — это id категории, которую нужно определить как главную страницу, то есть нужно указать свою. Если установлен SeoPro Если установлен модуль SeoPro и правило не работает, а сервер отдает код ответа 301 вместо «внутреннего» редиректа с кодом 200, необходимо сделать следующее: Открываем файл \catalog\controller\common\seo_pro.php, метод validate(). private function validate() { if (isset($this->request->get['route']) && $this->request->get['route'] == 'error/not_found') { return; } if(empty($this->request->get['route'])) { $this->request->get['route'] = 'common/home'; } if (isset($this->request->server['HTTP_X_REQUESTED_WITH']) && strtolower($this->request->server['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') { return; } if (isset($this->request->server['HTTPS']) && (($this->request->server['HTTPS'] == 'on') || ($this->request->server['HTTPS'] == '1'))) { $url = str_replace('&amp;', '&', $this->config->get('config_ssl') . ltrim($this->request->server['REQUEST_URI'], '/')); $seo = str_replace('&amp;', '&', $this->url->link($this->request->get['route'], $this->getQueryString(array('route')), 'SSL')); } else { $url = str_replace('&amp;', '&', substr($this->config->get('config_url'), 0, strpos($this->config->get('config_url'), '/', 10)) // leave only domain . $this->request->server['REQUEST_URI']); $seo = str_replace('&amp;', '&', $this->url->link($this->request->get['route'], $this->getQueryString(array('route')), 'NONSSL')); } if (rawurldecode($url) != rawurldecode($seo)) { $this->response->redirect($seo, 301); } } И добавляем исключение: $array_exclusion = [ 'http://site.com/' ]; if (rawurldecode($url) != rawurldecode($seo) && !in_array($url, $array_exclusion)) { $this->response->redirect($seo, 301); } Где site.com — это УРЛ вашей главной страницы сайта.
  5. Вариант использования данного дополнения для "боевого" сайта (макет) http://banket.paschaopencart.ru/home - главная страница http://banket.paschaopencart.ru/vasilyevskiy_ostrov -страница 1 зала http://banket.paschaopencart.ru/rileeva - страница 2 зала все дополнительные модули и дополнения интегрированы исключительно Шорткодами.
  6. 1. Обновление от 03.03.24 а) добавлена возможность загрузки видео и настройка фонового видео оффера 1-го экрана б) самостоятельный модуль "витрина лендингов" ( для установки через схемы) в) добавлены два дополнительных поля для кастомных css и js для каждо отдельно взятой страницы лендинга г) несущественные правки по верстке
  7. Просмотр файла Система лендингов Опенкарт 3 / Landing page system Opencart 3 Система лендингов для Опенкарт 3 позволяет создавать неограниченное количество страниц типа "лендинг" Подробнее в видео Демо Демо2 Админка demo/demo Добавил Pascha Добавлено 21.01.2024 Категория Меню, дизайн, внешний вид
  8. Система лендингов для Опенкарт 3 позволяет создавать неограниченное количество страниц типа "лендинг" Подробнее в видео Демо Демо2 Админка demo/demo
    3 700 руб.
  9. обратите внимание на "обертку" if (document.getElementById('politics').checked) то есть блок к примеру в <input type="checkbox" id="politics" onclick="check();" value="" autocomplete="off"/> а второй блок к примеру в <input type="checkbox" id="politicform" onclick="check();" value="" autocomplete="off"/> и вот Вам новая идея прописать скрипт для politicform <script> function check() { var submit = document.getElementsByName('submit')[0]; if (document.getElementById('politicform').checked) submit.disabled = ''; else submit.disabled = 'disabled'; } </script> либо еще проще <script> function check() { var submit = document.getElementsByName('submit')[0]; var notChecked = false; if (!document.getElementById('politics').checked) notChecked = true; if (!document.getElementById('politicform').checked) notChecked = true; if(!notChecked) submit.disabled = ''; else submit.disabled = 'disabled'; } </script>
  10. Дополнительные фото в категории как в товаре. Делаем галерею на странице категории Сегодня речь пойдет о небольшой доработке — вывод дополнительных фотографий категории. Зачем это нужно? Если у вас в магазине продается плитка или же ламинат, покупателю будет интересно посмотреть в самой категории фото интерьеров или коллекции, если категория идет как "коллекция". Для этого возьмем уже готовый функционал с товара. В форме редактирования товара есть вкладка Изображения в которой можно добавить дополнительные фото и они будут отображены в карточке товара. Для добавления такого же функционала в категорию для начала нам надо добавить дополнительную таблицу в базу данных product_image. Делаем запрос в базу через phpmyadmin: CREATE TABLE IF NOT EXISTS `oc_category_image` ( `category_image_id` int(11) NOT NULL AUTO_INCREMENT, `category_id` int(11) NOT NULL, `image` varchar(255) DEFAULT NULL, `sort_order` int(3) NOT NULL DEFAULT '0', PRIMARY KEY (`category_image_id`), KEY `category_id` (`category_id`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ; В данном примере создается таблица с префиксом oc_ посмотрите, у вас может быть другой! После этого открываем файл модели admin/model/catalog/category.php и добавляем возможность сохранения фотографий в базу данных. Для этого ищем в функции addCategory и editCategory строку: if (isset($data['image'])) { перед ней вставляем: if (isset($data['category_image'])) { foreach ($data['category_image'] as $category_image) { $this->db->query("INSERT INTO " . DB_PREFIX . "category_image SET category_id = '" . (int)$category_id . "', image = '" . $this->db->escape($category_image['image']) . "', sort_order = '" . (int)$category_image['sort_order'] . "'"); } } Далее добавляем функцию выборки картинок категории, например перед строкой: public function getCategory($category_id) { Вставляем: public function getCategoryImages($category_id) { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "category_image WHERE category_id = '" . (int)$category_id . "' ORDER BY sort_order ASC"); return $query->rows; } После этого у нас изображения уже записываются в базу с формы редактирования товара. Далее открываем контроллер admin/controller/catalog/category.php находим строку: $data['placeholder'] = $this->model_tool_image->resize('no_image.png', 100, 100); и после нее вставляем код обработки фото: // Images if (isset($this->request->post['category_image'])) { $category_images = $this->request->post['category_image']; } elseif (isset($this->request->get['category_id'])) { $category_images = $this->model_catalog_category->getCategoryImages($this->request->get['category_id']); } else { $category_images = array(); } $data['category_images'] = array(); foreach ($category_images as $category_image) { if (is_file(DIR_IMAGE . $category_image['image'])) { $image = $category_image['image']; $thumb = $category_image['image']; } else { $image = ''; $thumb = 'no_image.png'; } $data['category_images'][] = array( 'image' => $image, 'thumb' => $this->model_tool_image->resize($thumb, 100, 100), 'sort_order' => $category_image['sort_order'] ); } После этого открываем форму редактирования категории admin/view/template/catalog/category_form.tpl и ищем строку: <li><a href="#tab-data" data-toggle="tab"><?php echo $tab_data; ?></a></li> после нее добавляем код вкладки: <li><a href="#tab-image" data-toggle="tab">Изображения</a></li> Далее ищем строку: <p class="tab-pane" id="tab-design"> И перед ней вставляем блок вкладки с формой добавления изображений: <div class="tab-pane" id="tab-image"> <?php $button_remove = 'Удалить'; $button_image_add = 'Добавить'; ?> <div class="table-responsive"> <table id="images" class="table table-striped table-bordered table-hover"> <thead> <tr> <td class="text-left">Изображение</td> <td class="text-right"><?php echo $entry_sort_order; ?></td> <td></td> </tr> </thead> <tbody> <?php $image_row = 0; ?> <?php foreach ($category_images as $category_image) { ?> <tr id="image-row<?php echo $image_row; ?>"> <td class="text-left"><a href="" id="thumb-image<?php echo $image_row; ?>" data-toggle="image" class="img-thumbnail"><img src="<?php echo $category_image['thumb']; ?>" alt="" title="" data-placeholder="<?php echo $placeholder; ?>" /></a><input type="hidden" name="category_image[<?php echo $image_row; ?>][image]" value="<?php echo $category_image['image']; ?>" id="input-image<?php echo $image_row; ?>" /></td> <td class="text-right"><input type="text" name="category_image[<?php echo $image_row; ?>][sort_order]" value="<?php echo $category_image['sort_order']; ?>" placeholder="<?php echo $entry_sort_order; ?>" class="form-control" /></td> <td class="text-left"><button type="button" onclick="$('#image-row<?php echo $image_row; ?>').remove();" data-toggle="tooltip" title="<?php echo $button_remove; ?>" class="btn btn-danger"><i class="fa fa-minus-circle"></i></button></td> </tr> <?php $image_row++; ?> <?php } ?> </tbody> <tfoot> <tr> <td colspan="2"></td> <td class="text-left"><button type="button" onclick="addImage();" data-toggle="tooltip" title="<?php echo $button_image_add; ?>" class="btn btn-primary"><i class="fa fa-plus-circle"></i></button></td> </tr> </tfoot> </table> </div> </div> И после этого конечно оживляем все кнопки скриптом. Внизу файла перед строкой <script type="text/javascript"><!-- Вставляем этот код: <script type="text/javascript"><!-- var image_row = <?php echo $image_row; ?>; function addImage() { html = '<tr id="image-row' + image_row + '">'; html += ' <td class="text-left"><a href="" id="thumb-image' + image_row + '"data-toggle="image" class="img-thumbnail"><img src="<?php echo $placeholder; ?>" alt="" title="" data-placeholder="<?php echo $placeholder; ?>" /></a><input type="hidden" name="category_image[' + image_row + '][image]" value="" id="input-image' + image_row + '" /></td>'; html += ' <td class="text-right"><input type="text" name="category_image[' + image_row + '][sort_order]" value="" placeholder="<?php echo $entry_sort_order; ?>" class="form-control" /></td>'; html += ' <td class="text-left"><button type="button" onclick="$(\'#image-row' + image_row + '\').remove();" data-toggle="tooltip" title="<?php echo $button_remove; ?>" class="btn btn-danger"><i class="fa fa-minus-circle"></i></button></td>'; html += '</tr>'; $('#images tbody').append(html); image_row++; } //--></script> После таких правок у нас уже есть возможность в админке добавлять, редактировать и сохранять изображения в категории. После любых изменений в коде не забывайте обновлять кеш модификаторов (Дополнения — Менеджер дополнений — кнопка Обновить) Вывод фото на странице категории. Для вывода фото на странице категорий нам необходимо добавить функцию выборки изображений из базы данных в модель. Для этого открываем файл catalog/model/catalog/category.php и, например перед строкой: public function getCategories($parent_id = 0) { вставляем нашу функцию public function getCategoryImages($category_id) { $query = $this->db->query("SELECT * FROM " . DB_PREFIX . "category_image WHERE category_id = '" . (int)$category_id . "' ORDER BY sort_order ASC"); return $query->rows; } После этого полученные данные надо обработать в контроллере, для этого идем в файл catalog/controller/product/category.php и перед строкой: $data['description'] = html_entity_decode($category_info['description'], ENT_QUOTES, 'UTF-8'); вставляем код обработки: $data['images'] = array(); $results = $this->model_catalog_category->getCategoryImages($category_id); if($results){ $this->document->addScript('catalog/view/javascript/jquery/magnific/jquery.magnific-popup.min.js'); $this->document->addStyle('catalog/view/javascript/jquery/magnific/magnific-popup.css'); foreach ($results as $result) { $data['images'][] = array( 'popup' => $this->model_tool_image->resize($result['image'], $this->config->get($this->config->get('config_theme') . '_image_popup_width'), $this->config->get($this->config->get('config_theme') . '_image_popup_height')), 'thumb' => $this->model_tool_image->resize($result['image'], $this->config->get($this->config->get('config_theme') . '_image_additional_width'), $this->config->get($this->config->get('config_theme') . '_image_additional_height')) ); } } После этого у нас в шаблон идет массив $images в котором находятся фотографии категории. Для отображения их на сайте надо сделать вывод в шаблоне. Для этого открываем файл catalog/view/theme/default/template/product/category.tpl и в нужном месте вставляем код: <?php if ($images) { ?> <p class="row images"> <?php foreach ($images as $image) { ?> <p class="col-xs-6 col-sm-6 col-md-3"><a class="thumbnail" href="<?php echo $image['popup']; ?>" title="<?php echo $heading_title; ?>"> <img src="<?php echo $image['thumb']; ?>" title="<?php echo $heading_title; ?>" alt="<?php echo $heading_title; ?>" /></a></p> <?php } ?> </p> <hr> <script> $(document).ready(function() { $('.images').magnificPopup({ type:'image', delegate: 'a', gallery: { enabled:true } }); }); </script> <?php } ?> Учтите, что у вас может быть другой шаблон. В примере указан шаблон default (выделен выше). После всех правок можете чистить кеш модификаторов, кеш модуля кеширования (если он есть) и радоваться результатам.
  11. Теперь всегда нужно чтоб на вашем сайте в любой форме обратной связи присутствовал чекбокс согласия на обработку персональных данных. Зачастую разработчики уже предусматривают данную приблуду в своих дополнениях... но что если нет? Что если для Вас проблематично поменять код самого модуля по каким то причинам? Самое простое- вставить несложный скрипт и сделать пару правок. Вот этим мы и займемся. Итак... мы открыли код вывода формы обратной связи и ориентируясь на кнопку кода отправки сообщения: как правило это кнопка (ссылка или button ) type="submit" *можно использовать для поиска по документу. Где то чуть выше вставляем <div class="form-chek"> <input type="checkbox" id="politics" onclick="check();" value="" autocomplete="off"/> Я согласен (-на) на обработку персональных данных </div> тем самым мы сделали то что требуется.... но... отправка сообщения возможна что при активном чекбоксе, что при неактивном.... "факир был пьян- и фокус не удался" )))) Потому мы еще не закончили и поработаем с самой кнопкой отправки сообщения из формы к примеру мы имеем <button type="submit" class="btn btn-lg btn-primary">Оставить заявку</button> чуть видоизменим ее на <button type="submit" name="submit" class="submit btn btn-lg btn-primary" disabled="">Оставить заявку</button> и вставим скрипт <script> function check() { var submit = document.getElementsByName('submit')[0]; if (document.getElementById('politics').checked) submit.disabled = ''; else submit.disabled = 'disabled'; } </script> тем самым... пока чекбокс не активен - кнопка отправки сообщений так же не кликабельна... и при активном/отмеченном чекбоксе кнопка отправки становится работоспособной... казалось бы мы уже можем остановиться на этом))) но.... есть и другие задачи: к примеру такие, как стилизовать собственно чекбокс под дизайн сайта ( по умолчанию активный чекбокс - синего цвета ( так его определяют браузеры и подтягивают стандартные стили) исправим это недоразумение одной строчкой #politics { accent-color: #FFCB4A; } и вот она уже стала того цвета что нам требовалось.
  12. Когда у тебя на хосте 3-4 сайта в разработке с последующим переносом на хостинг заказчика лишние папки (да еще и одноименные) вне пределах собственно разрабатываемого сайта вообще ни к месту. При чем переносить или оставить - ни каким образом не сказывается на работоспособности сайта и установленных ocmod...
  13. При входе в админ-панель сайта может всплывать окно безопасности: Как убрать это предупреждение: в файле admin\controller\common\dashboard.php заменить строку $data['security'] = $this->load->controller('common/security'); на $data['security'] = '';
  14. Настройка регионов в Opencart позволит локализовать интернет-магазин и задать для него нужные налоги, доставку и другие настройки. Создание стран и регионов в Opencart Чтобы создать страну потребуется перейти в нужный пункт в «Система»-«Локализация» после чего кликаем на «Добавить». Вводим: Название страны; Код ISO (2); Код ISO (3); Формат адреса; Индекс обязателен; Статус. В случае с регионами потребуется перейти в соответствующий пункт в том же разделе и также добавляем его. Регионы== Ваш населенный пункт привязанный к стране. В таком случае все что будет внесено будет отображаться в корзине и пр.
×
×
  • Создать...