php - 具有完整规范 url 的 Magento 产品导出

标签 php magento export command-line-interface canonical-link

有没有办法在命令行上获取带有当前规范 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 运行它,这给了我这样的东西:

http://www.domain.com/urlTest.php/catalog/product/view/_ignore_category/1/id/307/s/any_valid_product_url_key

最佳答案

默认情况下,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/

相关文章:

php - Magento 在上传时删除所有 EXIF 数据

magento - 如何在 magento 中发送基于类别的订单电子邮件?

vue.js - 如何在 vuetify 数据表上导出 csv、excel 按钮?

xml - 使用 xml 扩展 magento 管理

sql - 在 SQL 中将数据从一个数据库导出到另一个数据库时忽略重复的主键

iphone - 导出 CoreData 的快捷方式是什么?

PHP - 组合来自同一二维数组的 2 个元素

php - 在 JavaScript 中读取 PHP 关联数组值

php - 随机改变背景

php - 为 mailto 链接转义字符串的正确方法是什么