Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

auditor

Користувачі
  
  • Публікації

    186
  • З нами

  • Відвідування

Усі публікації користувача auditor

  1. важные моменты: 0. наличие данных в товарах (на чем можно поэкономить, тем самым оптимизировав запрос к БД) напр.: артикул, отзывы, бренд и т.д. 1. наличие кэшера 2. оптимизированного кода и "правильных" модулей остальное - дело техники.
  2. сделать перебор "простого" массива, и при переборе каждого изображения - отдельно его подгружать в нужный каталог, например: public function savePic($pictures) { foreach($pictures as $url) { $ch = curl_init(); // инициализация $path_parts = pathinfo($url); //получаем название файла из URL $fp = fopen(DIR_IMAGE .'tm/'.$path_parts['basename'], 'w+'); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_FILE, $fp); curl_setopt($ch, CURLOPT_HEADER, 0); curl_exec($ch); curl_close($ch); fclose($fp); } } $images = array('https://site.com/image-one.jpeg','https://site.com/image-two.jpeg','https://site.com/image-three.jpeg'); foreach($images as $image) { $this->savePic($image); }
  3. <li class="active"> и <div class="tab-pane active" - надо перенести на следующий элемент: тоесть дальше идут характеристики, и добавить что то типа вместо: <ul class="nav nav-tabs"> <li class="active"><a href="#tab-description" data-toggle="tab"><?php echo $tab_description; ?></a></li> <?php if ($attribute_groups) { ?> <li><a href="#tab-specification" data-toggle="tab"><?php echo $tab_attribute; ?></a></li> <?php } ?> <?php if ($review_status) { ?> <li><a href="#tab-review" data-toggle="tab"><?php echo $tab_review; ?></a></li> <?php } ?> </ul> поменять на: <ul class="nav nav-tabs"> <?php if ($description) { ?> <li class="active"><a href="#tab-description" data-toggle="tab"><?php echo $tab_description; ?></a></li> <?php } ?> <?php if ($attribute_groups) { ?> <li <?php if (!$description) { ?>class="active"<?php } ?>><a href="#tab-specification" data-toggle="tab"><?php echo $tab_attribute; ?></a></li> <?php } ?> <?php if ($review_status) { ?> <li><a href="#tab-review" data-toggle="tab"><?php echo $tab_review; ?></a></li> <?php } ?> </ul> и так же для активных вкладок, вместо: <div class="tab-content"> <div class="tab-pane active" id="tab-description"><?php echo $description; ?></div> <?php if ($attribute_groups) { ?> <div class="tab-pane" id="tab-specification"> поменять на: <div class="tab-content"> <?php if ($description) { ?> <div class="tab-pane active" id="tab-description"><?php echo $description; ?></div> <?php } ?> <?php if ($attribute_groups) { ?> <div class="tab-pane <?php if (!$description) { ?>active<?php } ?>" id="tab-specification">
  4. нет конечно, фиксить это проще через .htaccess RewriteCond %{THE_REQUEST} // # Проверка, на повторение слеша (//) более двух раз RewriteRule .* /$0 [R=301,L] # Редирект на единый
  5. Логика не сложна, для этого надо вывести: 0. конфигв админке для ввода минимальной цены 1. в скрипте common.js в функции добавления в корзину, подключить метод показа модалки, в котором добавить "прогрессбар" на котором сравнивается шкала с текущей суммой корзины (тотал) и конфиг-минималки и это отображать на слайдере прогресс-бара. сам не возьмусь за разработку, есть иные задачи (занят), но логику примерно описал, если кто решит сваять.
  6. $products = $this->db->query("SELECT p.product_id, p.sku, pd.name, pd.description FROM " . DB_PREFIX . "product p LEFT JOIN " . DB_PREFIX . "product_description pd ON (p.product_id = pd.product_id) WHERE p.product_id = '" . (int)$product_id . "' AND pd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND p.status = '1'"); это для получения товара, в пых-админе: SELECT p.product_id, p.sku, pd.name, pd.description FROM oc_product p LEFT JOIN oc_product_description pd ON (p.product_id = pd.product_id) WHERE pd.language_id = '1' AND p.status = '1'
  7. солидарен, но вот с наименьшими правками - никак, конечно форк от оригинала получается, но тем не менее, лучше интегрировать по грамотному, некоторые важные функции, чем ловить через регистр или интегрировать посредством OCMOD, а в целом - все верно сказано.
  8. Ох как громки слова, все вокруг танцуют с бубном от написанного Yavesik, если не ошибаюсь, а самим то решение предложить на пользу сообщества религия мешает ?
  9. Для оценки нужно принять разработку А для начала разработки: ТЗ попунктно, например: 0. Реализовать добавление нескольких фотографий к значению опции (не названию, а именно значению) 1. Добавить дополнительные поля (если нужно) в карточке товара для управления... 2. Реализовать вывод дополнительных фотографий опций, при отображении\выборе\клике в товаре, категории, корзине, при поиске, в письме клиенту, в админке в заказе и т.д. ___ минимальный заказ: час, стоимость 1-го часа: 30$, по пунктам: 0 - 0.5 часа, 1 - 0.2 - 0.5 часа, 2 - от 0.5 часа.
  10. Покажите на каком сайте, тогда можно отследить скрипт перенаправления и либо закоментировать либо переправить на нужный код, если по сути: Есть скрипт в функции добавления в корзину, который срабатывает при успешном добавлении и соотв. перенаправляет по указанному адресу.
  11. когда то давно, реализовывали отдельный каталог в кабинете пользователя, под каждый статус - свой каталог подключался, в админке только в настройке категории - выбиралось - под какую группу клиента показывать и показывать ли в кабинете или в общем списке. по модулю - не встречал, который может отображать каталоги, вот цены - да.
  12. Добавления доп. фото - не так уж сложно, но, как выразился камрад выше, у студента - это может занять 4 часа, у которого оплата за час 10-15$, а у профи - за час, у которого оплата от 30 до 50 за час, так что тут все зависит от цели и "стоимости свеч для игры", логика добавления следующая (это все ИМХО, каждый кодер по своему бы алгоритмы накидал): 0. создать отдельную таблицу в БД, где идентификатором будет option_value_id (если надо доп. цены, то можно добавить поле и с ценой) 1. переписать контроллер опций, модель и tpl в админке 2. переписать логику вывода в карточке товара 3. переписать логику выборки на витрине в карточку товара, подключив алгоритмы, нужные для переключения по фотографим и т.д. ___ вот и все, расписывать же по строчно с кодом - увы, дело времени, а время - это единственная ценная вещь, которая у нас, как разработчиков есть.
  13. если составите список "основных" ошибок и отпишите в ЛС - то можно взятся, можно и аудит сделать - это дополнительно $ прошу тут ознакомиться.
  14. Есть отчет SEO аудита или ТЗ ? у нас полная внутренняя оптимизация около 200$ нового проекта.
  15. Если просто убрать дублирование page=1 со всех роутов в пагинации, то достаточно в файле: system/library/pagination.php сделать следующие изменения: шаг_0: найти строку: $this->url = str_replace('%7Bpage%7D', '{page}', $this->url); после неё добавляем: $non_page_one = str_replace(array('&amp;page={page}', '?page={page}', 'page={page}',), '', $this->url); и теперь повсюду, где есть следующий код: str_replace(array('&amp;page={page}', '&page={page}'), '', $this->url) заменить его на: $non_page_one тоесть по итогу, должно получиться что то вроде: (до) if ($page > 1) { $output .= '<li><a href="' . str_replace(array('&amp;page={page}', '&page={page}'), '', $this->url) . '">' . $this->text_first . '</a></li>'; if ($page - 1 === 1) { $output .= '<li><a href="' . str_replace(array('&amp;page={page}', '&page={page}'), '', $this->url) . '">' . $this->text_prev . '</a></li>'; } else { $output .= '<li><a href="' . str_replace('{page}', $page - 1, $this->url) . '">' . $this->text_prev . '</a></li>'; } } после правки: if ($page > 1) { $output .= '<li><a href="' . $non_page_one . '">' . $this->text_first . '</a></li>'; if ($page - 1 === 1) { $output .= '<li><a href="' . $non_page_one . '">' . $this->text_prev . '</a></li>'; } else { $output .= '<li><a href="' . str_replace('{page}', $page - 1, $this->url) . '">' . $this->text_prev . '</a></li>'; } } а таких вставок там несколько, так что будьте внимательны. По другим правилам СЕО, то мы только с самой пагинацией долго мучаем, как например правильные линки canonnical, prev\next, слеш и без слешей окончание, добавление noindex, nofollow при выборе сортировки или изменения кол-ва отображаемого товара, работа с бесконечными аргументами, типа page=100500 и т.д., раскрывать все секреты тут не буду, нашей команде тоже надо на свой кусочек по правкам зарабатывать, обращайтесь - настроим так, что никто не настроит лучше (пафосно конечно, но пока не встречал грамотно настроенных магазинов), делаем дорого, но зато раз и с гарантией на проделки + после наших правок, поисковики влюбляются в ваш сайт, убираются ненужные дубли и т.д.
  16. совершенно верное решение, но я бы добавил обёртку: if (file_exists(DIR_IMAGE . $result['image'])) { $image = HTTP_CATALOG . 'image/' . $result['image']; } так как DIR_IMAGE . $result['image'] - абсолютный путь к картинке, по пути от сервера, а вот если надо в браузер вывести изображение, то либо через метод resize либо напрямую (как нужно в вашем варианте)
  17. добавляется данный rel в контроллере home.php
  18. Просмотрел ответ в той теме, какое то кустарное решение, совсем не по синтаксису ОС, это раз, второе - это решение только для категории актуально, а для страницы поиска, производителя, акций ? в третьих - эта проблема решается в класе pagination, раз и для всех возможных вариантов.
  19. а в нашей команде, это называется - селекторами.
  20. Доброго времени, могу взять проект на разработку, по бюджету - найдём компромисс, внутренняя СЕО оптимизация включается в разработку на начальном этапе.
  21. В ОС не предусмотрен по умолчанию аккаунт продавца, только покупателя и партнёра (партнёр - после одобрения покупательского аккаунта)
  22. в контроллере напиши: $data['price_main'] = $this->config->get('min_price_order'); а в TPL: <div>До Опта <?php $price_opt = $price_main - $total['text']; echo $price_opt; ?></div>
  23. <div>До Опта <?php $price_main = $this->config->get('min_price_order') - $total['text']; echo $price_main; ?></div>

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.