Magento:将查询字符串添加到产品网址的末尾?

时间:2011-02-24 14:32:09

标签: php zend-framework magento magento-1.4

问候!

我正在寻找一种更好的方法来进行修改.. 我将查询字符串添加到产品网址的末尾。例如,网址看起来像

http://demo.magentocommerce.com/coalesce-functioning-on-impatience-t-shirt.html?flagged=yes

注意?flagged = yes。

我目前正在通过将以下代码添加到list.phtml文件来执行此操作:

$query = '?flagged='.$answer;

然后我通过这样做将此查询字符串添加到产品网址的末尾:

$_product->getProductUrl().$query

我真的想尝试将修改从模板文件中删除。我知道可能有更好的方法。我已经尝试了所有我能想到的没有运气的东西,所以如果有人有任何想法,这将是伟大的!理想情况是设置观察者并将查询字符串添加到产品URL中。

我非常感谢任何想法或帮助!

4 个答案:

答案 0 :(得分:3)

$product->getUrlModel()->getUrl($product, array('_query' => array(
    'show_offers' => '1'
)))

答案 1 :(得分:1)

您可以使用此方法创建帮助程序:

public function getProductUrl($urlModel, $product, $query = array(), $useSid = null)
{
   if ($useSid === null) {
      $useSid = Mage::app()->getUseSessionInUrl();
   }

   if (!$useSid) {
      $params['_nosid'] = true;
   }

   if (!empty($query)) {
      $params['_query'] = $query;
   }

   return $product->getUrlModel()->getUrl($product, $params);
}

调用辅助方法:

getProductUrl($_product, array('flagged' => 'YES'));

这应该足够了。

答案 2 :(得分:0)

试试这个http_build_query

答案 3 :(得分:0)

没办法做到。仅覆盖产品模型并扩展getProductUrl()

function getProductUrl($params, $useSid = null) {
$url = pagent::getProductUrl($useSid);
// now parse url, add our parameters from array $params
// generate new url
return $url
}