বিদ্যমান url স্ট্রিংয়ে ক্যোয়ারী প্যারামিটার যুক্ত করুন


16

ম্যাজেন্টোতে যদি আমার কাছে একটি ইউআরএল স্ট্রিং থাকে তবে এমন কোনও বিল্ট ফাংশন রয়েছে যা আমি এটিতে ক্যোয়ারী প্যারামিটার যুক্ত করতে ব্যবহার করতে পারি?

যথাযথ ক্ষেত্রে আমি দেখছি যে আমি একটি বিভাগের URL তৈরি করছি এবং তারপরে আমি এর উপরে ক্যোয়ারী প্যারামিটারগুলির একটি সেট যুক্ত করতে চাই।

আমি নিম্নলিখিতগুলি করছি:

$categoryUrl = Mage::getModel('catalog/category')->load(1)->getUrl();

আমি নীচের ক্যোয়ারী প্যারামিটারগুলি যুক্ত করতে চাই:

array('param1' => 'myparam1','param2' => 'myparam2');

আমি তখন শেষ করতে চাই:

http://mysite.com/mycategory.html?param1=myparam1&param2=myparam2

আপনি যা অর্জন করার চেষ্টা করছেন তার উদাহরণ দিতে পারেন? আপনি কীভাবে বিভাগের ইউআরএল তৈরি করছেন এবং কাঙ্ক্ষিত ফলাফল কী?
মারিয়াস

এটি প্রতিফলিত করার জন্য আপডেট হওয়া প্রশ্ন
মার্টি ওয়ালেস

উত্তর:


10

আমি মনে করি না এটি অর্জনের জন্য 'বিল্ট ইন' উপায় রয়েছে।
পদ্ধতিটি Mage_Catalog_Model_Url::getUrl()কোনও পরামিতি গ্রহণ করে না। আপনি এই পদ্ধতিটি ওভাররাইড করতে পারেন, তবে যতক্ষণ না আপনার সমস্ত বিভাগের জন্য এর মতো কিছু দরকার হয় আমি এটি করার কোনও বিন্দু দেখতে পাই না।
আমি মনে করি সবচেয়ে সহজ উপায় হ'ল প্যারামিটারগুলি সরাসরি যুক্ত করা।

$params = array('param1' => 'myparam1','param2' => 'myparam2');
$categoryUrl = Mage::getModel('catalog/category')->load(1)->getUrl();
$urlParams = array();
foreach ($params as $name=>$value){
    $urlParams[] = $name.'='.urlencode($value);
}
$urlParams = implode('&', $urlParams);
if ($urlParams){
    $glue = '?';
    if (strpos($categoryUrl, $glue) !== false){//this should never happen - but just in case
        $glue = '&';
    }
    $categoryUrl .= $glue.$urlParams;
}

আপনার প্রয়োজন প্রতিটি সময় কোডটি এড়াতে আপনি কোনও সহায়ক হিসাবে এটি একটি পদ্ধতি তৈরি করতে পারেন।

আপনার মাধ্যমে তৈরি করা অন্য যে কোনও Mage::getUrl()ইউআরএলের জন্য আপনি কোয়েরি প্যারামগুলি এইভাবে পাস করতে পারবেন:

$url = Mage::getUrl('module/controller/action', array('param1'=>'val1', '_query'=>array('p1'=>'v1', 'p2'=>'v2')));

উপরের কোডটি নিম্নলিখিত উত্পন্ন করবে:

http://mysite.com/module/controller/action/param1/val1/?p1=v1&p2=v2


@ সিমন ... ডাউনভোট করার সময় একটি কারণ দিন।
মারিয়াস

দুঃখিত, কিছুটা দ্রুত ছিল - প্রথম কোড ব্লকটি পছন্দ করেন নি, কারণ এটি অর্জনের জন্য একটি অন্তর্নির্মিত উপায় রয়েছে তবে আপনিও সেই পথটি দেখান, তাই ভাল।
সাইমন

... এবং এখন আমি আর আমার ভোট পরিবর্তন করতে পারি না (যা আমি সমস্ত এসই সাইটে প্রচুর অপছন্দ করি)। যাইহোক, আমি মনে করি এটি আশ্চর্যজনক যে আপনি দেখতে পারবেন যে আপনার উত্তর কে হ্রাস করেছে: /
সাইমন

@Simon। আমি মনে করি এটির জন্য আমি কিছুটা ভুল ছিল। অন্য উত্তরে কী লিখেছেন বেনমার্কগুলি দেখুন। সুতরাং আপনার ডাউন ভোটের একটি ভাল কারণ ছিল। আমি কেবল বলেছি যে ডাউনটিভোট করার সময় আপনার একটি কারণ দেওয়া উচিত। এবং নিশ্চিন্ত, আপনি কে দেখতে পারবেন না এসও-তে উত্তরগুলি কমেছে। আমি কিছুটা তদন্ত করেছি। কারন এই ওয়েবসাইটে বিপুল পরিমাণে ভোট নেই এবং ব্যবহারকারীরা কাকে হ্রাস পেয়েছে তা খুঁজে বের করার পক্ষে এটি সহজ ধরনের। আমি কীভাবে জানতে পেরেছিলাম তা আমি আপনাকে বলব না, তবে আমি কেবল এটিই বলতে পারি যে রবিবার এবং সোমবারে কারা কমেছে তা দেখতে একরকম সহজ easy :)।
মারিয়াস

LOL ঠিক আছে :) হ্যাঁ, আমি মনে করি এই প্রশ্নে বেনস উত্তরটি গ্রহণযোগ্য হওয়া উচিত ছিল। যাইহোক, ধন্যবাদ এবং ভাল কাজ চালিয়ে যান!
সাইমন

26
echo Mage::getUrl('',
    array(
        '_direct' => Mage::getModel('core/url_rewrite')->loadByIdPath('category/1')->getRequestPath(),
        '_query' => array('param1' => 'myparam1','param2' => 'myparam2')
    )
);

2
এটিই আসল উত্তর।
জেমসহালসাল

আমি মনে করি না যে এর সর্বোত্তম উত্তর আছে, কারণ কোনও ইউআরএল-এ প্যারামগুলি পাস করা ম্যাজেন্টোর পক্ষে নির্দিষ্ট নয়, যদিও ম্যাগেন্তোর এটির জন্য একটি পদ্ধতি রয়েছে।
টাইলার ম্যাগিনিস

1
@ টাইলারম্যাগিনিস "কি এমন কোনও বিল্ট ফাংশন আছে [
11:51

8

আপনি কোর / ইউআরএল সহায়ক ব্যবহার করতে পারেন :

$params = array('param1' => 'myparam1', 'param2' => 'myparam2');
$newCategoryUrl = Mage::helper('core/url')->addRequestParam($categoryUrl, $params);
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.