Tôi không nghĩ có một cách 'được xây dựng' để đạt được điều này.
Phương pháp Mage_Catalog_Model_Url::getUrl()
không chấp nhận bất kỳ tham số. Bạn có thể ghi đè phương thức, nhưng trừ khi bạn cần một cái gì đó như thế này cho tất cả các danh mục, tôi không thấy một điểm nào khi thực hiện.
Tôi nghĩ rằng cách rẻ nhất là thêm các tham số trực tiếp.
$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;
}
Bạn có thể biến phương thức này thành một trình trợ giúp để tránh viết mã mỗi khi bạn cần.
Đối với bất kỳ url nào khác mà bạn xây dựng thông qua Mage::getUrl()
bạn có thể chuyển các tham số truy vấn như thế này:
$url = Mage::getUrl('module/controller/action', array('param1'=>'val1', '_query'=>array('p1'=>'v1', 'p2'=>'v2')));
đoạn mã trên sẽ tạo ra các mục sau:
http://mysite.com/module/controll/action/param1/val1/?p1=v1&p2=v2