Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

auditor

Users
  
  • Posts

    186
  • Joined

  • Last visited

Everything posted by 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>
×
×
  • Create New...

Important Information

On our site, cookies are used and personal data is processed to improve the user interface. To find out what and what personal data we are processing, please go to the link. If you click "I agree," it means that you understand and accept all the conditions specified in this Privacy Notice.