기존 URL 문자열에 쿼리 매개 변수 추가 중이며 그 위에

Magento에서 URL 문자열이 있으면 쿼리 매개 변수를 추가하는 데 사용할 수있는 내장 함수가 있습니까?

정확한 경우, 카테고리 URL을 생성 중이며 그 위에 쿼리 매개 변수 세트를 추가하고 싶습니다.

나는 다음을하고있다 :

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

그런 다음 다음 쿼리 매개 변수를 추가하고 싶습니다.

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

그런 다음 다음과 같이 끝내고 싶습니다.

http://mysite.com/mycategory.html?param1=myparam1&param2=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);