2014-06-30 7 views
7

वहाँ एक रास्ता कमांड लाइन पर उनके वर्तमान विहित यूआरएल के साथ उत्पादों की एक सूची प्राप्त करने के लिए है?Magento उत्पाद निर्यात

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(); 

मैं -f Magento/खोल/urlTest.php php के साथ चलाने के लिए और यह मेरे कुछ इस तरह देता है:

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

+0

Magento संस्करण 1.7.0.2 –

उत्तर

4

डिफ़ॉल्ट Magento द्वारा Mage_Catalog_Block_Product_View::_prepareLayout() में विहित यूआरएल पाने के लिए एक ही कोड का उपयोग करता है तो कोड ठीक होना चाहिए। केवल अंतर यह है कि किस स्टोर को कोड निष्पादित किया जाता है।

यह शैल स्क्रिप्ट में काम नहीं करता है क्योंकि उन्हें व्यवस्थापक स्टोर के लिए निष्पादित किया जाता है (Mage_Shell_Abstract::__construct() देखें जहां Mage::app() प्रारंभ किया गया है)। आप Mage::app()->setCurrentStore('default'); इस्तेमाल कर सकते हैं जहां default अपनी दुकान से प्रतिस्थापित करने की आवश्यकता है और सही यूआरएल मुद्रित किया जाना चाहिए।

+2

इस पूरी तरह से समझ में आता है –

-2

मैं शायद ठीक से समझ में नहीं आता कि आप "विहित द्वारा क्या मतलब यूआरएल "लेकिन यदि आपका मतलब है कि उसके आईडी के साथ उत्पाद का यूआरएल और अंत में कुंजी जो आम तौर पर Magento के लिए" कैनोलिक यूआरएल "है, क्योंकि इसे एक पल में अद्वितीय माना जाता है, तो आपको बस के पैरा को दूर करना चाहिए getUrl। आप कुंजी नहीं करना चाहते हैं, तो आप अभी भी उपयोग कर सकते हैं:

$url = substr($url, 0, strrpos('/s/')); 

मुझे आशा है कि यह मदद करता है, अगर नहीं, तो कृपया सटीक परिणाम आप चाहते हैं।

+0

माफ करना, आप Magento इस सवाल का जवाब देने के साथ familar होना चाहिए। कैननिकल लिंक बिना किसी श्रेणी-सूचनाओं या किसी अन्य चीज़ के उत्पाद के लिए अद्वितीय यूरी है। इसके अलावा Magento में नामित उत्पाद यूआरएल कुंजी –

+0

को हल करने के लिए core_rewrite_url नामक एक तालिका है, इसलिए कृपया मेरा उत्तर दोबारा पढ़ें और आपको Magento परिभाषा में कैनोलिक यूआरएल प्राप्त करना चाहिए। –

+0

नहीं, अपने समाधान –

संबंधित मुद्दे