public function display($tpl = null) { $application = JFactory::getApplication(); $params = $application->getParams(); // Set the request based upon the choosen layout switch ($this->getLayout()) { case 'logout': $intermediate_page = $params->get('intermediate_page'); if ($intermediate_page != 1) { $this->setRequest('customer/account/logout'); } else { $logout_url = MageBridgeUrlHelper::route('customer/account/logout'); $this->assignRef('logout_url', $logout_url); } break; default: $this->setRequest(MageBridgeUrlHelper::getLayoutUrl($this->getLayout())); break; } // Set which block to display $this->setBlock('content'); // Assign the parameters to this template $this->assignRef('params', $params); parent::display($tpl); }
public function display($tpl = null) { // Load the bridge $bridge = MageBridgeModelBridge::getInstance(); // Load the parameters $layout = $this->getLayout(); $params = MageBridgeHelper::getParams(); // Set the request based upon the choosen category $request = $params->get('request', false) ? $params->get('request') : MageBridgeUrlHelper::getRequest(); $prefix = preg_replace('/\\?(.*)/', '', $request); $suffix = preg_replace('/(.*)\\?/', '', $request); // Check if this a non-URL-optimized request if (is_numeric($prefix)) { $request = MageBridgeUrlHelper::getLayoutUrl($layout, $prefix); } else { // Determine the suffix if ($layout == 'product') { $suffix = $bridge->getMageConfig('catalog/seo/product_url_suffix'); } else { if ($layout == 'category') { $suffix = $bridge->getMageConfig('catalog/seo/category_url_suffix'); } } // Add the suffix, if this is set in the Magento configuration if (!empty($suffix) && !preg_match('/' . $suffix . '$/', $request)) { $request .= $suffix; } } // Add the $mode = $params->get('mode'); if (!empty($mode)) { $request .= '?mode=' . $mode; } // Set the request in the bridge $this->setRequest($request); // Handle the redirect request $redirect = JRequest::getString('redirect'); if (!empty($redirect)) { $bridge->setHttpReferer($redirect); } // Reuse this request to set the Canonical URL if (MagebridgeModelConfig::load('enable_canonical') == 1) { $uri = MageBridgeUrlHelper::route($request); $document = JFactory::getDocument(); $document->setMetaData('canonical', $uri); } // Set which block to display $this->setBlock('content'); parent::display($tpl); }
/** * Function to convert a system URL to a SEF URL */ function MagebridgeBuildRoute(&$query) { // If there's only an Itemid (and an option), skip because this Menu-Item is fine already if (isset($query['Itemid']) && count($query) <= 2 && MageBridgeUrlHelper::enforceRootMenu() == false) { return array(); } // Initialize some parts $segments = array(); $Itemid = isset($query['Itemid']) ? $query['Itemid'] : 0; $orig_Itemid = $Itemid; // Get the menu items for this component $items = MageBridgeUrlHelper::getMenuItems(); $current_item = MageBridgeUrlHelper::getItem($Itemid); // Strip the slug if (!empty($query['request']) && preg_match('/^([0-9]+)\\:(.*)/', $query['request'], $match)) { $query['id'] = $match[1]; $query['request'] = $match[2]; } // Try to match the current query with a Menu-Item if (!empty($items)) { foreach ($items as $item) { // Match a specific combination of view-layout-request if (!empty($item->query['request']) && !empty($query['request']) && isset($item->query['view']) && isset($query['view']) && $item->query['view'] == $query['view'] && isset($item->query['layout']) && isset($query['layout']) && $item->query['layout'] == $query['layout']) { // Match a specific combination of view-layout-request (string) if ($item->query['request'] == $query['request']) { $query = array('option' => 'com_magebridge', 'Itemid' => $item->id); return array(); // Match a specific combination of view-layout-request (ID) } else { if (isset($query['id']) && $item->query['request'] == $query['id']) { $query = array('option' => 'com_magebridge', 'Itemid' => $item->id); return array(); } } // Match a specific combination of view-layout } else { if (empty($query['request']) && isset($item->query['view']) && isset($query['view']) && $item->query['view'] == $query['view'] && isset($item->query['layout']) && isset($query['layout']) && $item->query['layout'] == $query['layout']) { $query = array('option' => 'com_magebridge', 'Itemid' => $item->id); return array(); } } } } // Fetch the Root-Item $query_option = isset($query['option']) ? $query['option'] : null; $query_view = isset($query['view']) ? $query['view'] : null; if ($query_option == 'com_magebridge' && $query_view == 'root' && !empty($query['Itemid'])) { $root_item = false; $root_item_id = false; } else { $root_item = MageBridgeUrlHelper::getRootItem(); $root_item_id = $root_item && $root_item->id > 0 ? $root_item->id : false; } // Set a default empty view if (!isset($query['view'])) { $query['view'] = null; } // Reset fake views (used by JCE editor) if (in_array($query['view'], array('product', 'category'))) { $query['view'] = 'root'; } // If there is a root-item (and therefor "use_rootmenu" is enabled), see if we need to replace the current URL with the root-items URL if ($root_item_id > 0) { // If there is a root-view or when "enforce_rootmenu" is enabled, reset the Itemid to the Root Menu-Item if ($query['view'] == 'root' || MageBridgeUrlHelper::enforceRootMenu()) { $query['Itemid'] = $root_item_id; } // Build the Magento request based upon the current Menu-Item if (!empty($current_item)) { // Get data from the current Menu-Item $cparams = YireoHelper::toRegistry($current_item->params); $cquery = $current_item->query; // Complete the Magento request if it is still empty if (empty($query['request']) && $query['Itemid'] == $root_item_id) { // Determine the request if set in the $query['link'] if (empty($cquery['request'])) { parse_str(preg_replace('/^index.php\\?/', '', $current_item->link), $link); if (!empty($link['request'])) { $cquery['request'] = $link['request']; } } // Use the MVC-layout to determine the request if (!empty($query['layout'])) { $query['request'] = MageBridgeUrlHelper::getLayoutUrl($query['layout']); // Use the MVC-layout plus the current request to determine the request (f.i. configured Menu-Items) } else { if (!empty($cquery['layout'])) { $query['request'] = MageBridgeUrlHelper::getLayoutUrl($cquery['layout'], $cquery['request']); // Use the Menu-Item request as Magento request } else { if (!empty($cquery['request'])) { $query['request'] = $cquery['request']; // Use the Menu-Item parameter as Magento request } else { if ($cparams->get('request') != '') { $query['request'] = $cparams->get('request'); // Obsolete? //} else if ($current_item->id != $root_item_id) { // $query['request'] = $current_item->route; } } } } } if (isset($query['request']) && is_numeric($query['request']) && !empty($query['layout'])) { $query['request'] = MageBridgeUrlHelper::getLayoutUrl($query['layout'], $query['request']); } // Enforce the Itemid of the MageBridge Root upon the current route if (MageBridgeUrlHelper::enforceRootMenu() && !in_array($root_item_id, $current_item->tree)) { $query['Itemid'] = $root_item_id; $query['view'] = 'root'; // If the request is not empty, set the route to the MageBridge Root } else { if (!empty($query['request'])) { $query['Itemid'] = $root_item_id; } } // If there is no current item, assume to apply the Itemid of the MageBridge Root } else { $query['Itemid'] = $root_item_id; } } // Add the request as only segment if (!empty($query['request']) && !empty($query['Itemid']) && $query['Itemid'] == $root_item_id) { $segments[] = $query['request']; } else { if (!empty($query['request']) && (empty($root_item_id) && $query['view'] == 'root')) { $segments[] = $query['request']; } } // Unset an Itemid that does not make sense if (isset($query['Itemid']) && $query['Itemid'] == 0) { unset($query['Itemid']); } // Unset all unneeded query-parts because they should be now either segmented or referenced from the Itemid $unset_elements = array('view', 'task', 'request', 'layout', 'format', 'SID', 'language', 'id'); foreach ($unset_elements as $u) { unset($query[$u]); } // Return the segments return $segments; }
/** * Method to display the requested view */ public function display($tpl = null) { // Load the bridge $bridge = MageBridgeModelBridge::getInstance(); // Load the parameters $layout = $this->getLayout(); $params = MageBridgeHelper::getParams(); // Set the request based upon the choosen category $request = $params->get('request', false) ? $params->get('request') : MageBridgeUrlHelper::getRequest(); $prefix = preg_replace('/\\?(.*)/', '', $request); $suffix = preg_replace('/(.*)\\?/', '', $request); // Check if this a non-URL-optimized request if (is_numeric($prefix)) { $request = MageBridgeUrlHelper::getLayoutUrl($layout, $prefix); } else { // Determine the suffix if ($layout == 'product') { $suffix = $bridge->getSessionData('catalog/seo/product_url_suffix'); } else { if ($layout == 'category') { $suffix = $bridge->getSessionData('catalog/seo/category_url_suffix'); } } // Add the suffix, if this is set in the Magento configuration if (!empty($suffix) && !preg_match('/' . $suffix . '$/', $request)) { $request .= $suffix; } } // Add the qty parameter $qty = JFactory::getApplication()->input->getInt('qty'); if (!empty($qty)) { $request .= 'qty/' . $qty . '/'; } // Check for the redirect parameter $redirect = $this->input->getString('redirect'); if ($layout == 'addtocart' && empty($redirect)) { $redirect = 'checkout/cart'; } // Add the redirect parameter if (!empty($redirect)) { $redirect = MageBridgeUrlHelper::route($redirect); if (!empty($redirect)) { $request .= 'uenc/' . MageBridgeEncryptionHelper::base64_encode($redirect) . '/'; } $form_key = MageBridgeModelBridge::getInstance()->getSessionData('form_key'); if (!empty($form_key)) { $request .= 'form_key/' . $form_key; } } // Add the mode (for catalog) $mode = $params->get('mode'); if (!empty($mode)) { $request .= '?mode=' . $mode; } // Set the request in the bridge and wait for the response $this->setRequest($request); // Reuse this request to set the Canonical URL if (MagebridgeModelConfig::load('enable_canonical') == 1) { $uri = MageBridgeUrlHelper::route($request); $document = JFactory::getDocument(); $document->setMetaData('canonical', $uri); } // Set which block to display $this->setBlock('content'); parent::display($tpl); }