有没有办法在命令行上获取带有当前规范 url 的产品列表?
class Mage_Shell_UrlTest extends Mage_Shell_Abstract
{
public function run()
{
$productCollection = Mage::getResourceModel('catalog/product_collection')
->addStoreFilter()
->addUrlRewrite()
->addAttributeToSelect('*')
->setPageSize(10) // just for testing
->addFieldToFilter('visibility',Mage_Catalog_Model_Product_Visibility::VISIBILITY_BOTH)
->addAttributeToFilter('status', array(
'eq' => Mage_Catalog_Model_Product_Status::STATUS_ENABLED
));
Mage::getSingleton('cataloginventory/stock')
->addInStockFilterToCollection($productCollection);
foreach ($productCollection as $product) {
$url = $product->getUrlModel()->getUrl($product, array('_ignore_category' => true));
echo PHP_EOL . $url . PHP_EOL; // debug output
}
}
}
$shell = new Mage_Shell_UrlTest();
$shell->run();
我用 php -f magento/shell/urlTest.php 运行它,这给了我这样的东西:
最佳答案
默认情况下,magento 使用相同的代码在 Mage_Catalog_Block_Product_View::_prepareLayout()
中获取规范 url,因此代码应该没问题。唯一的区别是代码针对哪个商店执行。
它在 shell 脚本中不起作用,因为它们是为管理存储执行的(参见 Mage_Shell_Abstract::__construct()
,其中初始化了 Mage::app()
).您可以使用 Mage::app()->setCurrentStore('default');
,您需要将 default
替换为您的商店,并且应该打印正确的 url。
关于php - 具有完整规范 url 的 Magento 产品导出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24490169/