Свои глобальные настройки (переменные) на UCOZ сайте

Инструкции

Рисунок Свои глобальные настройки (переменные) на UCOZ сайте
Свои глобальные настройки (переменные) на UCOZ сайте Свои глобальные настройки (переменные) на UCOZ сайте
оценка: 4.4 из 5
оценок: 7

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

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

Поставим тривиальную задачу. Скажем на сайте имеются рекламные баннеры. Вы хотите разделить группы пользователей на тех, кто должен видеть рекламу, и тех, кто не должен. При этом, иметь возможность динамически менять группы, которым баннер должен быть виден. Назовем группу, которая должна видеть баннеры рекламными группами. Скажу сразу, у меня стояла совсем другая задача, говорить о которой не имеет смысла.

Понятное дело, можно сделать такое разграничение и при помощи встроенных в систему UCOZ переменных и условных операторов. Но если баннеры размещены в разных шаблонах сайта, то смена рекламных групп займет много времени. А "быстрая замена" может не сработать в некоторых шаблонах. Поэтому, будем применять к сайту свои переменные.

Что нам потребуется для подобного извращения:

  • Естественно, сайт на конструкторе UCOZ.
  • Модуль "Редактор страниц".
  • Модуль "Пользователи" с уже обдуманными и заведенными группами пользователей. Параметр необязательный, но нужный для поставленной выше задачи.
  • Прямые руки и алгоритмический (программистический) склад ума.

Все добыли? Теперь можно продолжать.

Создаем файл настроек

Для начала создаем любой текстовый файл, даем ему любое название и задаем расширение xml, например, options.xml . Учтите то, что файлу нужно задать кодировку UTF-8, так как UCOZ отдает содержимое именно в этой кодировке. Иначе возможно появление каракулей или иероглифов вместо русских символов в переменной. Если кириллических или других, отличных от латинского, буковок не предполагается, то можно оставить кодировку как есть. Я обычно юзаю для таких случаев Notepad2.

В полученный файл пишем следующее:

Code
<?xml?>

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

Теперь заходим в панель управления и проходим по менюшке "Инструменты" - "Файловый менеджер", и заливаем наш файл глобальных настроек в любую удобную директорию. Напрямую в этот файл мы лазать не будем, поэтому положение значения не имеет.


Залитый файл настроек UCOZ

Создаем страницу глобальных настроек

Приступаем к созданию страницы редактирования настроек.

Заходим в панель управления. Идем по пути: "Редактор страниц" - "Управление страницами сайта", нажимаем кнопку "Добавить страницу".

Размечаем, кому можно редактировать глобальные переменные, и убираем галочку с пункта "Добавить ссылку на страницу в главное меню сайта". Логично, что доступ оставляем только администраторам.

Задаем странице любое название. Например: глобальные настройки сайта.


Параметры страницы настроек UCOZ

Далее в содержимом страницы прописываем форму для редактирования прав. Код может быть таким:

Code
<form action="" id="options-form">
  <div>Кто видит рекламу:</div>
  <div>
    <label>
      <input type="checkbox" name="admin" value="ok">
      Администраторы
    </label>
  </div>
  <div>
    <label>
      <input type="checkbox" name="moder" value="ok">
      Модераторы
    </label>
  </div>
  <div>
    <label>
      <input type="checkbox" name="user" value="ok">
      Пользователи     </label>
  </div>

  <div>
    <label>
      <input type="checkbox" name="guest" value="ok">
      Гости
    </label>
  </div>
</form>

ВАЖНО! У создаваемой формы должен быть ID. У значимых полей формы должен быть задан атрибут name, и он должен быть уникальным в пределах данной формы.

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

Code
<script type="text/javascript" src="http://szenprogs.ru/scripts/umyopt.js"></script>
<script type="text/javascript"><!--
  $(function(){
    _uMyOptions.init('#options-form', '/options.xml');
  });
</script>

Функция _uMyOptions.init(id, file) выполняет следующую работу:

  • Загружает настройки из файла FILE в форму ID во время загрузки страницы.
  • Сохраняет введенные глобальные переменные из формы ID в файл FILE.

Логично, что id - это id формы, а file - это путь и имя файла от корня сайта.

Теперь можно сохранить страницу и открыть ее. Смотрим, что мы натворили.


Страница глобальных настроек UCOZ сайта

На данном этапе поля формы останутся пустыми. Это нормальное поведение, так как файл настроек пока пустой. Сейчас уже можно попробовать поставить галочки и сохранить настройки. Если все сделано правильно, то при обновлении страницы опции должны отметиться так, как Вы их сохранили.

Используем глобальные переменные

Выдергивать параметры из файла настроек мы будем встроенным в UCOZ импортом удаленного кода. Создадим его.

Заходим в панель управления и проходим по следующему пути: "Дизайн" - "Импорт удаленного кода". На открывшейся странице жмем кнопку "Добавить импорт удаленной страницы". В поле "URL адрес страницы для импортирования кода" вставляем ссылку на наш файл настроек. Поле "Частота обновления кеш файла" ставим возможное минимальное значение. Обычно оно равняется 3 часам. Жмем кнопку "Добавить". Импорт готов.

Теперь запоминаем код импорта. Обычно это $RCODE_n$, где n - номер импорта. Если импорт у Вас один, то код выглядит так: $RCODE_1$. Из него и будем вытаскивать наши переменные и их значения.

Для получения значения переменной можно использовать 2 метода. Один используется для вывода значения переменной на странице (скажем, рекламный код), второй для использования в условных операторах.

Вывод на странице

Для вывода значения глобальной переменной на странице используется достаточно длинный код. Выглядит он так:

Code
<?substr(substr($RCODE_1$, strpos($RCODE_1$, '<name>') + len('<name>')), 0, strpos(substr($RCODE_1$, strpos($RCODE_1$, '<name>') + len('<name>')), '</name>'))?>

Вместо текста name в коде ставим название поля формы (атрибут name элементов формы). Меняем во всех 5-и местах кода. Название переменной name обязательно пишем в нижнем регистре.

Использование в условных операторах

Для использования в условных операторах можно ограничиться упрощенным кодом:

Code
<?if(strpos($RCODE_1$, '<name>value</name>') != -1)?>

Тут также текст name в коде меняем на имя элемента формы (атрибут name). Вместо текста value используем проверяемое значение. Название переменной пишем в нижнем регистре, а value - учитывать регистр ввода в форму.

Этот вариант лучше всего использовать для <input type="checkbox">, <input type="radio"> или <select>.

Завершение задачи

В самом начале данного повествования была поставлена задача. Теперь мы можем ее решить. В месте, где выводится код рекламы пишем:

Code
<?if((strpos($RCODE_1$, '<admin>ok</admin>') != -1 && $GROUP_ID$ == 4)
|| (strpos($RCODE_1$, '<moder>ok</moder>') != -1 && $GROUP_ID$ == 3)
|| (strpos($RCODE_1$, '<user>ok</user>') != -1 && $GROUP_ID$ == 1)
|| (strpos($RCODE_1$, '<guest>ok</guest>') != -1 && $GROUP_ID$ == 0))?>
  Код рекламного блока...
<?endif?>

Теперь отображением рекламы можно управлять только с одной страницы сайта.

Закругляемся

Мы научились использовать свои собственные глобальные переменные на сайте UCOZ. Стоит иметь ввиду несколько минусов такого подхода. Значение переменных не очень динамичны. Так как использовался удаленный импорт, изменения в файле будут видны только через 3 часа. Можно форсировать данную задержку. Для этого нужно войти в панель управления на страницу удаленного импорта, открыть импорт на редактирование и сохранить, не внеся никаких изменений.

Также помните, что файл настроек может содержать не более 1000 символов. В принципе, этого должно хватить с лихвой.

На этой ноте заканчиваю.

Удачи в свершениях!

Вы можете присоедениться к моему микроблогу в Твиттере @SzenProgs. Буду благодарен, если оцените мой труд, и щелкните по звездочкам ниже.




Свои глобальные настройки (переменные) на UCOZ сайте
Инструкции
Скрипты, инструкции, справочники

rss
Категория:Инструкции
Просмотрено:7237
Рейтинг:4.4/7
Дата добавления:2014-04-15 13:05, Вторник
Добавил:Szen
Теги:переменные, ucoz, настройки

Мини-форум

№ 02014-04-15 13:05
Szen
Аватар участника Szen
Здесь вы можете задать вопрос или оставить комментарий по теме "Свои глобальные настройки (переменные) на UCOZ сайте".
Гость
Учавствовать в обсуждении "Свои глобальные настройки (переменные) на UCOZ сайте" могут только зарегистрированные пользователи.
Реклама
Кнопка портала
Посетители
Друзья портала
Вакантное место для вашей рекламы!
RSS лента Блога
RSS лента Каталога файлов
RSS лента Новостей
Будьте в курсе событий.
Введите ваш email:

Личный блок
  • Гость портала.
  • Личных данных нет.
Вход на сайт
Регистрация
Опрос
Каким CMS вы пользуетесь?
Всего ответов: 222
Статистика
Valid HTML 4.01 Transitional

Яндекс цитирования



Онлайн всего: 2
Гостей: 2
Пользователей: 0
Портал SzenProgs.ru © 2008 - 2017 · Условия
Администратор и дизайнер портала: Szen
Хостинг от uCoz