Смена фона для любого раздела

+64
4.88K

С наступающим Новым Годом уважаемое сообщество!

Хочу пожелать всем семейного благополучия, достижения всех поставленных целей и здоровья, без которого не будет ни первого ни второго.

Для одного проекта понадобилось сделать возможность легко сменить фон для любого из разделов.
Решил поделиться наработкой)

В итоге несложных манипуляций, Вы получите следующее:

В правом верхнем углу сайта (только для админа), появляется кнопка загрузки изображения со своего компьютера. Выбрав картинку, нажимаете установить, и для текущего раздела устанавливается фон.

Работает это следующим образом:

1. Загрузив изображение на сервер, оно автоматически помещается в папку site.ru/images/bg/
2. В БД в таблицу cms_menu добавляется путь до указанной картинки
3. В выбранном разделе изменяется фон на тот, который вы загрузили, путем замены стиля для body на следующий:
  1.  
  2. body{
  3. background:url(ПУТЬ ДО ЗАГРУЖЕННОЙ КАРТИНКИ)repeat fixed center center !important;
  4. }
  5.  
Вы можете изменить настройки фона для своих нужд. Этот стиль задается в файле ВАШ ШАБЛОН/elements/bg.php строка 74

Собственно теперь как установить

1. КАЧАЕМ архив
2. Распаковываем в корень сайта
3. Открываем файл template.php своего шаблона и куда нибудь наверх, например после
  1.  
  2. if(!defined('VALID_CMS')) { die('ACCESS DENIED'); }
  3. $inUser = cmsUser::getInstance();
  4. $inPage = cmsPage::getInstance();
)
вставляем следующий код
  1.  
  2. $inDB = cmsDatabase::getInstance();
  3. $url = $_SERVER["REQUEST_URI"];
  4. include_once('templates/_default_/elements/bg.php');
  5.  
Если у вас свой шаблон, не забудьте изменить путь до файла bg.php
4. Сразу после тега <body> вставляем
  1.  
  2. <?php if($inUser->is_admin) { ?>
  3. <form style="position:fixed;top:0;right:0;z-index:99;" name="bgForm" method="post" enctype="multipart/form-data">
  4. <input type="file" name="ufile" />
  5.  
  6. <input type="submit" name="send" value="Установить" />
  7. </form>
  8. <?php } ?>
  9.  
5. Теперь заходим через phpMyadmin в свою базу данных и выполняем запрос
  1.  
  2. ALTER TABLE `cms_menu` ADD `background` VARCHAR(200) DEFAULT ''
  3.  
6. На папку /images/bg устанавливаем права 777

Теперь все должно работать.

Будут вопросы задавайте, по возможности отвечу

ДЕМО
логин test
пароль test
0
Def Def 11 лет назад #
для ккаой версии?
0
Rossoman Rossoman 11 лет назад #
делал для 1.10
Но по идее и на 1.9 должна работать
0
reload reload 11 лет назад #
Удобно придумано)
+1
reload reload 11 лет назад #
Rossoman, там в файлике bg.php есть строчка:
Группе, к которой вы принадлежите, запрещено просматривать этот скрытый текст

Думаю нужно сменить)
0
Rossoman Rossoman 11 лет назад #
точно)) Спасибо
0
Rossoman Rossoman 11 лет назад #

Обновил архив

Изменения коснулись 1 файла. Кому не хочется качать заново, откройте файл bg.php
и замените
строка примерно 47
Код PHP:
  1. move_uploaded_file($_FILES['ufile']['tmp_name'], "...................." . $_FILES['ufile']['name']);
заменить на
Код PHP:
  1. move_uploaded_file($_FILES['ufile']['tmp_name'], $_SERVER['DOCUMENT_ROOT'] . "/images/bg/" . $_FILES['ufile']['name']);
Здесь мы меняем путь до папки, куда загружается наши картинки. Ранее была ошибка

Строка примерно 70
Код PHP:
  1. if($url == $value['link'] && $value['background']) {
заменить на
Код PHP:
  1. if(strstr($url, $value['link']) && $value['background']) {
Здесь мы показываем фон на всех вложенных страницах типа /photos/1034
0
lezginka.ru lezginka.ru 11 лет назад #
народ, покажите в работе
0
Rossoman Rossoman 11 лет назад #
Скинул в личку проект на котором делал
0
Кишля Раду Кишля Раду 11 лет назад #
у меня на 1.9 всё установилось, только загружаю фон и он не выводится, в папке images/bg не появлякется ничего. И так я понимаю это для дефольтного шаблона, каким кодом этот фон в дефольтном шаблоне выводится? у меня он просто в корень изменён(
0
Rossoman Rossoman 11 лет назад #
Права на папку установили?
В шаблоне фон выводиться подключаемым скриптом bg.php
0
Rossoman Rossoman 11 лет назад #
Здесь путь поменяли?
Код PHP:
  1. include_once('templates/_default_/elements/bg.php');
0
Кишля Раду Кишля Раду 11 лет назад #
сделал всё по мануалу, путь не менял, добавил просто, у меня такого не было. Может мне стоит в ксс что то изменить?
0
Rossoman Rossoman 11 лет назад #
Если у вас шаблон не дефолтный, то здесь
Код PHP:
  1. include_once('templates/_default_/elements/bg.php');
нужно изменить на путь, к вашему шаблону. Соответственно в архиве есть папка /template/_default_
ее содержимое тоже нужно скопировать в папку со своим шаблоном
0
Кишля Раду Кишля Раду 11 лет назад #
Всё так и есть,у и пути как у дефольтного, шаблон отличается вёрсткой
0
Майкл Майкл 11 лет назад #
А демка будет?
0
Dost Dost 11 лет назад #
Здравствуйте! За наработку спасибо.
У меня не сохраняется картинка фона. Ни на денвере ни на хостинга. Права на папку bg выставил. Свой шаблон указал. Где ж я кривлю....
0
Rossoman Rossoman 11 лет назад #
дайте ссылку в личку
0
Rossoman Rossoman 11 лет назад #
Если шаблон дефолтный, то попробуйте код из пункта 3, вставить после этих строк
Код PHP:
  1. if(!defined('VALID_CMS')) { die('ACCESS DENIED'); }
  2. $inUser = cmsUser::getInstance();
  3. $inPage = cmsPage::getInstance();
0
Dost Dost 11 лет назад #
Шаблон не дефолтный, но нашел похожие строки — вставил и все заработало. Спасибо! С наступающим новым годом!
0
Rossoman Rossoman 11 лет назад #
Кстати, забыл сказать, многие наверное и подумали что не работает. Фон не устанавливается для главной страницы, а только для любых внутренних, которые ЕСТЬ В МЕНЮ
0
Кишля Раду Кишля Раду 11 лет назад #
вот именно это мне нужно было знать с самого начало, всё прекрасно работает на версии 1.9, конечно при загрузке сообщении о успешной загрузке в иероглифах но это не помеха, главное пользователям не видно это. Иду настраивать вывод фона сайта. Спаибо за дополнение!!! очень интиересный и полезный!!!
0
reload reload 11 лет назад #
при загрузке сообщении о успешной загрузке в иероглифах
кодировку файла смените, если хочется чтоб по феншую было)
0
Rossoman Rossoman 11 лет назад #
Конечно, делалось ведь для 1.10
+2
Rossoman Rossoman 11 лет назад #
Сделал демку - http://biznes62.ru/
логин test
пароль test
0
Кишля Раду Кишля Раду 11 лет назад #
Подскажите, а где настраивается фон, в своём ксс файле не нашёл( фон на дефольтном заполняется автоматически а мне нужно сделать его фиксированным и выравнять по середине заполняя остальное пространство белым цветом.
+1
Rossoman Rossoman 11 лет назад #
Почитайте самое начало. Там же все указано.
Код PHP:
  1. 3. В выбранном разделе изменяется фон на тот, который вы загрузили, путем замены стиля для body на следующий:
  2. Код PHP:
  3. body{
  4. background:url(ПУТЬ ДО ЗАГРУЖЕННОЙ КАРТИНКИ)repeat fixed center center !important;
  5. }
  6. Вы можете изменить настройки фона для своих нужд. Этот стиль задается в файле ВАШ ШАБЛОН/elements/bg.php строка 74
+3
Александр Корн Александр Корн 11 лет назад #
Оригинальное и очень нужное кому-то дополнение! Огромный плюс за идею... Второй жаль нельзя поставить... А так - второй плюс за реализацию )))
0
Edik_Salonikski Edik_Salonikski 11 лет назад #
Спасибо!+
0
kep kep 11 лет назад #
Спасибо за идею и реализацию smile
Всё работает - 1,10,1
Вопрос - есть ли возможность установки фона для вложеных (выпадающих) меню, а не только для главного меню?
0
Rossoman Rossoman 11 лет назад #
пока нет, но в ближайшее время сделаю отличный модуль с большими возможностями. с помощью этого модуля можно будет абсолютно для любой страницы менять фон
0
AlexMonstra AlexMonstra 11 лет назад #
покажите пример использования данной разработки?пожалуйста!!!
0
Николай (asd43) Николай (asd43) 11 лет назад #
не работает,как только не мучился, сайт абсолютно пустой, шабло дефолт, форма выходит, картинка в папку добавляется, а фона нет.
0
Николай (asd43) Николай (asd43) 11 лет назад #
заработало, только что помогло не понял, продедал все заново несколько раз
0
toropa toropa 11 лет назад #
+
модуль не помешал бы
0
Шадринец Шадринец 11 лет назад #
Здравствуйте что с модулем? который Вы собирались сделать-есть реализация Ваших планов?
в ближайшее время сделаю отличный модуль с большими возможностями. с помощью этого модуля можно будет абсолютно для любой страницы менять фон
0
Def Def 10 лет назад #
гаа, модулем было бы классно!

Еще от автора

Компонент Вопросы и Ответы.
P.S. Теперь приобрести компонент можно в автоматическом режиме. Способы оплаты различные.
Компонент Вопросы и Ответы
Компонент предназначенный для реализации на сайте сервиса вопросов и ответов.
Компонент Вопросы и ответы FREE - ICMS2
Представляю Вашему вниманию компонент вопросов и ответов. Данный компонент является бесплатным и доступен каждому для скачивания.
Используя этот сайт, вы соглашаетесь с тем, что мы используем файлы cookie.