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

ocbot

Users
  
  • Posts

    60
  • Joined

  • Last visited

Everything posted by ocbot

  1. Заполните поля SEO URL для всех товаров и категорий, тогда ссылки будут ЧПУ и не будет этого ...&product_id=4786, соответственно проблема исчезнет. Посмотрел ваш сайт, на самом деле проблема проявляется только при переходе на товар не из страницы результатов поиска, а из окна быстрого ajaх поиска. Значит проблема в ajax поиске, за эту функцию у вас отвечает файл catalog/controller/product/search.php, там есть метод ajax(), в котором и формируются ссылки на товар с добавление &
  2. Добрый день. Когда вы меняете статус заказа вручную в админке, то для того чтобы отправилось уведомление клиенту нужно поставить галочку "Уведомить покупателя". Если же статус заказа меняется автоматически модулем оплаты, тогда именно этот модуль управляет отправкой уведомлений. Если в настройках модуля оплаты нет такой настройки, тогда нужно открыть его контроллер, например для модуля "Оплата наличными" это файл catalog\controller\extension\payment\cheque.php и найти там примерно такую строку: $this->model_checkout_order->addOrderHistory($this->session->data['order_id'], $this->config->get('payment_cheque_order_status_id'), $comment, true); В этой строке нужно сделать замену третьего аргумента $comment на false, то есть так: $this->model_checkout_order->addOrderHistory($this->session->data['order_id'], $this->config->get('payment_cheque_order_status_id'), false, true);
  3. Понятно, что у вас какие-то доработки или дополнения используются для полного пути к товару в URL и хлебных крошках. Потому что в OpenCart при переходе в товар из поиска в URL не передаются категории (path). Соответственно, нужно искать проблему в этой доработке или дополнении, там нужно сделать замену & на & Смотрите контроллер product/search или модификатор, который его затрагивает.
  4. В лог ошибок смотрите, тут нечего гадать. Можно еще попробовать добавить index.php в URL, то есть /admin/index.php
  5. Это я образно обозначил ссылки языковыми префиксами. Но если нужны будут языковые префиксы в SEO PRO - у меня есть модуль. Каждую языковую версию нужно выносить в отдельный <url>, все правильно.
  6. Разметку вашего XML можно увидеть при инспектировании кода в браузере. В документации Google указано: Сейчас вы отправляете только ссылки одной локализации ru-UA, а нужно передавать каждую ссылку и ее варианты локализации. Вот пример передачи всех локализаций одной страницы: Есть отличный сервис для проверки мультиязычных sitemap https://technicalseo.com/tools/hreflang/
  7. Браузер не форматирует этот xml, но Google и др. принимают без проблем, что еще нужно. Или вы для пользователей делаете карту?
  8. В строке xmlns:xhtml="https://www.w3.org/1999/xhtml" замените https на http, правильно будет так: xmlns:xhtml="http://www.w3.org/1999/xhtml"
  9. Вопрос был как лучше получить нужную часть кода из конкретного twig-файла. Нужно выдернуть часть шаблона из category.twig, а именно ту часть, где идет вывод товаров в цикле. Конечно, я могу сделать стандартно, как обычно все делают, шаблон модуля сверстать под тему дефолт и потом адаптировать его под каждую тему вручную. Но можно же это упростить, почему вы называете это костилем? В новой четвертой версии это уже реализовали на уровне движка. Генерирование шаблона при изменении темы - не проблема, вариантов много как это реализовать автоматически, можно без ocmod через ивенты, но я действительно написал самый простой вариант "отключить-включить", потому что изменение шаблона сайта это не ежедневная операция и обычно устанавливают шаблон, а потом модули. Но вы правы, что идеально будет, когда при изменении шаблона сайта будет автоматически обновляться шаблон модуля. Сохранять путь к сгенерированному шаблону в БД не вижу смысла, так как название текущего шаблона можно получить из настроек сайта, а название файла и его размещение внутри шаблона будет одно и то же для всех шаблонов. Видимо, вы не правильно поняли чего я хочу добиться в итоге. Я хотел бы, чтобы товары в модуле выглядели как и товары в других частях темы, например в категории, без ручной адаптации верстки.
  10. Модуль для вывода товаров, типа стандартного модуля "Рекомендуемые товары". Код блока товара в списке (блок, который повторяется в цикле товаров) хочу получить из шаблона сайта, а именно из файла product/category.twig и запихнуть его в отдельный шаблон, потом инклудить в своем модуле. Отдельного шаблона с блоком товара в большинстве шаблонов сайтов нет, поэтому просто подключить файл шаблона не получится. Генерироваться этот отдельный шаблон блока товара будет один раз - при установке модуля. Если клиент поменяет шаблон сайта - можно отключить-включить модуль, чтобы он адаптировался под шаблон. Регулярку уже подобрал. Парситься будет файл twig. Выполняться ничего не будет. Получил данные из файла, вырезал что нужно и записал это в файл.
  11. Понимаю. Поэтому спросил как лучше сделать. То, что нужно создать свой шаблон и прописать там свой цикл - я понимаю. Как раз в этом цикле хочу инклудить шаблон товара. Иначе придется под каждый новый шаблон сайта (тему) адаптировать шаблон модуля. Ищу решение для автоматизации этого дела, по крайней мере для большинства более-менее стандартных шаблонов. Уверен, что кто-то уже пробовал такое реализовать в подобных модулях для автоматической адаптации списка товаров под шаблон. В грядущей версии OpenCart шаблон блока товара уже вынесли в отдельный файл, а пока приходится крутить то что есть.
  12. Я написал в первом посте "записать этот код в отдельный файл, чтобы потом подключать его через include в других шаблонах". Идея такая: в модуле товаров, типа "Рекомендуемые", во время установки (в методе install()) хочу парсить с текущего шаблона блок товара и записать его в отдельный шаблон, чтобы подключать потом шаблоне модуля в цикле вывода товаров. Для чего? Для того, чтобы не делать адаптацию модуля под каждый новый шаблон вручную.
  13. Подскажите лучший способ как c помощью php спарсить кусок кода, отвечающий за вывод блока товара, из файла шаблона product/category.twig По идее, нужно спарсить все что находится внутри цикла {% for product in products %} и записать этот код в отдельный файл, чтобы потом подключать его через include в других шаблонах. Изначально получаю код файла и записыю в переменную: $content = file_get_contents(DIR_CATALOG . 'view/theme/'.$this->config->get('config_theme').'/template/product/category.twig'); А дальше регулярку писать или есть другие варианты? Если регулярка, то помогите составить выражение. Спасибо всем, кто отзовется!
  14. Восстановите оригинальный файл стилей admin/view/stylesheet/stylesheet.css из сборки OpenCart. Сбросьте кеш в браузере и проверьте работу чекбоксов.
  15. 1) Отключить способ оплаты "Оплата при доставке" 2) Включить способ оплаты "Оплата наличными" (или другой) (при необходимости переименовать его как вам угодно) 3) Отключить все способы доставки (необязательно) 4) В каждом товаре отключить параметр "Необходима доставка" или сделать это массово для всех товаров с помощью mysql запроса: UPDATE oc_product SET shipping = 0 5) Все. Доставка не будет отображаться ни в заказе ни в email-уведомлениях
  16. Установите OpenCart в отдельную папку на сайте. Закройте ее от индексирования. Можно установить ответ 404 на все страницы кроме корзины, оформления заказа. Создайте товары в OpenCart. MySQL запросом получите товары из базы данных OpenCart и выведите их на вашем самописном сайте. На кнопке "Купить" можно поставить ссылки полученные с помощью этого модуля https://opencartbot.com/ru/add-by-link В итоге, по клику на Купить на внешнем сайте клиент будет переадресован на страницу оформления заказа OpenCart.
  17. Так работает ЧПУ OpenCart, плодит дубли страниц. Проблему решит установка дополнения SEO Pro или других подобных. P.S. Или придется во всех контроллерах в строке, где формируется ссылка на товар $this->url->link(), передавать get-параметр path=1_2_3 (то есть id категорий товара). Но категории товара сначала нужно получить.
  18. Никак. Разве что вызывать из twig-шаблона js-функцию и передавать в аргументе текстовую переменную: myFunction('{{ heading_title }}');
  19. Как уже писали выше, у вас при переходе на главную где-то сбрасывается сессия или устанавливается язык по умолчанию, нужно искать где. По правильному, нужно сделать разные ссылки на разные языковые версии страницы и переход по ссылке - это переключение языка. Иначе поисковые боты не будут индексировать мультиязычные страницы. У меня есть дополнение к SEO Pro для правильной реализации языковых префиксов и переключения языков https://opencartbot.com/ru/seopro-multilang Кстати, пример его работы можно увидеть на том же сайте.
  20. Возможно, проблема из-за CSS-стилей, которые применяются у вас ко всем чекбоксам. Этот стиль мог добавить какой-то модуль или разработчик для стилизации чекбосов, но сделано это не правильно. Через инспектор кода в браузере проверьте какие стили применяются к чекбоксам, там должно быть что-то типа этого: input[type=checkbox] { -webkit-appearance: none; -moz-appearance: none; appearance: none; } Нужно убрать эти css-свойства и проблема решится. P.S. Скриншот доступен, я его вижу.
  21. А зачем вам две кнопки в форме поиска? Вместо этой "конструкции": $('#search input[name=\'search\']').parent().find('button') везде пропишите $('#main-search-button') или так $('#search form button') P.S. Только уберите пробелы в этой части шаблона: id = "main-search-button"
  22. В настройках второго магазина в поле "E-mail" пропишите ящик, который находится на том же почтовом домене, откуда идет отправка.
  23. Никогда не работал с этой платежкой, но выглядит все довольно просто, документация доступно написана, готовый модуль есть с примером реализации. Разбираете данные, которые приходят в ответе от платежки, если статус заказа оплачен ($this->request->post['pg_result'] == 1) - меняете его статус: $this->load->model('checkout/order'); $this->model_checkout_order->addOrderHistory($order_id, $order_status_id); Здесь $order_id - это номер заказа, платежка его передает ($this->request->post['pg_order_id']) или из сессии можно получить; $order_status_id - это id нужного успешного статуса заказа, можете посмотреть в админке, там где статусы заказов настраиваются в Система : Локализация : Статусы заказов. Если из коробки в OpenCart ничего не меняли, по умолчанию у статуса "Сделка завершена" (Complete) будет id = 5 В итоге, для смены статуса заказа у вас получится код: if ((int)$this->request->post['pg_result'] == 1) { $order_id = (int)$this->request->post['pg_order_id']; $order_status_id = 5; $this->load->model('checkout/order'); $this->model_checkout_order->addOrderHistory($order_id, $order_status_id); } Конечно, это минимальный код, который будет работать. По хорошему, нужно еще предварительно делать проверку секретного ключа и наличия получаемых параметров.
  24. Нужно правильно настроить и все будет работать как положено. В документации вашей платежки есть информация об этом Получение статуса платежа. После оплаты покупателем, ваш сайт получает уведомление через коллбэки, которые передаются в параметрах То есть, в форме оплаты нужно передавать url обработчика ответов, который как раз будет чистить сессию и менять статус заказа после оплаты. У этой платежки есть официальный модуль на Github, там можно посмотреть методы check() и callback(), которые как раз обрабатывают эти ответы. Или вообще можно установить этот модуль, настроить, и отдавать в вашей форме его callback url.
×
×
  • 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.