Делаем мультисайт своими руками, а также костыли, грабли и все такое

asker23

Новичок
Столкнулся с такой задачей, одна надежда на коллективный разум и отзывчивое И ДОБРОЕ сообщество phpclub.

Есть несколько сайтов на одном движке (php и pdo) у них общие темплейты,
сейчас возникла необходимость в шаблонах сделать некоторые изменения, для каждого сайта свои, пока вижу два варианта:

1 Копировать для каждого сайта свои шаблоны. Минус: потом какие то изменения придется вносить во все шаблоны для каждого сайта. Из плюсов никаких конфликтов, просто реализовать.

2 Стараться не разносить шаблоны по сайтам без острой необходимости, в каждом общем шаблоне ставить

PHP:
if($site_id == 1) код elseif($site_id == 2)
Минусы: так как сайтов много и скоро каждая ссылка обрастет подобными условиями и код превратится в кашу. Добавление новой фичи сразу доступно на всех сайтов, быстро и удобно.

Мне не очень нравятся оба варианта. Как лучше решить подобную задачу ?
 

artoodetoo

великий и ужасный
Предложу иметь папку с общими шаблонами + для каждого сайта свои. В первую очередь шаблонизатор должен заглянуть в папку сайта, а при неуспехе в общую.
В итоге понадобится минимум изменений и всё абсолютно прозрачно.

Этот же механизм можно распостранить на "темы" или "локализации". Заводите стек по убыванию приоритета:
- шаблон темы
- шаблон сайта
- шаблон по умолчанию
 
  • Like
Реакции: AmdY

A1x

Новичок
if($site_id == 1) код elseif($site_id == 2)
Минусы: так как сайтов много и скоро каждая ссылка обрастет подобными условиями и код превратится в кашу
сделать инклуд по имени сайта без всяких ифов

PHP:
include "site{$site_id}/template.php"
 

asker23

Новичок
Предложу иметь папку с общими шаблонами + для каждого сайта свои. В первую очередь шаблонизатор должен заглянуть в папку сайта, а при неуспехе в общую.
В итоге понадобится минимум изменений и всё абсолютно прозрачно.

Этот же механизм можно распостранить на "темы" или "локализации". Заводите стек по убыванию приоритета:
- шаблон темы
- шаблон сайта
- шаблон по умолчанию
Да с шаблонами мне идея нравится, но как лучше разрулить логику в контролере ?
 

fixxxer

К.О.
Партнер клуба
сделать так, чтобы код контроллеров был одинаковый.
различия могут быть в вариациях бизнес-логики (это работа моделей), либо в отображении (это уже решено разными шаблонами)
 
Сверху