pr _প্রডাক্ট-> ইউআরএল কী ছাড়াই url পাথ প্রদান (getPr ProdctUrl))


15

আমি কয়েকটি ভিন্ন ম্যাজেন্টো সাইটের কোনও পৃষ্ঠায় একটি নির্দিষ্ট বিভাগের পণ্য সংগ্রহ পাচ্ছি। সংগ্রহটি পাওয়ার জন্য আমার কোডটি হ'ল:

        $category = new Mage_Catalog_Model_Category();
        $category->load($id);
        $collection = $category->getProductCollection();
        $collection->addAttributeToSelect('*');
        $collection->addAttributeToFilter('status', 1);
        $collection->addFieldToFilter(array(array('attribute'=>'visibility', 'neq'=>"1" )));
        $collection->getSelect()->limit(12);

        foreach ($collection as $shopProduct) :

            echo $shopProduct->getProductUrl();

        endforeach;

আমার সমস্যাটি হ'ল আমরা যে ম্যাজেন্টো সাইটগুলিতে আনতে চলেছি তা ProductUrl()হ'ল একটি ইউআরএল, এর http://www.my site.com/catalog/product/view/id/2309/s/shopcat/category/373/চেয়ে বেশি পছন্দ নয় http://www.site.com/shopcat/product-url-key.html। তবে অন্যান্য সমস্ত সাইটে এটি যেমনটি আমরা চাই ঠিক তেমন প্রদর্শিত হচ্ছে।

কেউ হতে পারে কেন এমন হতে পারে? ধন্যবাদ! আমি getUrlPath()খুব ব্যবহার করার চেষ্টা করেছি কিন্তু এটি কিছুই ফেরেনি। আমি জানি আমি এর মতো কিছু করে এই গোলটি পেতে পারি <?php echo $this->getBaseUrl().$shopProduct->getUrlKey().".html"; ?>তবে সে পদ্ধতিটি কিছুটা অক্ষম বলে মনে হচ্ছে!

সম্পাদনা 21/03/14: আমার এখনও এই সমস্যা হচ্ছে। আমি বুঝতে পেরেছি getProductUrl()সাইটের কয়েকটি টেমপ্লেট ফাইলগুলিতে অপরিচিত URL টি পুনরুদ্ধার করেছে তবে অন্যদের নয়। উদাহরণস্বরূপ, আমি হোমপৃষ্ঠায় একটি সংগ্রহ লোড করছি এবং এটি আমার চাইলে ইউআরএল দিচ্ছে। কিন্তু getProductUrl()কোনও বিভাগের ভিউতে একই কোডের সাথে আমার যে ইউআরএলগুলি চান তা দিচ্ছে না।


আপনি কি "সূচক ইউআরএল পুনর্লিখনগুলি" পুনরায় সূচি দেওয়ার চেষ্টা করেছিলেন?
oleksii.svarychevskyi

হ্যাঁ দয়া করে আপনার ডেটা পুনর্নির্দেশ করুন এবং ক্যাশে সরান
কীউল শাহ

দুটোই চেষ্টা করেছি। আমি ইনডেক্স ম্যানেজমেন্টে পুনরায় সূচি রেখেছি এবং আমি ক্যাশে সরিয়েছি, ক্যাশে যেভাবেই অক্ষম করা হয়েছিল।
সারা

অ্যাডমিন-> ক্যাটালোফ-> ইউআরএল পুনর্লিখন পরিচালনা লিখুন। ইউআরএল রেরেটস আছে? যদি হ্যাঁ গ্রিডটি ফিল্টার করার চেষ্টা করুন: টার্গেটের পথ -> [বিভাগ / কিছু_ ক্যাটাগরি_আইডি]
mageUz

উত্তরে দেরি করার জন্য খুব দুঃখিত প্রশ্নে থাকা পণ্যের জন্য একটি ইউআরএল পুনর্লিখন সেট আপ করা আছে, সুতরাং আপনি যদি সাইট. com / shopcat/ product-url- key.html বা সাইট. com/ catalog/ product/ view / id/ 2309 / s / shopcat/ এ যান বিভাগ / 373 আপনি এখনও একই পণ্য পৃষ্ঠাতে পৌঁছান, এটি ঠিক যে কোনও কারণে ফোরচ লুপটি ভুল প্রকারের ইউআরএলের মাধ্যমে টানছে।
সারা

উত্তর:


18

সংগ্রহটি এভাবে পাওয়ার চেষ্টা করুন:

$collection = $category->getProductCollection();
$collection->addAttributeToSelect('*');
$collection->addAttributeToFilter('status', 1);
$collection->addFieldToFilter(array(array('attribute'=>'visibility', 'neq'=>"1" )));
//Where the magic happens
//this will add the url rewrite.
//addUrlRewrite can also be left without a parameter to generate url without category.
$collection->addUrlRewrite($category->getId()); 
$collection->getSelect()->limit(12);

অন্য কথায়, মডেলটিকে দীর্ঘ কুৎসিত url এর পরিবর্তে url কী দিতে জানুন $collection->addUrlRewrite();


প্রশ্ন - কেন আপনি অ্যাডর্লরউইরাইটে $ বিভাগ-> getId () প্রয়োজন? আমি দেখতে পাচ্ছি যে এটি কোনওভাবেই কাজ করে (যেমন এমনকি এটি ছাড়াও)। ধন্যবাদ!
রোনেন নেস

2
হাই @ নেস, এটি আপনার যদি সিস্টেম / কনফিগারেশন / ক্যাটালগ / ক্যাটালগ / অনুসন্ধান ইঞ্জিন অপ্টিমাইজেশনে "পণ্য ইউআরএলগুলির জন্য বিভাগের পথগুলি চালু করে" থাকে তা নির্ভর করে। আপনি যদি তা না করেন তবে আপনি এটি উপেক্ষা করতে পারেন এবং কেবল addUrlRewrite () ব্যবহার করতে পারেন। আপনার যদি বিভাগের পথগুলি চালু থাকে তবে বিভাগ আইডিটি ফাংশনে পাস করার অর্থ যে পণ্যটির URL সরবরাহ করা হয় তা হ'ল বিভাগের রাস্তা দ্বারা প্রিপেন্ড করা পণ্য URL।
সারাহ

@ মারিয়াস হ্যাঁ এটি আমার পক্ষে কাজ করে।
ধারা ভাট্টি

8

একটি পণ্য ইউআরএল পাওয়া

আপনি যে 3 টি পদ্ধতি ব্যবহার করতে পারবেন তার কারণে সম্ভাব্য বিভ্রান্তিকরগুলি, সেগুলি সবগুলিই ম্যাগ_গ্যাটালগ_মোডেল_প্রডাক্টে রয়েছে:

public function getUrlPath($category=null)
public function getUrlInStore($params = array())
public function getProductUrl($useSid = null)

ব্যাখ্যা করার সর্বোত্তম উপায় হ'ল বেশ কয়েকটি কলের ফলাফলগুলি কেবল দেখানো। এমন একটি পণ্য দেওয়া হয়েছে যার ইউআরএল কীটি স্বর্ণের-বৃহত-কফি-টেবিল-সেট-মাল্টিকালার ডোমেনে http: //made.local এ রয়েছে: ফলাফলগুলি হ'ল :

$product->getUrlPath();
    'mondrian-large-coffee-table-set-multicolour'

$product->getUrlPath($category);
    'tables/mondrian-large-coffee-table-set-multicolour'

// you cannot stop this method adding ___store to the URL, even by setting _store_to_url to false
$product->getUrlInStore();
    'http://made.local/tables/mondrian-large-coffee-table-set-multicolour?___store=default'

// you cannot stop this method adding ___store to the URL, even by setting _store_to_url to false
// note - see the "using _ignore_category" section below for an arguable bug with using this param
$product->getUrlInStore(array('_ignore_category' => true));
    'http://made.local/mondrian-large-coffee-table-set-multicolour?___store=default'

$product->getProductUrl();
    'http://made.local/tables/mondrian-large-coffee-table-set-multicolour'

$product->getProductUrl(true);
    'http://made.local/tables/mondrian-large-coffee-table-set-multicolour'
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.