// getProductLink fix and optimization

git-svn-id: http://dev.prestashop.com/svn/v1/branches/1.5.x@12028 b9a71923-0436-4b27-9f14-aed3839534dd
This commit is contained in:
tDidierjean
2012-01-03 09:22:42 +00:00
parent 9c1537bc15
commit 0d1c6fc8fd
3 changed files with 33 additions and 6 deletions

View File

@@ -94,15 +94,14 @@ class LinkCore
throw new PrestashopException('Invalid product vars');
}
// Set available keywords
$params = array();
$params['id'] = $product->id;
$params['rewrite'] = (!$alias) ? $product->link_rewrite : $alias;
$params['rewrite'] = (!$alias) ? $product->getFieldByLang('link_rewrite') : $alias;
$params['ean13'] = (!$ean13) ? $product->ean13 : $ean13;
$params['category'] = (!$category) ? $product->category : $category;
$params['meta_keywords'] = Tools::str2url($product->meta_keywords);
$params['meta_title'] = Tools::str2url($product->meta_title);
$params['meta_keywords'] = Tools::str2url($product->getFieldByLang('meta_keywords'));
$params['meta_title'] = Tools::str2url($product->getFieldByLang('meta_title'));
if ($dispatcher->hasKeyword('product_rule', 'manufacturer'))
$params['manufacturer'] = Tools::str2url($product->isFullyLoaded ? $product->manufacturer_name : Manufacturer::getNameById($product->id_manufacturer));

View File

@@ -1267,4 +1267,32 @@ abstract class ObjectModelCore
{
}
/**
* Return the field value for the specified language if the field is multilang, else the field value.
*
* @param $field_name
* @param null $id_lang
* @return mixed
* @throws PrestashopException
* @since 1.5
*/
public function getFieldByLang($field_name, $id_lang = null)
{
$definition = ObjectModel::getDefinition($this);
// Is field in definition?
if ($definition && isset($definition['fields'][$field_name]))
{
$field = $definition['fields'][$field_name];
// Is field multilang?
if (isset($field['lang']) && $field['lang'])
{
if (is_array($this->{$field_name}))
return $this->{$field_name}[$id_lang ? $id_lang : Context::getContext()->language->id];
}
return $this->{$field_name};
}
else
throw new PrestashopException('Could not load field from definition.');
}
}

View File

@@ -2165,7 +2165,7 @@ class AdminProductsControllerCore extends AdminController
return false;
$preview_url = $this->context->link->getProductLink(
$this->getFieldValue($product, 'id'),
$product,
$this->getFieldValue($product, 'link_rewrite', $this->context->language->id),
Category::getLinkRewrite($product->id_category_default, $this->context->language->id), null, null, Context::getContext()->shop->getID());
if (!$product->active)
@@ -2175,7 +2175,7 @@ class AdminProductsControllerCore extends AdminController
$token = Tools::encrypt('PreviewProduct'.$product->id);
if (strpos($preview_url, '?') === false)
$preview_url .= '?';
$preview_url = ($this->context->link->getProductLink($this->getFieldValue($product, 'id'), $this->getFieldValue($product, 'link_rewrite', $this->default_form_language), Category::getLinkRewrite($this->getFieldValue($product, 'id_category_default'), $this->context->language->id)));
$preview_url = ($this->context->link->getProductLink($product, $this->getFieldValue($product, 'link_rewrite', $this->default_form_language), Category::getLinkRewrite($this->getFieldValue($product, 'id_category_default'), $this->context->language->id)));
if (!$product->active)
{
$admin_dir = dirname($_SERVER['PHP_SELF']);