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

3385

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

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

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

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

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

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

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

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

1. КАЧАЕМ архив
2. Распаковываем в корень сайта
3. Открываем файл template.php своего шаблона и куда нибудь наверх, например после
Код PHP:
  1.  
  2. if(!defined('VALID_CMS')) { die('ACCESS DENIED'); }
  3. $inUser = cmsUser::getInstance();
  4. $inPage = cmsPage::getInstance();
)
вставляем следующий код
Код PHP:
  1.  
  2. $inDB = cmsDatabase::getInstance();
  3. $url = $_SERVER["REQUEST_URI"];
  4. include_once('templates/_default_/elements/bg.php');
  5.  
Если у вас свой шаблон, не забудьте изменить путь до файла bg.php
4. Сразу после тега <body> вставляем
Код PHP:
  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 в свою базу данных и выполняем запрос
Код PHP:
  1.  
  2. ALTER TABLE `cms_menu` ADD `background` VARCHAR(200) DEFAULT ''
  3.  
6. На папку /images/bg устанавливаем права 777

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

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

ДЕМО
логин test
пароль test
Компонент "SMS сообщения" (БЕТА) | Ограничение минимального числа символов Фамилии и Имени при регистрации
Комментарии (36)
Def 29 декабря 2012 в 10:14 0
для ккаой версии?
Rossoman 29 декабря 2012 в 10:15 0
делал для 1.10
Но по идее и на 1.9 должна работать
reload 29 декабря 2012 в 11:35 0
Удобно придумано)
reload 29 декабря 2012 в 11:42 +1
Rossoman, там в файлике bg.php есть строчка:
Скрытый текст виден только зарегистрированным пользователям

Думаю нужно сменить)
Rossoman 29 декабря 2012 в 12:27 0
точно)) Спасибо
Rossoman 29 декабря 2012 в 12:50 0

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

Изменения коснулись 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
lezginka.ru 29 декабря 2012 в 14:02 0
народ, покажите в работе
Rossoman 29 декабря 2012 в 14:08 0
Скинул в личку проект на котором делал
Кишля Раду 29 декабря 2012 в 14:04 0
у меня на 1.9 всё установилось, только загружаю фон и он не выводится, в папке images/bg не появлякется ничего. И так я понимаю это для дефольтного шаблона, каким кодом этот фон в дефольтном шаблоне выводится? у меня он просто в корень изменён(
Rossoman 29 декабря 2012 в 14:07 0
Права на папку установили?
В шаблоне фон выводиться подключаемым скриптом bg.php
Rossoman 29 декабря 2012 в 14:08 0
Здесь путь поменяли?
Код PHP:
  1. include_once('templates/_default_/elements/bg.php');
Кишля Раду 29 декабря 2012 в 14:37 0
сделал всё по мануалу, путь не менял, добавил просто, у меня такого не было. Может мне стоит в ксс что то изменить?
Rossoman 29 декабря 2012 в 15:08 0
Если у вас шаблон не дефолтный, то здесь
Код PHP:
  1. include_once('templates/_default_/elements/bg.php');
нужно изменить на путь, к вашему шаблону. Соответственно в архиве есть папка /template/_default_
ее содержимое тоже нужно скопировать в папку со своим шаблоном
Кишля Раду 29 декабря 2012 в 16:36 0
Всё так и есть,у и пути как у дефольтного, шаблон отличается вёрсткой
Майкл 29 декабря 2012 в 14:44 0
А демка будет?
Dost 29 декабря 2012 в 14:54 0
Здравствуйте! За наработку спасибо.
У меня не сохраняется картинка фона. Ни на денвере ни на хостинга. Права на папку bg выставил. Свой шаблон указал. Где ж я кривлю....
Rossoman 29 декабря 2012 в 15:09 0
дайте ссылку в личку
Rossoman 29 декабря 2012 в 15:14 0
Если шаблон дефолтный, то попробуйте код из пункта 3, вставить после этих строк
Код PHP:
  1.  
  2. if(!defined('VALID_CMS')) { die('ACCESS DENIED'); }
  3. $inUser = cmsUser::getInstance();
  4. $inPage = cmsPage::getInstance();
Dost 29 декабря 2012 в 15:27 0
Шаблон не дефолтный, но нашел похожие строки — вставил и все заработало. Спасибо! С наступающим новым годом!
Rossoman 29 декабря 2012 в 15:28 0
Кстати, забыл сказать, многие наверное и подумали что не работает. Фон не устанавливается для главной страницы, а только для любых внутренних, которые ЕСТЬ В МЕНЮ
Кишля Раду 29 декабря 2012 в 16:43 0
вот именно это мне нужно было знать с самого начало, всё прекрасно работает на версии 1.9, конечно при загрузке сообщении о успешной загрузке в иероглифах но это не помеха, главное пользователям не видно это. Иду настраивать вывод фона сайта. Спаибо за дополнение!!! очень интиересный и полезный!!!
reload 29 декабря 2012 в 18:09 0
при загрузке сообщении о успешной загрузке в иероглифах
кодировку файла смените, если хочется чтоб по феншую было)
Rossoman 29 декабря 2012 в 19:19 0
Конечно, делалось ведь для 1.10
Rossoman 29 декабря 2012 в 15:33 +2
Сделал демку - http://biznes62.ru/
логин test
пароль test
Кишля Раду 30 декабря 2012 в 10:46 0
Подскажите, а где настраивается фон, в своём ксс файле не нашёл( фон на дефольтном заполняется автоматически а мне нужно сделать его фиксированным и выравнять по середине заполняя остальное пространство белым цветом.
Rossoman 31 декабря 2012 в 12:19 +1
Почитайте самое начало. Там же все указано.
Код PHP:
  1.  
  2. 3. В выбранном разделе изменяется фон на тот, который вы загрузили, путем замены стиля для body на следующий:
  3. Код PHP:
  4.  
  5. body{
  6. background:url(ПУТЬ ДО ЗАГРУЖЕННОЙ КАРТИНКИ)repeat fixed center center !important;
  7. }
  8.  
  9. Вы можете изменить настройки фона для своих нужд. Этот стиль задается в файле ВАШ ШАБЛОН/elements/bg.php строка 74
  10.  
Александр Корн 30 декабря 2012 в 13:29 +3
Оригинальное и очень нужное кому-то дополнение! Огромный плюс за идею... Второй жаль нельзя поставить... А так - второй плюс за реализацию )))
Edik_Salonikski 31 декабря 2012 в 00:43 0
Спасибо!+
kep 8 февраля 2013 в 18:56 0
Спасибо за идею и реализацию smile
Всё работает - 1,10,1
Вопрос - есть ли возможность установки фона для вложеных (выпадающих) меню, а не только для главного меню?
Rossoman 8 февраля 2013 в 21:01 0
пока нет, но в ближайшее время сделаю отличный модуль с большими возможностями. с помощью этого модуля можно будет абсолютно для любой страницы менять фон
AlexMonstra 22 февраля 2013 в 10:59 0
покажите пример использования данной разработки?пожалуйста!!!
Николай (asd43) 24 февраля 2013 в 00:29 0
не работает,как только не мучился, сайт абсолютно пустой, шабло дефолт, форма выходит, картинка в папку добавляется, а фона нет.
Николай (asd43) 24 февраля 2013 в 04:45 0
заработало, только что помогло не понял, продедал все заново несколько раз
toropa 25 марта 2013 в 17:46 0
+
модуль не помешал бы
Шадринец 20 октября 2013 в 10:08 0
Здравствуйте что с модулем? который Вы собирались сделать-есть реализация Ваших планов?
в ближайшее время сделаю отличный модуль с большими возможностями. с помощью этого модуля можно будет абсолютно для любой страницы менять фон
Def 26 сентября 2014 в 22:42 0
гаа, модулем было бы классно!