Автор Тема: Мультимагазин, разные шаблоны, разный дизайн модулей.  (Прочитано 4576 раз)

12 Март 2014, 10:13:40
  • Новичок
  • *
  • Сообщений: 44
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Думаю этот вопрос не поднимался, но уже в скором будущем будет очень популярным.
При использовании функции мультимагазин мы применяем разные шаблоны, для разных магазинов. В том числе и модулей.
ВОт теперь вопрос. Как сделать так, чтобы можно было к каждому шаблоны делать свой дизайн модулей?

Первое, что пришло в голову, это копировать тпл и Css файлы в папку модулей, именно в шаблоне. а в корне магазина папку модулей не трогать.  Так ли это?
13 Март 2014, 12:03:48
Ответ #1
  • Партнер
  • Ветеран
  • ****
  • Сообщений: 22816
  • Репутация: +17143/-1
  • Разработка веб-сайтов и веб-программирование
    • Просмотр профиля
Вопрос уже поднимался когда обсуждали где хранятся файлы шаблонов и стилей.
Файлы шаблонов модулей, которые хотите использовать для 1-го магазина, должны находиться в папке:
/themes/mytheme1/modules/Файлы стилей в папке:
/themes/mytheme1/css/modules/Для 2-го магазина соотвествено в папках
/themes/mytheme2/modules/
/themes/mytheme2/css/modules/
Интернет-магазин под ключ.
Какой выбрать движок для интернет магазина ?
Какой движок лучше ?
Magento или Prestashop ?
Решение всех Ваших вопросов в создании Интернет-магазина.
16 Март 2014, 15:42:03
Ответ #2
  • Новичок
  • *
  • Сообщений: 44
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
07 Май 2014, 13:46:50
Ответ #3
  • Пользователь
  • **
  • Сообщений: 73
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Подскажите пожалуйста по мультимагазину. Настроил аллиас нового домена на site1.com
Настроил мультимагазин в админке:
Домен: site2.com
SSL: site.com
Физический URL: /
Все красиво отображается на новом домене.
Теперь вопрос в следующем: где находится физическая папка магазина, чтобы настраивать robots.txt , htaccess , установить редиректы с прошлых адресов магазина, вложить файл верификации панели вебмастера Гугл и Яндекс. Папка с доменом в корне отсутствует. Где ее искать? и как быть с этим?
07 Май 2014, 15:14:54
Ответ #4
  • Модератор
  • Ветеран
  • *****
  • Сообщений: 86688
  • Репутация: +25428/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Цитировать
Настройка URL магазина

Каждый магазин может иметь свой URL - или несколько  URL - независимо от главного магазина. Определите хотя бы один URL для каждого магазина.

Предупреждение
Не создавайте  URL вручную, на вашем сервере или на вашем компьютере:  PrestaShop  берёт на себя процесс создания  URL на вашем сервере. При подключении к URL PrestaShop будет направлять посетителей на правильный сайт магазина автоматически.

Два магазина не могут иметь один общий  URL. Если вы хотите присвоить вашему магазину новый URL, который уже используется другим магазином, PrestaShop выведет на экран ошибку.

С другой стороны, у вас может быть на одном домене столько магазинов, сколько вы хотите:

    Используйте вложенную папку:  http://www.myprestashop.com/men/, http://www.myprestashop.com/women/, http://www.myprestashop.com/kids/, http://www.myprestashop.com/pets/, etc.

    Совет
    Icon
    В случае с использованием вложенной папки, используйте два  URL для каждого магазина: один с  "www.", другой без него! С другой стороны, клиенты которые хотят войти в ваш дополнительный магазин не через "www." будут направлены в ваш главный магазин.
     Используйте  поддомены: http://men.myprestashop.com/, http://women.myprestashop.com/, http://kids.myprestashop.com/, http://pets.myprestashop.com/ и тд.

Чтобы добавить URL магазина, выберите магазин в селекторе “Схема мультимагазин” и нажмите на кнопку “Добавить новый URL ”. Затем PrestaShop отобразит окно с двумя блоками и восемью опциями:

    URL опции.
        Магазин. Здесь указывается магазин, к которому вы добавляете URL. Также, вы можете отсюда перейти в другой магазин.
        Главный  URL.  Включив данную опцию, вы указываете, что хотите все  URL магазинов перенаправить на данный  главный URL.
        Статус. Вы можете включить и отключить URL когда захотите.
     URL магазина.
        Домен. Здесь указывается доменное имя магазина само по себе. Также данное поле не ограничивается вводом только доменного имени, здесь также можно указать поддомен, если необходимо. Просто не забывайте добавлять  'http://', или '/'. Например:www.myprestashop.com или kids.myprestashop.com.
        SSL для домена. Если у вас разные SSL сертификаты для домена  и главного домена, укажите это в данном поле. Например: www.myprestashop.com или kids.myprestashop.com.
        Физический  URI. Здесь, вы должны установить физический маршрут к   установочному файлу на вашем сервере. Если магазин находится в корне домена или поддомена, не заполняйте данное поле. Пример: / or /kids/. Разумеется, данная опция должна быть включена в PrestaShop (имеется в виду дружественные URL, посетите страницу “SEO & URLs” в меню “Настройки”). Например: /shoes/. Учтите данная опция применима только к магазинам, которые расположены во вложенных папках, в не в поддомене.
        Виртуальный  URI. Вы можете предоставить прозрачный доступ клиентам при помощи данной опции  путём переписывания URL, также, вы можете отображать ваш магазин, не создавая при этом вложенной папки.
        Ваш конечный URL. Здесь вы видите результат ваших настроек URL.
Все создает prestashop. Ссылки по разным магазина в нескольких блоках в ожном файле htaccess.

robot.txt может быть один или можно сделать разные через htaccess
# Rewrite URL for robots.txt
RewriteRule ^robots\.txt$ robots/%{HTTP_HOST}.txt [L]
07 Май 2014, 16:17:26
Ответ #5
  • Пользователь
  • **
  • Сообщений: 73
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Спасибо.
Мануал я читал, только ничего не понятно. Здесь о поддоменах и вложеных папках, а у меня отдельный магазин переносится на Престу.
Вот и думаю, что роботс нужен будет нормально настроить, а также htaccess для переадресации со старых ссылок на новые.
Также нужно каким-то образом сайт верифицировать в панели вебмастера, вот и думаю в корень бросать файли или нет, там ведь уже есть файлы на 2 сайта. Вот и делема такая, для меня непонятная
07 Май 2014, 23:15:38
Ответ #6
  • Ветеран
  • *****
  • Сообщений: 16670
  • Репутация: +14630/-5
  • Сообщество PrestaShop
    • Просмотр профиля
htaccess можно сделать общим. Правила переадресации пишутся для каждого домена. А роботы сами определеляют страницы каждого домена.
Попробуйте на голом престашопе создать 2 магазина. htaccess создается автоматом. В нем можно посмотреть как нужно правильно составить правила.
08 Май 2014, 21:28:54
Ответ #7
  • Пользователь
  • **
  • Сообщений: 73
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Спасибо. Когда настрою магазин - там и посмотрю как роботс и htaccess настроить.
Столкнулся со следующей проблемой:
2 магазина на разных шаблонах. Когда начал настраивать тему - столкнулся с разными размерами изображений на каждом из шаблонов.
Выбрал новый магазин, ввел новые значения, начал перегенерацию и в итоге - все изображения изменились на обоих магазинах. Даже если я выбираю оставить прежние изображения - все равно на обоих шаблонах используются новые.
Как оказалось - даже значения размеров изображений общие для обоих магазинов и когда вношу любое изменение - меняются значения во всей группе. Как это исправить? Нигде не указано что это общие значения и что изменение будет применено ко всем магазинам. Как исправить этот баг?
08 Май 2014, 23:07:51
Ответ #8
  • Пользователь
  • **
  • Сообщений: 73
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
В итоге прочитал, что есть такой баг в мультимагазине и до сих пор он не решен, даже в 1.6.
Суть в том, что на каждую тему мультимагазина нельзя выбрать отдельные размеры изображений.
Нашел 2 темы на форумах Престашоп:
http://www.prestashop.com/forums/topic/211000-different-image-sizes-for-different-themes-in-multishop/
http://www.prestashop.com/forums/topic/297331-solved-how-to-change-images-size-with-three-different-themes-on-multistore/
Как я понял нужно создать новые Названия и размеры изображений, которые соотв. документации темы.
Но что дальше нужно делать? Где заменять старые значения на новые и каким образом? Обьясните пожалуйста, по возможности на пальцах. Спасибо.
10 Май 2014, 13:22:02
Ответ #9
  • Ветеран
  • *****
  • Сообщений: 16670
  • Репутация: +14630/-5
  • Сообщество PrestaShop
    • Просмотр профиля
Нужно давать разные названия для изображений, которые используются в темах. Нельзя название "home" использовать для 2 тем, если размеры разные. В первой теме в шаблонах и модулях должны быть названия изображений  "home1", во второй "home2". Тогда проблем не будет.
14 Май 2014, 11:42:08
Ответ #10
  • Пользователь
  • **
  • Сообщений: 73
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Спасибо.
Так и есть, вопрос решается созданием новых размеров изображений, после чего в теме нужно найти названия изображения (small_default и т.д.) и заменить на новое название размера изображений. Далее нужно произвести генерацию новых изображений.
Появился следующий вопрос:
После установки темы на второй магазин мультимагазина тема становится криво (тестировал несколько тем), суть в том, что нужно установить модуль (Overrider, override и т.д. по разному называется), который при установке вносит файлы (классы и контроллеры) в папку override.
Если его не установить - все отображается криво. При установке возникает ошибка:
- stoverride :
Не получается установить override: Метод getPath в классе Tools уже подменен (overrid).
И такая же ошибка с классами и контроллерами, которые уже имеются в папке Override.
Если же я удаляю дублирующие файлы и все таки устанавливаю модуль - не работает основной магазин.
Подскажите, как решить эту проблему.
Если же я у
14 Май 2014, 16:53:37
Ответ #11
  • Ветеран
  • *****
  • Сообщений: 16670
  • Репутация: +14630/-5
  • Сообщество PrestaShop
    • Просмотр профиля
Выход только один, открывать нужный класс в папке override и добавлять функции самому.
14 Май 2014, 17:07:18
Ответ #12
  • Пользователь
  • **
  • Сообщений: 73
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Попробую сейчас добавлять функции, впервые с таким сталкиваюсь.
Возможно, Вы подскажете, как разграничить магазины, если у них повторяется одна и та же функция.

Update: Попытался соединить классы и контроллеры, в большинстве случаев пришлось добавить только по одной функции. Ничего не получилось. Не загружается ни сайт ни админка.
Вообще не понимаю как такое возможно в Престашоп и почему нигде не могу найти ответа на этот вопрос, неужели никто не сталкивался.

15 Май 2014, 10:41:21
Ответ #13
  • Ветеран
  • *****
  • Сообщений: 33325
  • Репутация: +26771/-0
    • Просмотр профиля
Если функция одинаковая, то ничего не нужно делать. Добавил ее в класс и используешь во всех сайтах.
Если у функций есть различия в коде (функциональности), тогда меняешь название у одной из них. И добавляешь 2 функции в класс.
 
15 Май 2014, 15:43:06
Ответ #14
  • Пользователь
  • **
  • Сообщений: 73
  • Репутация: +0/-0
  • Сообщество PrestaShop
    • Просмотр профиля
Обьясните пожалуйста на пальцах, а то я вообще запутался.
Например есть контроллер:
CategoryController.php
В исходном файле его содержимое:
<?php

class CategoryController extends CategoryControllerCore
{
public function initContent()
{
parent::initContent();
/************************* Images Array ******************************/

$image_array=array();
for($i=0;$i<count($this->cat_products);$i++)
{
if(isset($this->cat_products[$i]['id_product']))
$image_array[$this->cat_products[$i]['id_product']]= Product::getProductsImgs($this->cat_products[$i]['id_product']);
}
$this->context->smarty->assign('productimg',(isset($image_array) AND $image_array) ? $image_array NULL);

/************************* /Images Array ******************************/

}
}

В новом файле:
<?php

class CategoryController extends CategoryControllerCore
{
    public function 
initContent()
{
parent::initContent();
        
$this->context->smarty->assign(array(   
            
'HOOK_CATEGORY_HEADER' => Hook::exec('displayCategoryHeader'),    
'HOOK_CATEGORY_FOOTER' => Hook::exec('displayCategoryFooter'),     
            
'display_category_title' => Configuration::get('STSN_DISPLAY_CATEGORY_TITLE'),  
            
'display_category_image' => Configuration::get('STSN_DISPLAY_CATEGORY_IMAGE'),  
            
'display_category_desc' => Configuration::get('STSN_DISPLAY_CATEGORY_DESC'),
            
'display_subcategory' => Configuration::get('STSN_DISPLAY_SUBCATE'),  
'categorySize' => Image::getSize(ImageType::getFormatedName('category')),  
));
}
}

Как вообще их возможно совместить?
И если совместить - то что дальше нужно изменять и где, а то я не совсем понимаю.
Даже если я по-разному назову функцию, то что и где мне менять нужно, а также насколько много файлов нужно менять?
А также, например, если я добавляю новые контроллеры которых нет - нужно ведь указать, чтобы первый сайт их не использовал, значит наверное тоже функцию нужно менять и где-то обращение к ней заменять?
Насколько все это сложно, подскажите пожалуйста, я впервые с этим сталкиваюсь.