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

  • Автор темы Автор темы asker23
  • Дата начала Дата начала

asker23

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

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

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

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

PHP:
if($site_id == 1) код elseif($site_id == 2)

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

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

Этот же механизм можно распостранить на "темы" или "локализации". Заводите стек по убыванию приоритета:
- шаблон темы
- шаблон сайта
- шаблон по умолчанию
 
  • Like
Реакции: AmdY
if($site_id == 1) код elseif($site_id == 2)
Минусы: так как сайтов много и скоро каждая ссылка обрастет подобными условиями и код превратится в кашу

сделать инклуд по имени сайта без всяких ифов

PHP:
include "site{$site_id}/template.php"
 
Предложу иметь папку с общими шаблонами + для каждого сайта свои. В первую очередь шаблонизатор должен заглянуть в папку сайта, а при неуспехе в общую.
В итоге понадобится минимум изменений и всё абсолютно прозрачно.

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

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