Hello, I tried really hard to google or do it on my own, but I did not find a solution to my problem.
Version: Prestashop 1.7
Here is what I am trying to do:
I crated a blog category inside Design > Pages that display blog articles.
I want the url of the blog article to be like this: mywebiste.com/blog/article-1
After I have done some research I found out that I must edit the Dispatcher.php and Link.php, so they currently look like this:
Dispatcher.php
'cms_rule' => array( 'controller' => 'cms', 'rule' => 'content/{categories:/}{id}-{rewrite}', 'categories' => array('regexp' => '[/_a-zA-Z0-9-\pL]*'), 'keywords' => array( 'id' => array('regexp' => '[0-9]+', 'param' => 'id_cms'), 'rewrite' => array('regexp' => '[_a-zA-Z0-9\pL\pS-]*'), 'meta_keywords' => array('regexp' => '[_a-zA-Z0-9-\pL]*'), 'meta_title' => array('regexp' => '[_a-zA-Z0-9-\pL]*'), ), ),
and my Link.php looks like this:
public function getCMSLink(
$cms,
$alias = null,
$ssl = null,
$idLang = null,
$idShop = null,
$relativeProtocol = false
) {
if (!$idLang) {
$idLang = Context::getContext()->language->id;
}
$url = $this->getBaseLink($idShop, $ssl, $relativeProtocol).$this->getLangLink($idLang, null, $idShop);
$dispatcher = Dispatcher::getInstance();
if (!is_object($cms)) {
if ($alias !== null && !$dispatcher->hasKeyword('cms_rule', $idLang, 'meta_keywords', $idShop) && !$dispatcher->hasKeyword('cms_rule', $idLang, 'meta_title', $idShop)) {
return $url.$dispatcher->createUrl('cms_rule', $idLang, array('id' => (int) $cms, 'rewrite' => (string) $alias), $this->allow, '', $idShop);
}
$cms = new CMS($cms, $idLang);
}
// Set available keywords
$params = array();
$params['id'] = $cms->id;
$params['rewrite'] = (!$alias) ? (is_array($cms->link_rewrite) ? $cms->link_rewrite[(int) $idLang] : $cms->link_rewrite) : $alias;
$params['meta_keywords'] = '';
if (isset($cms->meta_keywords) && !empty($cms->meta_keywords)) {
$params['meta_keywords'] = is_array($cms->meta_keywords) ? Tools::str2url($cms->meta_keywords[(int) $idLang]) : Tools::str2url($cms->meta_keywords);
}
$params['meta_title'] = '';
if (isset($cms->meta_title) && !empty($cms->meta_title)) {
$params['meta_title'] = is_array($cms->meta_title) ? Tools::str2url($cms->meta_title[(int) $idLang]) : Tools::str2url($cms->meta_title);
}
return $url.$dispatcher->createUrl('cms_rule', $idLang, $params, $this->allow, '', $idShop);
}
I cant get it to work no matter what I try, any help is gladly appreciated!
Thanks!