Ваш вопрос все еще немного неясен, поэтому этот ответ может не решить конкретную проблему, с которой вы столкнулись.
Основная команда Magento не проделала большую работу по распространению такого рода вещей на протяжении многих лет, но loadByRequestPath
является одним из тех методов, который лучше всего рассматривать как «приватный API». Не в смысле ООП, а в том, что «это метод, используемый для реализации основных функций системы, и, вероятно, он не будет работать так, как вы думаете, он должен работать, поэтому используйте на свой страх и риск».
PHP-код, который вы пытаетесь использовать
$productRewrite = Mage::getModel('core/url_rewrite') ->loadByRequestPath($product->getUrlPath());
не будет работать с установкой Magento по умолчанию, потому что для объекта перезаписи не установлен идентификатор магазина. Попытка что-то вроде этого должно работать. (при условии примера данных с установленным объектом магазина с идентификатором «1» и тем, что рассматриваемый продукт существует в этом магазине)
$productRewrite = Mage::getModel('core/url_rewrite');
$productRewrite->setStoreId(1);
$productRewrite->loadByRequestPath($product->getUrlPath());
Метод loadByRequestPath
предполагает, что перезапись уже имеет установленный идентификатор магазина, поскольку он является частью более крупного процесса диспетчеризации Magento . (самостоятельная ссылка на статью, описывающую роль переписывания в системе маршрутизации Magento)
Все это говорит, что проблема, которую вы описываете, несколько запутана. Вы говорите, что
Zend_Debug::dump($path);
возвращает
массив, содержащий путь к моему модулю
Хотя я уверен, что вы знаете, что означает фраза "путь к моему модулю", это бессмысленный термин в большей вселенной magento. Более конкретное понимание буквальной ценности поможет людям понять, что вы имеете в виду.
Кроме того, вы также говорите
Я убедился, что $ product-> getUrlPath () возвращает правильный путь.
но вам не ясно значение "правильный путь".
Я предполагаю, что путь, который вы видите в Zend_Debug::dump
, - это вызов, который проходит как часть стандартной отправки, а не ваш более поздний вызов с использованием $product->getUrlPath()
. Однако из-за отсутствия ясности в вашем вопросе это трудно сказать.
Если установка идентификатора магазина не дает того, что вы хотите, обновите ваш вопрос, объяснив, как вы выполняете свой код и что вы видите на экране. С этой информацией больше людей смогут вам помочь.