Современная, быстрая и удобная система управления сайтом

Адаптация старых шаблонов к MaxSite CMS 0.9x

Архив записейКомментарии: 4Просмотров: 10420

Для того, чтобы старые шаблоны смогли работать в новой версии MaxSite CMS потребуется выполнить несколько действий. В основном они связаны с копированием недостающий файлов в каталог шаблона. Также возможно придётся поправить несколько строк кода.

В целом задача довольно простая. Вместе с тем, я особо отмечу, что старые шаблоны останутся в своей функциональности — если на уровне шаблона не предусмотрена поддержка новых возможностей системы, то её и не будет.

Перед началом переделки вам нужно сделать несколько вещей. В первую очередь сохраните все файлы текущей (старой) версии MaxSite CMS. Чем выше у вас версия системы, тем лучше. У нас было несколько «поворотных» версий, в которых менялись важные файлы. Версии по 0.79, версии 0.80 .. 0.83 и версии 0.84 .. 0.86. В зависимости от вашей версии, будут выдаваться разные ошибки при переделке. Но это не важно, поскольку я научу как их все отлавливать и исправлять.

Обратите внимание, что при обновлении MaxSite CMS, база данных не меняется. Это значит, что вы можете совершенно спокойно менять любые версии, просто загрузив нужные файлы. То есть вы ничего не сломаете, если не будете обновлять опции, тексты и т.п.

Итак, приступим. Первым делом нужно сохранить из вашей текущей версии MaxSite CMS каталог application. Из него мы будем брать недостающие файлы.

После этого, вам нужно переключиться на default-шаблон и выйти из системы. Только после этого вы можете обновиться до последней версии MaxSite CMS. Причем я рекомендую использовать dev-версию, как более новую. Также не используйте автоматическое обновление, а сделайте как Универсальный способ обновления.

После этого вы можете зайти в админ-панель и убедиться, что всё работает как нужно, но только на default-шаблоне.

Приступаем к переделке старого шаблона.

Скопируем файлы своего шаблона в каталог templates. После этого в админ-панели переключаемся на свой шаблон и переходим на главную страницу сайта и видим кучу php-ошибок, например такую:

A PHP Error was encountered
 
Severity: Warning
 
Message: require_once(application/maxsite/shared/functions/template.php) 
[function.require-once]: failed to open stream: No such file or directory
 
Filename: шаблон/functions.php
 
Line Number: 18

Основные ошибки — это отсутствие файла (failed to open stream). Внимательно рассмотрите это сообщение. В нём указывается:

  • Что за ошибка
  • В каком файле она возникла
  • В какой функции
  • В какой строчке php-кода
  • Дополнительная информация

В данном примере мы видим, что ошибка возникла в 18 строчке файла шаблон/functions.php в функции require_once. Функция не смогла подключить файл по указанному пути, поскольку его не там нет (No such file or directory).

Открываем шаблон/functions.php и в 18 строчке видим код:

require_once(getinfo('shared_dir') . 'functions/template.php');

Это подключение файла из shared-каталога functions/template.php. Проверяем shared-каталог и видим, что такого файла в новой версии просто нет. Значит нам следует его взять из своей старой весрии, только скопировав его в каталог шаблона custom.

В шаблон/functions.php меняем путь подключения:

require_once(getinfo('template_dir') . 'custom/template.php');

Обновляем страницу и видим, что это сообщение исчезло, но появилось другое, на недоступность другого файла из shared-каталога.

Проделываем аналогичные операции, пока не php-ошибки не исчезнут.

Если шаблон совсем старый и не поддерживает shared-каталог, то скорее всего он использует type-файлы из default-каталога (опять же старой версии). Просто скопируйте type-каталог из default в свой.

Отдельно стоит отметить вариант, когда шаблон использует LESS-компиляцию. Старый less-компилятор перенесен в плагин less_compiling (там есть инструкции). Чтобы отключить less-компиляцию в шаблоне, следует удалить или переименовать файлы var_style.php и style.php. Если таких файлов нет, значит less-компиляцию не включена.

После обновления сайт будет выглядеть совершенно «развалившимся». Это из-за того, что используются недостающие css-стили из shared-каталога. В 90% случаев это будет единственный файл style-all-mini.css. Просто скопируйте его из старого shared в каталог шаблона css и обновите страницу.

На данном этапе сайт уже должен полностью функционировать, осталось лишь поправить ряд мелких деталей.

Чтобы отследить остальные недостающие файлы проще всего воспользоваться Панелью разработчика в FireFox (Ctrl+Shift+I). Обновите страницу и на вкладке Сеть вы увидите все http-запросы. Нас интересуют только те, которые имеют код 404 — Not Found.

Например будет недоступен такой файл

/application/maxsite/common/jquery/jquery.dropdown.js

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

Что касается js-скриптов, то в MaxSite CMS достаточно давно можно сделать в шаблоне каталог js/autoload/, откуда все js-файлы будут автоматически подключаться. Если автоподключение не работает, то придется найти где он подключается и указать новый путь.

В целом остальные работы по переделке будут зависеть уже от самого шаблона, поскольку детали сильно разнятся. В целом же вначале нужно будет исключить все ненайденные файлы, а уже после этого оставить на «закуску» правку css-кода.

В MaxSite CMS 0.90 поменялись некоторые css-классы, в основном они получили префикс mso-. Это сделано ради совместимости с различными css-фреймворками.

Вот основные:

  • .clearfix стал .mso-clearfix
  • .widget стал mso-widget
  • .cut стал .mso-cut

Код для .mso-clearfix:

.mso-clearfix:before,
.mso-clearfix:after{content:" ";display:table}
.mso-clearfix:after{clear:both}

Чтобы определить использование новых префиксов достаточно в FireFox нажать Ctrl+U (просмотр исходного кода html-страницы) и Ctrl+F (поиск по тексту): указать для поиска mso-. Дальше проверить наличие этого класса (без префикса mso-) в своих css-стилях. Поправить при необходимости.

Часть изменений может касаться неверных путей в css-стилях. Возможно, что шаблон подключает какие-то файлы из shared-каталога. Определить такие пути можно в Панели разработчика или поиском по css-файлу на вхождение «shared».

Основная задача по переделке шаблона сводится к тому, чтобы исключить все лишние зависимости с default (очень старые шаблоны) или shared каталогами. После такой переделки шаблон становится «вещью в себе» и тем самым появляется полная совместимость с любой версией MaxSite CMS.

Комментариев: 4 RSS

1Vladimir01-02-2017 19:18

Добрый день!

подскажите, плз.

Установил эту версию движка, перетащил недостающие файлы из старой версии (0,84) в шаблон в custom, их оказалось всего 2: template.php и set_val.php.

Но, если до перетаскивания файлов запускался дефолтный шаблон, то теперь не запускается ни он, ни мой старый, тоже дефолтный от версии 0.84.

Посмотрел логи ошибок, пишет, что обращение к несуществующей функции mso_default_head_section().

Еще ему также не нравится вызов другой несуществующей функции - get_component_fn().

И еще, в файле functions.php старого шаблона есть и другие вызовы файлов из папки shared, но почему-то ошибок по ним не было... и я их не переносил.

Например:

require_once(getinfo('shared_dir') . 'stock/page-out/page-out.php');

Как теперь быть? Как запустить сайт? Хотя бы новый дефолтный шаблон? Что самое интересное, админка-то работает!

2Аноним01-02-2017 22:07

Дефолтный шаблон трогать не нужно. Вначале наладьте сайт на дефолтном, после займитесь переносом старого.

3Владимир02-02-2017 00:54

Макс, спасибо за ответ!

Но ведь я с дефолтного и начал, он нормально сработал.

Что нужно вернуть/восстановить, чтобы снова начал работать дефолтный?

Ведь при переносе старого шаблона в новом ничего не изменилось и ничего не менялось в движке... Что может мешать работать старому шаблону?

При попытке войти на сайт возникает ошибка 500.

4Аноним02-02-2017 10:59

Загрузите заново файлы. Сросьте кэш. Очистите куки.

Оставьте свой комментарий!

Комментарий будет опубликован после проверки

Вы можете войти под своим логином или зарегистрироваться на сайте.

(обязательно)