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

Raino

Пользователи
  • Публикаций

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

  • Посещение

Репутация

13 Хороший

4 Подписчика

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

  • Звание
    Пользователь

Информация

  • Пол
    Мужчина

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

5 451 просмотр профиля
  1. Where итоговое должно идти после всех joinов. у вас оно в середине запроса да еще и в кол-ве двух штук. Должно быть так (если в самих джоинах нет ошибок): SELECT DISTINCT ps.product_id, (SELECT AVG(rating) FROM oc_review r1 WHERE r1.product_id = ps.product_id AND r1.status = '1' GROUP BY r1.product_id) AS rating FROM oc_product_special ps LEFT JOIN oc_product p ON (ps.product_id = p.product_id) LEFT JOIN oc_product_description pd ON (p.product_id = pd.product_id)  LEFT JOIN oc_product_to_category p2c ON (p.product_id = p2c.product_id) LEFT JOIN oc_product_to_store p2s ON (p.product_id = p2s.product_id) WHERE p2c.category='421' AND p.status = '1' AND p.date_available <= NOW() AND p2s.store_id = '0' AND ps.customer_group_id = '1' AND ((ps.date_start = '0000-00-00' OR ps.date_start < NOW()) AND (ps.date_end = '0000-00-00' OR ps.date_end > NOW())) GROUP BY ps.product_id ORDER BY p.sort_order ASC, LCASE(pd.name) ASC LIMIT 0,27
  2. Raino

    Journal 3 - новый "шедевр"

    Journal определенно приносит бабки, даже разработчикам. Т.к. работа с этим шедевром лично у меня идет по тарифу х2 (хотя иногда хочется х20 ставить, за ментальное изнасилование). С третьим видимо придется ставить х30. Плюс людям иногда хочется странного... Кто-то плетки, наручники и кожаные костюмчики покупает, а можно просто попытаться поработать с этим поделием. Не поставить и сидеть на том, что есть из коробки, а именно попытаться впихнуть в него некий желаемый клиентом функционал, которого в нем изначально нет - масса незабываемых впечатлений обеспечена. Эдакое садо-мазо для мозга. И дело даже не только в том, что это уже не опенкарт - у него и на морде бреда полно. Помню, как на ранних версиях второго джорнала браузер раком вставал при кол-ве товара всего-лишь за 50, т.к. чтобы при наведении на плашку товара, повысить ее z-index использовалась функция, пробегающая по всем dom элементам, выискивая наибольшее значение, увеличивало его на единичку и вешало плашке. Прекрасный шаблон, "надежный, как швейцарские часы".
  3. Самое простое и бесплатное- это именно проставлять порядок сортировки нужному товару. Каждому товару в каталоге его проставлять нет необходимости. Поле позволяет ставить отрицательные значения, и если у всех прочих товаров стоит по умолчанию порядок 0, то желаемому ставите -1 и он будет выше прочих. Когда это перестало быть актуальным - поставили ему снова 0 и всё.
  4. Raino

    Этично ли?

    Интересная позиция. А если заказчик попросил поправить некий баг, который мешал ему жить и работа заключается именно в поиске и устранения ошибки присутствующей в сборке изначально, но с которой столкнулся первый именно он, то значит нигде нельзя постить багрепорт о ней, чтобы она была исправлена в сборке? Он ведь заплатил, зачем ее исправлять глобально или постить на форумах решение - это ведь будет не честно по такой логике, т.к. кто-то ранее за эту работу уже заплатил, а теперь другие получат бесплатно, так получается?
  5. Если Вы недавно ничего не меняли в контрольной панели хостинга, не создавали там почтовый домен, не пытались его самостоятельно настраивать и т.д., то могу посоветовать гвоздь в голову вбить техподдержке, если она не видит проблему со своей стороны, 2 и 3 строка в приведенном логе четко описывает проблему. Почта делегирована на внешний сервер, на него указывают mx записи и т.д. и при этом на хостинге естественно находится одноименный домен. При отправке сообщения из магазина хост не отправляет его на тот внешний почтовый сервер, куда делегирована почта, не проверяет mx записи, а просто шлет его сам себе, т.к. имеет это же доменное имя и сам себе отвечает, что у него такого почтового ящика нет. Поэтому, когда указываете в настройках другие почтовые ящики - письма идут отлично, т.к. сервер перестает направлять их сам себе и по этой же причине если отправить на эти доменные ящики письма не их магазина, а из любого другого источника- они доходят. И если раньше этого не было, а сейчас есть, значит хостер (если Вы сами ничего не меняли в панели хостинга) "меняя настройки" доменялся эти самые настройки и почтовика в придачу. И еще ТП можете сообщить что функция php mail() не требует никаких особых данных для простой отправки, которые могут быть "указаны неверно", кроме исходящего мыла, которое проблематично указать неверно. Более того, они даже в приведенном тесте проверяют вообще не тот случай, который вызывает проблему. Если бы они через свой тест скрипт отправили мыло не на некий гмейловский адрес, а на тот, куда блин письма у Вас не доходят в логе, т.е. на info@datiko.ru - получили бы ту же самую ошибку. Если техподдержка все равно не в состоянии будет решить проблему то гуглить на предмет XXX disable local delivery, где XXX - используемая для отправки служба, в данном случае это судя по логу exim.
  6. Если увеличиваете время жизни через session_set_cookie_params(XXX, '/') то все сессии умирают сразу в момент создания, т.к. на 2.3 есть ошибка в установке сессионной куки. В этом файле есть код вида if ($key != 'PHPSESSID') { setcookie($key, $this->session_id, ini_get('session.cookie_lifetime'), ini_get('session.cookie_path'), ini_get('session.cookie_domain'), ini_get('session.cookie_secure'), ini_get('session.cookie_httponly')); } В нем время жизни куки устанавливается неверно. Правильно так if ($key != 'PHPSESSID') { setcookie($key, $this->session_id, time() + ini_get('session.cookie_lifetime'), ini_get('session.cookie_path'), ini_get('session.cookie_domain'), ini_get('session.cookie_secure'), ini_get('session.cookie_httponly')); } либо же напрямую указать желаемое время ХХХ в секундах, если по каким-то причинам нет возможности изменить параметр session.cookie_lifetime. if ($key != 'PHPSESSID') { setcookie($key, $this->session_id, time() + XXX, ini_get('session.cookie_path'), ini_get('session.cookie_domain'), ini_get('session.cookie_secure'), ini_get('session.cookie_httponly')); }
  7. Похоже, что это он и есть, т.к. в модулях с родного сайта главпункта совместимости с симплой как раз нет, да и в целом модуль их родной был кривой как вьетнамский летчик (мне пришлось в свое время для клиента знатно дорабатывать под симплу их модуль ПВЗ). Поэтому на текущий момент покупать сие имеет смысл, только если очень нужно под 1.5 ветку с дефолтным оформлением заказа (маловероятный вариант).
  8. Вам нужно создать свою функцию в модели product, например getMainCategory($product_id) которая будет выбирать из базы данные по ней и потом вызывать ее по необходимости в произвольных местах. public function getMainCategory($product_id) { $query = $this->db->query("SELECT DISTINCT * FROM " . DB_PREFIX . "product_to_category ptc LEFT JOIN " . DB_PREFIX . "category_description cd ON (ptc.category_id = cd.category_id) LEFT JOIN " . DB_PREFIX . "category_to_store c2s ON (ptc.category_id = c2s.category_id) WHERE ptc.product_id = '" . (int)$product_id . "' AND ptc.main_category = '1' AND cd.language_id = '" . (int)$this->config->get('config_language_id') . "' AND c2s.store_id = '" . (int)$this->config->get('config_store_id') . "'"); return $query->row; } что-нибудь вроде такого, где вместо * можно оставить только те данные, которые Вам нужны по главной категории и работать с полученным массивом. Если нужны какие-то доп поля кроме названия, вроде картинки- нужно в запрос подцепить еще и выборку из таблицы category, но для GA это не нужно.
  9. Врожденный баг чпу в опенкарте. В версии 1.5. еще был, распространяется на категории и производителей, присутствует как при включенном штатном чпу формирователе, так и при включенном сео про.как пример демо сайт ocstore производители https://demo.ocstore.com/delivery/apple https://demo.ocstore.com/apple/delivery категории https://demo.ocstore.com/desktops/mac/terms https://demo.ocstore.com/terms/desktops/mac можно подставить любой существующий урл от статей и не только от статей. пофиксить можно доработав сеопро, штатный наверняка тоже можно, но кому он нужен) В индекс такие страницы попадают через счетчики метрики, аналитики и им подобные. при прямом посещении страницы кем-либо они скорее всего добавятся в индекс. По хорошему надо бы не внешними модулями решать, а в сборке пофиксить, т.к. штука неприятная.
  10. Raino

    Raino

    @MinMart , личное сообщение на форуме- отличный способ контактировать на начальном этапе)
  11. Самые простые варианты: Использовать параметр ?ver=xx для изменившегося css или js в шапке , только потом не забудьте удалить этот параметр, т.к. статические ресурсы с параметрами не кешируются вообще. Т.е. если у Вас время жизни css стоит неделя- через неделю уберите данный параметр, тогда гарантированно у всех пользователей будет актуальная версия. Либо просто переименуйте изменившийся css/js файл, например в stylesheet-v2.css.(и сам файл и ссылку на него в коде страницы).
  12. Декодируйте описание в контроллере. 'description' => html_entity_decode($category['description'], ENT_QUOTES, 'UTF-8'),
  13. Или не там добавили, или не там выводите. Вы записали минимальную цену для каждой дочерней категории текущей родительской (те которые выводятся над товарами, как правило), а в tpl обращаетесь к ней, как будто хотели вывести это значение для родительской. Соответственно, если хотите вывести мин. цену для каждой дочки, то в шаблоне нужно выводить например так: <?php foreach ($categories as $category) { ?> <li><a href="<?php echo $category['href']; ?>"><?php echo $category['name']; ?><span><?php echo $category['min_price']; ?></span></a></li> <?php } ?> Кстати, запрос довольно тяжелый и при большом кол-ве товара-категорий будет создавать нагрузку, поэтому, если без этого никак- то хорошо бы это дело кешировать хотя бы. Если же нужно выводить мин цену только для текущей категории, то тогда в контроллере надо ее задавать иначе: $data['min_price'] = $this->model_catalog_product->getMinPriceFromCategory($category_id); и потом уже выводить в тпльке через $min_price Само собой в функции в модели не должно быть ошибок (ее код не смотрел).
  14. https://opencartforum.com/topic/10263-modul-dobavliaet-vozmozhnost-vybora-kolichestv/ посмотрите этот топик, там детально описан пример как сделать самому поля ввода кол-ва в категориях, в Вашем случае, просто слайдеры еще добавить нужно. Был и готовый модуль, на этом форуме, но увы название не вспомню а по поиску не найти.
  15. Странное замечание. А мне вот не нужно. Если у меня мультимагазины то там и так для каждого была своя настройка размеров изображения для магазина в целом. Повторюсь, настройка размеров конкретного шаблона - сомнительной полезности функционал и если бы он шел бонусом, не ухудшая удобство, то и проблем бы не было. Как часто меняется шаблон на магазине работающем? Нечасто, примерно никогда, только обновляется изредка. Если пойти дальше-то с чего тогда настройки фавика и лого оставили как было, может мне для разных тем разные лого и фавик потребуются? Непонятно. Задумка может и хорошая, но реализация как-то подкачала в плане удобства. В чём сложность разместить этот блок непосредственно на вкладке изображений с выборами настроек для темы для данного магазина? Или хотя бы линк там сделать на соответствующий раздел? Я без претензий к разработчикам сборки, как было в 2.3 так и сделали, но почему этот момент столь непродуман мне непонятно. Повторюсь, продукт делается для людей. Людям как мы видим- неудобно, вот и всё. Я думаю Вы согласитесь, что ни разу не очевидное расположение теперь этих настроек. И если влепить в сборку простой линк на новое место/текстовое описание как найти/скрин с пометками на вкладке "изображения" настроек магазина (если уже не охота заморачиваться с переносом блока), то вопросов у людей не будет, все всё найдут.
×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.