Magento lets you get url with or without parameters as below:
// get base url Mage::getUrl() // http://dltr.org/
// get base url and index.html page Mage::getUrl('index.html') // http://dltr.org/index.html // get brands page with id parameter Mage::getUrl('brands/brand', array('id' => 1)); // http://dltr.org/brands/brand/id/1 // get secure url Mage::getUrl('brands/brand', array('id' => 1,'_secure' => true)); // https://dltr.org/brands/brand/id/1 // or get secure url based on current page. good for ajax urls. Mage::getUrl('brands/brand', array('id' => 1,'_secure' => Mage::app()->getStore()->isCurrentlySecure())); // http(s)?://dltr.org/brands/brand/id/1
...
You can pass a lot more params:
Key | Type | Meaning |
---|---|---|
_absolute | n/a | No effect. URLs are always generated as absolute. |
_current | bool | Uses the current module, controller, action and parameters |
_direct | string | Simply append to the base URL, same effect as passing to $routePath. See _store |
_escape | bool | Uses & instead of & |
_forced_secure | bool | Uses the secure domain given in configuration |
_fragment | string | The last part of the URL after a # |
_ignore_category | bool | Only applies to Mage_Catalog_Model_Product_Url::getUrl(). Prevents category rewrite from being used. |
_nosid | bool | Prevents a SID query parameter being used when referencing another store |
_query | string or array | If an array it is converted into a string like ?key=value&key=value which will become the $_GET variable. |
_secure | bool | Uses the secure domain if allowed in configuration |
_store | int or string | Either the numeric store ID or textual store code. It will use the correct domain as the base URL. |
_store_to_url | bool | Adds ___store to the query parameters. Useful for targetting a store that doesn’t have an unique domain. |
_type | string | link is the default. direct_link is useful for bypassing the “store code in URLs” feature. js, media and skin append the domain (and possibly store code) with the relevant directory. |
_use_rewrite | bool | Looks up the module/controller/action/parameters in the database for a search engine friendly equivalent. |
Sources:
app\Mage.php:getUrl()
/** * Generate url by route and parameters * * @param string $route * @param array $params * @return string */ public static function getUrl($route = '', $params = array()) { return self::getModel('core/url')->getUrl($route, $params); }
app\code\core\Mage\Core\Model\Url.php:getUrl()
/** * Build url by requested path and parameters * * @param string|null $routePath * @param array|null $routeParams * @return string */ public function getUrl($routePath = null, $routeParams = null) { $escapeQuery = false; /** * All system params should be unset before we call getRouteUrl * this method has condition for adding default controller and action names * in case when we have params */ if (isset($routeParams['_fragment'])) { $this->setFragment($routeParams['_fragment']); unset($routeParams['_fragment']); } if (isset($routeParams['_escape'])) { $escapeQuery = $routeParams['_escape']; unset($routeParams['_escape']); } $query = null; if (isset($routeParams['_query'])) { $this->purgeQueryParams(); $query = $routeParams['_query']; unset($routeParams['_query']); } $noSid = null; if (isset($routeParams['_nosid'])) { $noSid = (bool)$routeParams['_nosid']; unset($routeParams['_nosid']); } $url = $this->getRouteUrl($routePath, $routeParams); /** * Apply query params, need call after getRouteUrl for rewrite _current values */ if ($query !== null) { if (is_string($query)) { $this->setQuery($query); } elseif (is_array($query)) { $this->setQueryParams($query, !empty($routeParams['_current'])); } if ($query === false) { $this->setQueryParams(array()); } } if ($noSid !== true) { $this->_prepareSessionUrl($url); } $query = $this->getQuery($escapeQuery); if ($query) { $mark = (strpos($url, '?') === false) ? '?' : ($escapeQuery ? '&' : '&'); $url .= $mark . $query; } if ($this->getFragment()) { $url .= '#' . $this->getFragment(); } return $this->escape($url); }
...
Farhan Islam posted on - Thursday 5th of February 2015 06:18:02 AM