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

Определить id товара

Рекомендуемые сообщения

Добрый день.

 

Подскажите, пожалуйста.

Я пишу свой небольшой модуль. Всё получилось, только один момент не могу понять.

 

Как получить id продукта в контроллере в catalog-части своего модуля?

 

Единственный вариант, который я пока вижу - получать из $_GET['product_id'], но если урл изменен, то это не сработает?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В каком контроллере?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

в контроллере моего модуля (в части catalog)

 

<корень сайта>/catalog/controller/module/<название_моего_модуля>.php

 

но в целом в итоге весь модуль всегда будет вызываться на странице товара (точнее говоря результат работы модуля всегда будет отображаться на странице товара). И нужно передать в контроллер, какой id у товара.

 

 

да вообще в целом понять - как узнать id товара на странице товара. 

Изменено пользователем Neumann

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

$this->request->get('product_id')

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Извините, но это неправильный ответ на мой вопрос.

Во-первых, в моем контроллере нет свойства-объекта request (нужно отдельно создавать объект).

Во-вторых, get - это свойства-массив класса Request, а не метод (нужны квадратные скобки, а не круглые).

 

То есть то, что вы хотели мне сказать, пишется так.

$req = new Request();
$req->get['product_id'];
 
НО
это ведь будет работать, только если url не изменен, то есть такого вида /index.php?route=product/product&product_id=42
 
А у меня возможно будет чпу-урлы. То есть мне нужно универсальный способ.получения id продукта
 
Никак не могу найти, как же это получить  :unsure:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А вы проверили, что утверждаете, что это неправильный ответ? И так безапелляционно...

 

А теперь внимательно смотрите!!!!

abstract class Controller {
	public function __construct($registry) {
		$this->registry = $registry;
	}

Видите конструктор?

 

А вот вам

// Request
$request = new Request();
$registry->set('request', $request);

Еще до создания contoller

// Front Controller
$controller = new Front($registry);

Так что...

 

 

 

НО
это ведь будет работать, только если url не изменен, то есть такого вида /index.php?route=product/product&product_id=42

Это будет работать и при ЧПУ и не ЧПУ

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Извините, конечно, если мои слова прозвучали для вас как-то грубо. Я очень благодарен вам за ответы)

 

Я сейчас проверил еще раз)

Насчет того, что свойство $this->request нету - моя ошибка! На самом деле есть. Тут вы меня правильно поправили, извините)

 

Однако ваш пример все равно не сработал бы (и не сработал, когда я первый раз пробовал)

потому что вы после get поставили круглые скобки, а метода get (по крайней мере в моей версии 1.5.6.1) нет.

есть публичное свойство-массив get! так что нужны квадратные скобки.

 

Так что... )

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ну да... я ошибся...

$this->request->get['product_id']

 

есть публичное свойство-массив get! так что нужны квадратные скобки.

Да-да....

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

И по поводу чпу

 

 

Это будет работать и при ЧПУ и не ЧПУ

 

Вы уверены?

Я смотрел в классе Request. Свойство get просто заполняется из глобального массива $_GET. А откуда там будет product_id, если строка адреса будет например site.ru/products/supertovar/

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
Вы уверены?

 

А вы проверили?

 

чтоб уж окончательно добить цитированием кода...

из seo_url

if (isset($this->request->get['_route_'])) {
			$parts = explode('/', $this->request->get['_route_']);
			
			foreach ($parts as $part) {
				$query = $this->db->query("SELECT * FROM " . DB_PREFIX . "url_alias WHERE keyword = '" . $this->db->escape($part) . "'");
				
				if ($query->num_rows) {
					$url = explode('=', $query->row['query']);
					
					if ($url[0] == 'product_id') {
						$this->request->get['product_id'] = $url[1];

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

да я же просто спросил)

не надо меня никак добивать))

 

большое спасибо за развернутые ответы

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Похожий контент

    • От Serg9988
      600.00 руб
      Скачать/Купить дополнение


      Уведомление о наличии PRO Opencart2
      Уведомление о наличии товара PRO
       
      Начиная с версии модуля 9.5, модуль работает только на opencart 2.3.* - 3.0* и OCStore 2.3.*
       
      Краткое описание:
      Модуль позволяет покупателю заказать уведомление о поступлении товара в магазин.
      Модуль заменяет кнопку "Купить" на кнопку "Уведомить", если товара нет на складе или выбранной покупателем опции у товара нет в наличии.
      Работает по:
      количеству товара на складе по количеству опций на товаре по статусу товара  

      Возможности:
       
       История запросов уведомлений от пользователей в панели администратора   Возможность ручного отключения уведомлений   Обработка всего уведомления одним нажатием   Автоматическое уведомление о отправке   on / off Google captcha   Модуль работает с модулями по умолчанию (специальные, последние и другие модули).  Модуль работает на всех страницах   Добавлена настройка - отправлять уведомление после любых изменений в информации о продукте (только если этот продукт имеется на складе)   Модуль может использовать опции товаров (необязательно включается в настройке модуля).  Добавляет информацию о новых уведомлениях на панели управления   Пользователь может видеть историю своих уведомлений   Работает с настраиваемыми темами   Вы можете изменить шаблоны писем С версии 9.6
      возможность добавлять произвольные поля  возможность добавления данных произвольных полей в шаблоны писем  
       

       
       
       
       
      К модулю идет инструкция где подробно описано как установить и настроить модуль. 
      Адаптация, правки вида модуля и другие работы на не стандартном шаблоне делаются за отдельную плату.
       
      Модуль работает на шаблонах:
        moneymaker2
       
      ознакомится с документацией - ДОКУМЕНТАЦИЯ
       
      Системные/технические требования:
      Протестировано на следующих версиях : 
      ocstore 2.0*,2.1*,2.2*.2.3* opencart 2.0*,2.1*,2.2*.2.3*, 3.0*   Модуль не тестировался и его работа не гарантируется на всякого рода зборках ocstore или opencart от студий или отдельных разработчиков. Работа гарантируется только на чистых официальных сборках!
       
      Для работы модуля требуется:
      PHP Version: 5.6.x или выше
      ionCube PHP Loader: 4.5.0+ или выше
       
      Возможности:
       
       

       
       
      В планах реализовать:
      возможность создания собственных полей на форму с возможностью использовать их в письмах отправка уведомлений по смс построение отчетов по заявкам и выгрузка из в Exsel  
       
      Дизайн модуля адаптивен и корректно работает на мобильных устройствах:
       

       
      Установка:
       Скачайте архив с нужной версией модуля. Модуль с версии 9.5 работает только на opencart 2.3 и выше и OCStore 2.3 и выше.  Зайдите в административную панель сайта в раздел "Дополнения/Установка дополнений" и установите модуль  Зайдите в раздел "Дополнения/Менеджер дополнений" и обновите кеш  Зайдите в раздел "Дополнения/Дополнения/Модули" Установите модуль "SM Уведомить о наличии PRO"  Зайдите в редактирование модуля (введите ключ активации или сделайте запрос на получение ключа ) активируйте модуль переведя опцию "Статус" в позицию "Включен.              Сохраните настройки  Подключите модуль на страницы Главная, категории, товары и тд. (Раздел Дизайн/Схемы)  
      Состав модуля:
      полная инструкция с описанием работы и установки модуля; файлы модуля; файл для тестирования настроек сервера;  
      ДЕМО 
      Страница товара с опциями (кнопка купить будет подменена только если выбрать опцию количество которой <=0)
      login/pass - demo/demo
       
      Полное описание:
       
      Все работы по стилизации модуля под ваш шаблон (цвет кнопки, форма размер и тд.) проводяться исключительно на платной основе.
       
      Что нового:
       
      Обновление:
       
      Условия использования:
      Лицензия на модуль выдается на следующих условиях:
      1 лицензия = 1 покупка = 1 доменное имя.
      То есть - один раз купив, вы получаете ключ для работы модуля только на одном доменном имени, одном магазине!
       
      Приобретая лицензию (покупая дополнение), Вы автоматически соглашаетесь со следующими положениями:
       
      Для получения лицензионного ключа напишите мне в личном сообщении от имени того, на кого покупался модуль:
      Название модуля Доменное имя вашего магазина Доменное имя тестовой площадки (если таковая имеется) Ваш адрес электронной почты, куда выслать ключ  
      Дополнительные лицензии вы можете получить купив модуль на сайте http://myopencart.club/
      На 4-ю и более покупку действует скидка. Чтобы получить скидку пишите в личку или на почту.
      Вопросы, пожелания можно писать в форум или на почту support@myopencart.club
       
      Добавил Serg9988 Добавлено 30.03.2016 Категория Письма, почта, рассылки, sms Системные требования Ioncube Loader 4.5.0+ Сайт разработчика http://myopencart.club Старая цена Метод активации По запросу в ЛС Ioncube Loader Требуется OpenCart 3.0
      2.3
      2.2
      2.1
      2.0 ocStore 2.3
      2.2
      2.1 OpenCart.Pro, ocShop Не проверялось  
    • От Serg9988
      Уведомление о наличии товара PRO
       
      Начиная с версии модуля 9.5, модуль работает только на opencart 2.3.* - 3.0* и OCStore 2.3.*
       
      Краткое описание:
      Модуль позволяет покупателю заказать уведомление о поступлении товара в магазин.
      Модуль заменяет кнопку "Купить" на кнопку "Уведомить", если товара нет на складе или выбранной покупателем опции у товара нет в наличии.
      Работает по:
      количеству товара на складе по количеству опций на товаре по статусу товара  

      Возможности:
       
       История запросов уведомлений от пользователей в панели администратора   Возможность ручного отключения уведомлений   Обработка всего уведомления одним нажатием   Автоматическое уведомление о отправке   on / off Google captcha   Модуль работает с модулями по умолчанию (специальные, последние и другие модули).  Модуль работает на всех страницах   Добавлена настройка - отправлять уведомление после любых изменений в информации о продукте (только если этот продукт имеется на складе)   Модуль может использовать опции товаров (необязательно включается в настройке модуля).  Добавляет информацию о новых уведомлениях на панели управления   Пользователь может видеть историю своих уведомлений   Работает с настраиваемыми темами   Вы можете изменить шаблоны писем С версии 9.6
      возможность добавлять произвольные поля  возможность добавления данных произвольных полей в шаблоны писем  
       

       
       
       
       
      К модулю идет инструкция где подробно описано как установить и настроить модуль. 
      Адаптация, правки вида модуля и другие работы на не стандартном шаблоне делаются за отдельную плату.
       
      Модуль работает на шаблонах:
        moneymaker2
       
      ознакомится с документацией - ДОКУМЕНТАЦИЯ
       
      Системные/технические требования:
      Протестировано на следующих версиях : 
      ocstore 2.0*,2.1*,2.2*.2.3* opencart 2.0*,2.1*,2.2*.2.3*, 3.0*   Модуль не тестировался и его работа не гарантируется на всякого рода зборках ocstore или opencart от студий или отдельных разработчиков. Работа гарантируется только на чистых официальных сборках!
       
      Для работы модуля требуется:
      PHP Version: 5.6.x или выше
      ionCube PHP Loader: 4.5.0+ или выше
       
      Возможности:
       
       

       
       
      В планах реализовать:
      возможность создания собственных полей на форму с возможностью использовать их в письмах отправка уведомлений по смс построение отчетов по заявкам и выгрузка из в Exsel  
       
      Дизайн модуля адаптивен и корректно работает на мобильных устройствах:
       

       
      Установка:
       Скачайте архив с нужной версией модуля. Модуль с версии 9.5 работает только на opencart 2.3 и выше и OCStore 2.3 и выше.  Зайдите в административную панель сайта в раздел "Дополнения/Установка дополнений" и установите модуль  Зайдите в раздел "Дополнения/Менеджер дополнений" и обновите кеш  Зайдите в раздел "Дополнения/Дополнения/Модули" Установите модуль "SM Уведомить о наличии PRO"  Зайдите в редактирование модуля (введите ключ активации или сделайте запрос на получение ключа ) активируйте модуль переведя опцию "Статус" в позицию "Включен.              Сохраните настройки  Подключите модуль на страницы Главная, категории, товары и тд. (Раздел Дизайн/Схемы)  
      Состав модуля:
      полная инструкция с описанием работы и установки модуля; файлы модуля; файл для тестирования настроек сервера;  
      ДЕМО 
      Страница товара с опциями (кнопка купить будет подменена только если выбрать опцию количество которой <=0)
      login/pass - demo/demo
       
      Полное описание:
       
      Все работы по стилизации модуля под ваш шаблон (цвет кнопки, форма размер и тд.) проводяться исключительно на платной основе.
       
      Что нового:
       
      Обновление:
       
      Условия использования:
      Лицензия на модуль выдается на следующих условиях:
      1 лицензия = 1 покупка = 1 доменное имя.
      То есть - один раз купив, вы получаете ключ для работы модуля только на одном доменном имени, одном магазине!
       
      Приобретая лицензию (покупая дополнение), Вы автоматически соглашаетесь со следующими положениями:
       
      Для получения лицензионного ключа напишите мне в личном сообщении от имени того, на кого покупался модуль:
      Название модуля Доменное имя вашего магазина Доменное имя тестовой площадки (если таковая имеется) Ваш адрес электронной почты, куда выслать ключ  
      Дополнительные лицензии вы можете получить купив модуль на сайте http://myopencart.club/
      На 4-ю и более покупку действует скидка. Чтобы получить скидку пишите в личку или на почту.
      Вопросы, пожелания можно писать в форум или на почту support@myopencart.club
       
    • От alexandrkrot1993
      300 RUB
      Переглянути файл


      Галерея товара в категории

      Галерея товара в категории
      Это продолжение бесплатного модификатора .
      Добавлены настройки - сможете настроить под себя.
      Добавляет миникартинки товаров .
      При наведении на миникартинки, происходит смена главной картинки товара.
      можно настроить

      Добавлены стрелки прокрутки, если картинок много

       
      Данный модуль представлен для default темы, интеграция под разные темы будет происходить постепенно и по запросу в личные сообщения
      Демо
      Перед покупкой напишите свою тему в лс!
       
       
      Автор alexandrkrot1993 долучення 25.10.18 Категорія Слайдшоу, баннеры, галереи Системные требования Сайт разработчика http://pechenki.top Старая цена 350 Метод активации Без активации Ioncube Loader Нет OpenCart 3.0
      2.3
      2.2
      2.1 ocStore 3.0
      2.3
      2.2
      2.1 OpenCart.Pro, ocShop Opencart.pro 2.3
      Opencart.pro 2.1  
    • От alexandrkrot1993
      Галерея товара в категории
      Это продолжение бесплатного модификатора .
      Добавлены настройки - сможете настроить под себя.
      Добавляет миникартинки товаров .
      При наведении на миникартинки, происходит смена главной картинки товара.
      можно настроить

      Добавлены стрелки прокрутки, если картинок много

       
      Данный модуль представлен для default темы, интеграция под разные темы будет происходить постепенно и по запросу в личные сообщения
      Демо
      Перед покупкой напишите свою тему в лс!
       
       
    • От Timur3294237423428934
      Здравствуйте, не подскажите, как можно при нажатии на товар выводить его не на отдельной странице, а в модальном окне? Сложно ли такое осуществить?
  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

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

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