Magento에서 URL 문자열이 있으면 쿼리 매개 변수를 추가하는 데 사용할 수있는 내장 함수가 있습니까?
정확한 경우, 카테고리 URL을 생성 중이며 그 위에 쿼리 매개 변수 세트를 추가하고 싶습니다.
나는 다음을하고있다 :
$categoryUrl = Mage::getModel('catalog/category')->load(1)->getUrl();
그런 다음 다음 쿼리 매개 변수를 추가하고 싶습니다.
array('param1' => 'myparam1','param2' => 'myparam2');
그런 다음 다음과 같이 끝내고 싶습니다.
http://mysite.com/mycategory.html?param1=myparam1¶m2=myparam2
답변
나는 이것을 달성하기위한 ‘내장 된’방법이 없다고 생각합니다.
이 메소드 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;
}
필요할 때마다 코드를 작성하지 않도록 도우미에서 메소드를 만들 수 있습니다.
구성하는 다른 URL의 경우 다음 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
답변
echo Mage::getUrl('',
array(
'_direct' => Mage::getModel('core/url_rewrite')->loadByIdPath('category/1')->getRequestPath(),
'_query' => array('param1' => 'myparam1','param2' => 'myparam2')
)
);
답변
코어 / URL 헬퍼를 사용할 수 있습니다 :
$params = array('param1' => 'myparam1', 'param2' => 'myparam2');
$newCategoryUrl = Mage::helper('core/url')->addRequestParam($categoryUrl, $params);