Доработка шаблона Elevation для MaxSite

/ Просмотров: 1276
Метки: ,
Доработка шаблона Elevation для MaxSite

Для сайта газеты "Свет миру" в качестве CMS решено было использовать MaxSite, так как на моем блоге она себя отлично зарекомендовала, а из всех шаблонов мне очень понравился Elevation. Классный шаблон, и красивый, и структура для газеты очень подходит, и прекрасно заработал на MaxSite CMS v.0.93.

Однако пришлось его доработать.

Прежде всего мне не понравилось, что нужно было вручную заполнять поле "Картинка записи на главной". Мне всегда было удобно одним заполнять поле "Изображение записи" кликом "использовать как изображение записи" на картинке в разделе "Файлы". Конечно возможно я чего-то не понял, и это поле можно заполнять каким-то простым способом, но я решил исправить этот недочет следующим образом. Пусть при формировании списка записей на главной странице используется вместо "Картинка записи на главной" старое и привычное "Изображение записи". В директории /application/maxsite/templates/max-elevation/type/home/units/ во всех файлах находим следующий фрагмент кода:

// адрес картинки записи в мета img_page_home
// генерируем thumb
if (
    $img = thumb_generate(
    $p->meta_val('img_page_home'), // адрес

и заменяем его на:

// адрес картинки записи в мета img_page_home
// генерируем thumb
if (
    $img = thumb_generate(
    $p->meta_val('image_for_page'), // адрес

Хотя, пожалуй, более красиво было бы подправить javascript который заполняет поле "Изображение записи" при клике на картинке. При этом необходимо чтобы скрипт заполнял еще и "Картинка записи на главной".

Вторая проблема с которой я столкнулся - псевдонимы url сайта. Например основной адрес сайта http://1prosvet.ru. Если зайти на сайт по адресу http://www.1prosvet.ru, то на главной странице мы не увидим картинок (миниатюр) записей. Кстати сказать, в IE попасть в админку по адресу http://www.1prosvet.ru у меня тоже не получилосб (c FF проблем нет).

Почему нет картинок на главной? Потому, что шаблон проверяет валидность полного url изображения. А у нас в базе http://1prosvet.ru/uploads/_pages/16/201601007-215-150.jpeg а реальный url с учетом того, по какому адресу мы зашли на сайт http://www.1prosvet.ru/uploads/_pages/16/201601007-215-150.jpeg. Естественно шаблон думает, что url в базе некорректный и миниатюру не отображает вовсе.

Правим файл /application/maxsite/templates/max-elevation/stock/thumb/thumb.php. Находим проверку url изображения на валидность:

if (strpos($url, getinfo('uploads_url')) === false) 
{
    // входящий адрес чужой
    $this->init = false;
    return;
}

Заменяем на:

$domains = '(http://www.1prosvet.ru/uploads/|http://www.svetmiru.ru/uploads/|http://1prosvet.ru/uploads/|http://svetmiru.ru/uploads/)';
if (preg_match($domains, $url) == false) {
    $this->init = false;
    return;
}

Конечно некрасиво перечислять все возможные алиасы в коде, но работает.

Нужно внести еще ожно изменение в этот файл:

// файл и путь файла относительно uploads
        $this->file = str_replace(getinfo('uploads_url'), '', $url);

меняем на:

// файл и путь файла относительно uploads
        $this->file = preg_replace($domains, '', $url);

предполагается, что $domains уже определена перед проверкой валидности url.

Пока все работает.

PS. Если миниатюры не отображаются в стандартном шаблоне, то править нужно /application/maxsite/shared/stock/thumb/thumb.php