Вот альтернативное решение.
Сначала используйте модель перезаписи URL-адреса, чтобы найти маршрут, соответствующий вашему продукту:
$vPath = 'electronics/cameras/olympus-stylus-750-7-1mp-digital-camera.html';
$oRewrite = Mage::getModel('core/url_rewrite')
->setStoreId(Mage::app()->getStore()->getId())
->loadByRequestPath($vPath);
Затем вы можете вызвать getProductId () на маршруте, чтобы найти идентификатор продукта:
$iProductId = $oRewrite->getProductId();
Наконец, если вам нужен сам объект модели продукта, тогда просто позвонить:
$oProduct = Mage::getModel('catalog/product')->load($iProductId);
Основное различие между приведенным выше и примером кода, который вы опубликовали, заключается в обращении кsetStoreId.Один и тот же продукт может иметь разные URL-адреса в зависимости от того, в каком хранилище он находится, поэтому компоненту маршрутизации необходимо иметь соответствующий контекст магазина, прежде чем он сможет найти продукт для отображения.
Преимущество этого по сравнению с решением Захари Шуесслера заключается в том, чтос помощью переписывающего устройства URL каждый раз будет обнаруживаться нужный продукт, если конечные части URL-адреса одинаковы для разных продуктов (например, folder1 / my-product-name и folder2 / my-product-name - разные продукты).Использование средства перезаписи URL также работает в ситуациях, когда «folder1 / my-product» относится к разным продуктам в разных магазинах.Это может относиться или не относиться к вашей среде.