기존 URL 문자열에 쿼리 매개 변수 추가


16

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

얻고 자하는 것에 대한 예를 들어 줄 수 있습니까? 카테고리 URL을 어떻게 생성하고 원하는 결과는 무엇입니까?
Marius

이것을 반영하도록 업데이트 된 질문
Marty Wallace

답변:


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;
}

필요할 때마다 코드를 작성하지 않도록 도우미에서 메소드를 만들 수 있습니다.

구성하는 다른 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


@Simon ... 비공식적 인 이유를 제시하십시오.
Marius

죄송합니다. 너무 빨랐습니다. 첫 번째 코드 블록이 마음에 들지 않았습니다. 기본적으로이 방법을 수행 할 수있는 방법이 있지만 그 방법도 모두 잘 보여줍니다.
Simon

... 이제 더 이상 투표를 변경할 수 없습니다 (모든 SE 사이트에서 많이 싫어함). 어쨌든, 나는 누가 당신의 답을 공감했는지 볼 수 있다는 것이 매우 이상하다고 생각합니다 : /
Simon

@ 시몬. 나는 이것에 대해 약간 잘못했다고 생각합니다. 다른 답변에서 벤 마크가 쓴 내용을보십시오. 그래서 당신의 투표권은 정당한 이유가있었습니다. 난 당신이 downvoting 때 이유를 제공해야한다고 말했다. 그리고 누가 SO에 대한 답을 공감했는지 알 수 없습니다. 방금 조금 조사했습니다. 이 웹 사이트에는 많은 표와 사용자가 없기 때문에 누가 투표를 거부했는지 쉽게 알 수 있습니다. 내가 어떻게 알게되었는지 말하지는 않겠지 만, 일요일과 월요일에 누가 다운 봇을했는지 쉽게 알 수 있다는 것입니다. :).
Marius

LOL okay :) 네, 벤스의 대답은이 질문에서 받아 들여질 것입니다. 어쨌든, 감사하고 좋은 일을 계속하십시오!
시몬

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

2
이것이 실제 답변입니다.
JamesHalsall

URL에 매개 변수를 전달하는 것이 Magento에만 국한되지는 않지만 Magento에 대한 방법이 포함되어 있기 때문에 이에 대한 최선의 대답은 없다고 생각합니다.
Tyler Maginnis

1
@TylerMaginnis "[URL 문자열에] 쿼리 매개 변수를 추가하는 데 사용할 수있는 내장 함수 [Magento]가 있습니까?"
benmarks

8

코어 / URL 헬퍼를 사용할 수 있습니다 :

$params = array('param1' => 'myparam1', 'param2' => 'myparam2');
$newCategoryUrl = Mage::helper('core/url')->addRequestParam($categoryUrl, $params);
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.