/ / Как да използвам CMS страница като първа страница за PrestaShop и да има индексът на магазин по подразбиране към / someurl? - prestashop, prestashop-1.6

Как да използваме CMS страница като първа страница за PrestaShop и да имаме подразбиращ се индекс за магазин до / someurl? - престашоп, престашоп-1.6

Направих този персонализиран IndexController.php в / override / контролери / отпред, за да има CMS страница като индекс (виж $id_cms).

class IndexControllerCore extends FrontController
{
//public $php_self = "index";

/**
* Assign template vars related to page content
* @see FrontController::initContent()
*/
/*public function initContent()
{
parent::initContent();
$this->addJS(_THEME_JS_DIR_."index.js");

$this->context->smarty->assign(array("HOOK_HOME" => Hook::exec("displayHome"),
"HOOK_HOME_TAB" => Hook::exec("displayHomeTab"),
"HOOK_HOME_TAB_CONTENT" => Hook::exec("displayHomeTabContent")
));
$this->setTemplate(_PS_THEME_DIR_."index.tpl");
}*/

public $php_self = "cms";
public $assignCase;
public $cms;

/** @var CMSCategory */
public $cms_category;
public $ssl = false;

public function canonicalRedirection($canonicalURL = "")
{
if (Tools::getValue("live_edit")) {
return;
}
if (Validate::isLoadedObject($this->cms) && ($canonicalURL = $this->context->link->getCMSLink($this->cms, $this->cms->link_rewrite, $this->ssl))) {
parent::canonicalRedirection($canonicalURL);
} elseif (Validate::isLoadedObject($this->cms_category) && ($canonicalURL = $this->context->link->getCMSCategoryLink($this->cms_category))) {
parent::canonicalRedirection($canonicalURL);
}
}

public function setMedia()
{
parent::setMedia();

if ($this->assignCase == 1) {
$this->addJS(_THEME_JS_DIR_."cms.js");
}

$this->addCSS(_THEME_CSS_DIR_."cms.css");
}

/**
* Assign template vars related to page content
* @see FrontController::initContent()
*/
public function initContent()
{
parent::initContent();

$id_cms = 6;
$this->cms = new CMS($id_cms, $this->context->language->id);

$parent_cat = new CMSCategory(1, $this->context->language->id);
$this->context->smarty->assign("id_current_lang", $this->context->language->id);
$this->context->smarty->assign("home_title", $parent_cat->name);
$this->context->smarty->assign("cgv_id", Configuration::get("PS_CONDITIONS_CMS_ID"));

if (isset($this->cms->id_cms_category) && $this->cms->id_cms_category) {
$path = Tools::getFullPath($this->cms->id_cms_category, $this->cms->meta_title, "CMS");
} elseif (isset($this->cms_category->meta_title)) {
$path = Tools::getFullPath(1, $this->cms_category->meta_title, "CMS");
}

$this->context->smarty->assign(array(
"cms" => $this->cms,
"content_only" => (int)Tools::getValue("content_only"),
"path" => $path,
"body_classes" => array($this->php_self."-".$this->cms->id, $this->php_self."-".$this->cms->link_rewrite)
));

if ($this->cms->indexation == 0) {
$this->context->smarty->assign("nobots", true);
}

$this->setTemplate(_PS_THEME_DIR_."cms.tpl");
}

Сега въпросът ми е: как мога да направя оригиналния индекс на магазина на URL като / магазин?

Отговори:

1 за отговор № 1

1) Създайте персонализиран контролер в / контролери / отпред

class myStoreIndexController extends FrontController {

public $php_self = "myStoreIndex";

/**
* Assign template vars related to page content
* @see FrontController::initContent()
*/
public function initContent() {
parent::initContent();
$this->addJS(_THEME_JS_DIR_."index.js");
$this->context->smarty->assign(array(
"HOOK_HOME" => Hook::exec("displayHome"),
"HOOK_HOME_TAB" => Hook::exec("displayHomeTab"),
"HOOK_HOME_TAB_CONTENT" => Hook::exec("displayHomeTabContent")
));
$this->setTemplate(_PS_THEME_DIR_."index.tpl");
}
}

2) Влезте в менюто на контролния панел на PS: Настройки> SEO и URL адреси, щракнете върху „Добавяне на нова страница“, след това изберете като Page нашия „myStoreIndexController“, задайте заглавието и мета, от които се нуждаете, и накрая въведете „магазин“ като приятелски URL адрес и запазете

въведете описанието на изображението тук

3) Насладете се на cms начална страница + магазин във вашия персонализиран път


0 за отговор № 2

Не мисля, че има лесен начин да се забъркашвътрешният диспечер на Prestashop да обяви базов URL за индекс. Просто прегледах основните класове и не мога да разбера как да се справя лесно с това.

Ако трябваше да направя това, щях да създам нова cms страница или нов персонализиран контролер. И просто да пренасочите в .htaccess корен към тази страница:

RewriteBase /
RewriteRule ^$ /store [L,R=301]

# ~~start~~ Do not remove this comment, Prestashop will keep automatically
# [...]