Magento get url with or without parameters

2013-05-12 19:52:35Damodar Bashyal


Magento lets you get url with or without parameters as below:

// get base url

// get base url and index.html page

// get brands page with id parameter
Mage::getUrl('brands/brand', array('id' => 1));

// get secure url
Mage::getUrl('brands/brand', array('id' => 1,'_secure' => true));

// 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)?://


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.




     * 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);


     * 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'])) {

        if (isset($routeParams['_escape'])) {
            $escapeQuery = $routeParams['_escape'];

        $query = null;
        if (isset($routeParams['_query'])) {
            $query = $routeParams['_query'];

        $noSid = null;
        if (isset($routeParams['_nosid'])) {
            $noSid = (bool)$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)) {
            } elseif (is_array($query)) {
                $this->setQueryParams($query, !empty($routeParams['_current']));
            if ($query === false) {

        if ($noSid !== true) {

        $query = $this->getQuery($escapeQuery);
        if ($query) {
            $mark = (strpos($url, '?') === false) ? '?' : ($escapeQuery ? '&' : '&');
            $url .= $mark . $query;

        if ($this->getFragment()) {
            $url .= '#' . $this->getFragment();

        return $this->escape($url);


      Tips: touching links in iPhone for few seconds gives the options to open a link in new window.


Bookmark and Share

Can you give me any hint what does core/store model does with parameter true/false for getCurrentUrl ?

04/02/15 10:18:02| Farhan Islam



Javascript must be enabled to post comment!


QR Code: Magento get url with or without parameters