-
2
-
Обновлений за месяц: 2
-
Zion WebEngine 24.11.15
15.11.2024
-
Zion WebEngine 24.11.12
12.11.2024
-
Плагин Menu
Если инструкция не соответствует тому, что Вы видите, Ваша версия CMS устарела. Обратитесь к создателю сайта за обновлением...
Для чего нужен плагин Menu
С его помощью можно формировать автоматические меню и списки. Это может быть и меню для навигации по сайту, и список новостей, список сообщений в чате, список товаров в заказе. Что угодно.
Где хранится плагин Menu
В папке plugins
, в файле menu.php
.
Если хотите внести какие-либо изменения в код этого плагина, то перенесите его в папку plugins/custom
- так он не будет заменён стандартным плагином в случае обновления CMS.
Как создать и оформить меню или список
В меню администратора выберите Навигация \ Варианты оформления меню
.
При правке меню увидите несколько полей, их названия, подсказки по использованию доступных свойств и условий.
Доступные поля:
ID
- идентификатор меню. Нечто уникальное. Его можно указать при создании меню. В дальнейшем его не изменить.Название
- ни на что не влияет. Но лучше создавайте такие названия, которые будут понятны Вам. Может существовать несколько меню с одинаковыми названиями, но лучше так не делать. Название можно изменить в дальнейшем.- Несколько полей для указания HTML-кода различных частей меню. От этих полей зависит, как будет выглядеть меню.
HTML-код меню
Если Вы не разбираетесь в HTML, то лучше самостоятельно не вносите здесь изменения.
Поля для HTML-кода можно разбить на 3 вида:
- Основное оформление
- Альтернативное оформление
- Оформление пагинации
Основное оформление
В поле HTML-код до меню
можно указать начало оформления, а в поле HTML-код после меню
- конец оформления меню. Например, это теги ul
, nav
, div
или table
.
Список или меню может состоять из одного или нескольких блоков. Если Вы разделение на блоки не планируете, то предполагается, что блок будет один. Если используете табличную вёрстку, то, в полях HTML-код до блока
и HTML-код после блока
могут быть указаны, например, теги tr
.
Можно также заполнить поле HTML-код между блоками
. Если блок будет всего один, то то, что здесь указано, выведено не будет, что следует из названия поля...
Остались поля для записей (элементов списка или меню):
HTML-код обычной записи
- здесь могут быть указаны, например, тегиli
илиtd
, а также свойства записей, например{content_name}
. Это поле одинаково доступно для всех типов меню и списков.HTML-код активной записи
- аналогичное по смыслу поле, но оформление из него используется вместо оформления из предыдущего поля только для активной записи (а также для надразделов активной записи). Если речь идёт о меню страниц, то здесь Вы можете указать, как должна выглядеть в меню открытая в данный момент страница (или надраздел открытой в данный момент страницы). Для некоторых типов меню это поле недоступно (так как не все типы можно открыть), а для некоторых типов меняется смысл данного поля. Например, если мы отображаем список пользователей, то здесь можно задать оформление текущего пользователя. Если речь идёт о списке чатов, то здесь можно задать оформление чатов с непрочитанными сообщениями. А если речь идёт о списке сообщений в чате, то здесь можно задать оформление непрочитанных сообщений.HTML-код между записями
- если в меню будет всего одна запись, то то, что здесь указано, выведено не будет, что следует из названия поля...
Альтернативное оформление
В поле HTML-код, который будет отображён, если список пуст
можно написать текст или HTML-код, который нужно отобразить в ситуации, когда список оказывается пустым. Например, если речь идёт о списке результатов поиска, а поиск не дал результатов, то здесь можно написать что-то вроде Ничего не найдено
.
Оформление пагинации
Список может быть разделён на подстраницы (например, 100 товаров, могут быть разбиты на 5 страниц по 20 товаров). Для оформления отображения списка из номеров подстраниц (это часто называется "пагинацией") также есть несколько полей. Они аналогичны тем, что используются для основного оформления, но без разделения на блоки:
HTML-код до списка подстраниц
иHTML-код после списка подстраниц
- например, тегиp
HTML-код обычного элемента списка подстраниц
иHTML-код активного элемента списка подстраниц
- например, тегиa
и свойства подстраниц, вроде{menu_subpage}
(номер подстраницы) и{menu_subpage_url}
(URL подстраницы)HTML-код между элементами списка подстраниц
- будет использоваться только, если подстраниц более, чем одна.
Как отобразить меню или список с нужными параметрами
Для того, чтобы вставить меню в HTML-код веб-страницы или в любое другое место, нужно сформировать команду для вызова плагина.
По умолчанию команда вызова такая: {plugin:menu}
Но такая команда результата не даст, так как не заданы (в том числе обязательные) параметры.
Параметры состоят из имени и значения, которые отделяются друг от друга двоеточием :
Одна пара имя:значение
от другого аналогичной пары отделяется точкой с запятой ;
От имени плагина параметры также отделяются точкой с запятой
Пример:
У нас есть два параметра. У первого название par1
, а значение test
. У второго название param2
, а значение yahoo
Команда вызова плагина при этом будет такая {plugin:menu;par1:test;param2:yahoo}
.
Некоторые параметры могут быть обязательными. Некоторые параметры могут быть (не)доступны или изменены при определённых значениях других параметров.
Для некоторых параметров доступны значения по умолчанию. Параметры со значениями по умолчанию можно не указывать.
Параметры плагина Menu
В старых версиях CMS набор доступных параметров и доступных значений может отличаться. Если Ваша CMS устарела, то рекомендуется обновить её до самой свежей версии.
Также на набор параметров и значений может влиять комплект поставки.
Имя параметра | Значение параметра и комментарии |
---|---|
id |
ID одного из вариантов оформления меню, которые можно найти в разделе меню администратора Это обязательный параметр. Без него плагин вернёт пустой результат. |
blocks |
Количество блоков, на которые нужно разбить меню. По умолчанию: Допускаются целые положительные числа. |
inblock |
Количество элементов в блоке. Допускаются целые положительные числа. Доступен, если не задан |
fixblocks |
Фиксировать ли блоки. Доступны только следующие варианты:
Влияет на выравнивание коротких меню: например, если в списке всего |
types |
Список типов записей, которые нужно отобразить. По умолчанию - все типы контента. Если нужно отобразить записи только некоторых типов, то ID типов нужно указать через запятую. Список доступных типов можно найти в разделе меню администратора Также доступны следующие варианты, которые нельзя перечислять через запятую (только один из вариантов, несочетающийся ни с одним другим вариантом):
Несочетающиеся значения не доступны при |
select |
Указание на то, по какому принципу нужно выбирать записи, которые будут отображаться в меню. Может быть заполнено значением из переменной Для отображения контентных единиц доступны варианты:
Для отображения вкладок доступны варианты (при наличии в комплекте поставки ZIon Catalog):
Для отображения элементов контента доступны варианты (при наличии в комплекте поставки ZIon Catalog):
Из списка элементов автоматически исключается Для отображения языков доступен вариант (при наличии в комплекте поставки ZIon Multi-Lang):
Для отображения пользователей доступны варианты (при наличии в комплекте поставки ZIon User Control):
Для отображения истории баланса доступен вариант (при наличии в комплекте поставки ZIon Catalog и Zion User Control):
Для отображения способов доставки доступен вариант (при наличии в комплекте поставки ZIon Catalog):
Для отображения транспортных компаний доступен вариант (при наличии в комплекте поставки ZIon xDelivery):
Для отображения способов оплаты доступен вариант (при наличии в комплекте поставки ZIon Catalog):
Для отображения списка чатов доступны варианты (при наличии в комплекте поставки ZIon Chat):
Для отображения сообщений в чате доступны варианты (при наличии в комплекте поставки ZIon Chat):
|
search |
Если этот параметр задан, то производится поиск указанного в данном параметре текста Рекомендации:
Не доступен при несочетающихся вариантах Не доступен при |
search-cols |
Указание на то, в каких столбцах производить поиск. Поля отделяются друг от друга запятыми Если в подсказке к полю указано Список полей проверяется. Некорректные исключаются. Если после проверки не останется ни одного корректного поля, то будет подставлено значение по умолчанию: Доступно при непустом |
bigdata |
Указание на то, планируется ли обработка большого количества данных.
Доступны только следующие варианты:
При Не доступен при |
level |
Уровень, разделы которого нужно вывести. Доступен при По умолчанию - Допускаются целые числа Если |
factor |
Указание на то, для какого раздела или для какого места в структуре, для какого заказа, для какого чата и т.п. нужно отобразить меню. Доступны следующие варианты:
Также доступен вариант Если вызов плагина Menu производится из HTML-кода веб-страницы или из любого другого элемента данной контентной единицы, то вместо Если вызов плагина Menu вызывается также из плагина Menu (например, если в надменю нужно вызвать подменю, то для вызова подменю указывайте Доступно использование любых других свойств (не только контента) |
fellLinks |
При любом непустом значении будет выделять, как активные, те записи, которые связаны с открытой записью. Внимание! Так как активными (а также следующими после активных и предыдущими для активных) в этом случае могут считаться сразу несколько записей, порядок которых заранее неизвестен, использование данного параметра может привести к одновременному и многократному срабатыванию условийIS_NEXT??истина::ложь и IS_PREV??истина::ложь , что невозможно во всех других случаях. Используйте данный параметр с данными условиями на свой страх и риск! |
tabs |
ID вкладок, перечисленные через запятую, для указанной в types:elements;select:ontabs
Доступен при |
hidden |
Указание на то, стоит ли отображать скрытые записи.
Доступны следующие варианты:
types:elements доступен, если select:ontabs или select:list . При select:list , если например в include указаны stringfield_5,number_3 , то на заполненность будут проверяться поля stringfield_5_value и number_3_value - то есть поля, имена которых заканчиваются на _value . |
include |
Список ID записей, которые нужно добавить в меню. При указании этого параметра в меню будут включены дополнительные пункты (если они существуют). При отсутствии значения оно может быть заполнено значением из переменной Если эти пункты уже есть в меню, дублирование не произойдёт. Недоступен при Это обязательный параметр при По умолчанию записи, добавленные через |
exclude |
Список ID записей, которые нужно исключить из меню. На этот параметр влияют ограничения прав доступа: в него добавляется список всего, к чему нет доступа у текущего пользователя или его группы. Этот параметр имеет больший приоритет по сравнению с |
notzero |
Отображать только записи с ненулевыми значениями в указанном поле Например:
Полезно использовать, например, для отображения только тех, товаров, для которых указана цена |
positive |
Отображать только записи с положительными значениями в указанном поле Например:
Полезно использовать, например, для отображения только товаров в наличии |
checked |
Отображать только записи, у которых отмечена соответсвущая галочка Например:
Можно использовать не только для галочек, но и для любых полей, где может быть значение |
cookie |
Имя массива куков Список элементов из этого массива будет добавлен к Доступен при |
hidecopies |
Имя массива куков, в котором должны храниться имена контентных единиц, для которых нужно скрывать те элементы, значения которых не отличаются от значений тех же элементов у других контентных единиц в том же массиве (полезно для реализации, например, сравнения товаров) Игнорируется, если в этом массиве есть только один элемент Доступен при |
inlist |
Максимальное количество записей, которые нужно вывести в списке. По умолчанию - Допускаются целые неотрицательные числа |
listing |
Указание на то, стоит ли отображать список подстраниц Доступны следующие варианты:
В режиме |
subpage |
Номер активной подстраницы При отсутствии значения оно может быть заполнено значением из переменной По умолчанию - Допускаются целые положительные числа |
maxsubpages |
Максимально допустимое количество подстраниц в пагинации При отсутствии или при некорректном значении отображаются все подстраницы. Допускаются целые положительные числа |
random |
Количество случайных элементов из найденного списка, которые нужно отобразить в случайном же порядке. По умолчанию - Допускаются целые неотрицательный числа |
userbrowser |
Веб-браузер посетителя, под который должна быть сделана оптимизация. Если не указан (по умолчанию), то браузер определяется автоматически. Доступны только следующие варианты:
|
content-type |
Позволяет изменить тип контента в заголовках, передаваемых веб-сервером. По умолчанию передаётся тип контента Внимание: при указании альтернативного типа контента, дробную черту Например:
|
charset |
Позволяет изменить набор (кодировку) символов в заголовках, передаваемых веб-сервером. По умолчанию передаётся кодировка Внимание: кодировка применяется ко всему выводимому контенту! Помимо указания заголовка производится конвертация из кодировки При |
filter |
Использовать ли фильтр. Доступны следующие варианты:
При Если нужна проверка не на равенство, а на соответствие другим условиям, то дополнительно нужно использовать массив переменных Доступны следующие функции:
Элементы Не доступен при Не доступен при Количество элементов в массиве |
|
Показывать только записи с датой равной или более поздней, чем указанная временная метка. У одной контентной единицы может быть несколько полей с датой. У каждого такого поля есть свой номер. Возможна фильтрация по любому из них - достаточно просто указать его номер вместо Пример временной метки текущего времени (21.11.2024 13:21:12): 1732184472 По умолчанию - Не доступен при Не доступен при несочетающихся вариантах |
dateto_... |
Аналогично По умолчанию - Не доступен при Не доступен при несочетающихся вариантах |
year_... |
Показывать только записи с датой в указанном году. У одной контентной единицы может быть несколько полей с датами. У каждого такого поля есть свой номер. Возможна сортировка по любому полю с датой - достаточно просто указать его номер вместо По умолчанию -
Не доступен при Не доступен при несочетающихся вариантах |
month_... |
Показывать только записи с датой в указанном месяце. По умолчанию - Если при наличии этого параметра параметр Не доступен при Не доступен при несочетающихся вариантах |
day_... |
Показывать только записи с датой в указанном дне месяца. По умолчанию - Если при наличии этого параметра параметр Не доступен при Не доступен при несочетающихся вариантах |
sort |
Указание на то, как следует сортировать найденные записи. Доступны следующие варианты:
При
Также доступна сортировка контента по полям с датой (при наличии в комплекте поставки ZIon Pub Hub): У одной контентной единицы может быть несколько полей с датой. У каждого такого поля есть свой номер. Возможна сортировка по любому из них - достаточно просто указать его номер в команде Если сортировка по дате недоступна, то Аналогично выше описанной сортировке по датам возможна сортировка по датам, как ежегодных событий (при наличии в комплекте поставки ZIon Pub Hub): Полезно, например, для отображения дней рождения или других праздников В этом случае в место Значение данного параметра может быть изменено на значение из В свою очередь в Значение в Любая сортировка не доступна при По умолчанию записи, добавленные через |
include-sort |
Сортировать или нет записи, добавленные через Доступны только следующие варианты:
Любая сортировка не доступна при |
sort-fields |
Указание на то, по каким полям необходимо сортировать список. Доступно указание нескольких полей через запятую, например, Если в подсказке к полю указано Поля, которых в таблице данных нет, будут исключены из данного списка. Если список полей для сортировки после проверки окажется пустым, то параметр Если нужна сортировка в обратном порядке по тому или иному полю, то перед его названием нужно указать символ Значение данного параметра может быть изменено на значение из В свою очередь в Значение в |
sort-numbers |
Указание на то, какие поля при сортировке нужно считать числами. Без использования этого параметра в некоторых случаях в результате сортировки вместо списка вида, Доступно указание нескольких полей через запятую, например,
Если в подсказке к полю указано Учитывается при использовании |
reason |
При установлении связи между контентными единицами можно указать (выбрать из списка или добавить) причину связи. Использование этого параметра позволяет отобразить связанные записи только с указанной причиной связи. Помимо указания одной из причин также доступны следующие варианты:
Доступен при |
Zion WebEngine Zion User Control Zion Catalog Zion Pub Hub Zion Chat Zion Multi-Lang Что такое CMS Zion WebEngine? Что такое Комплект поставки? Что такое Меню администратора? Что такое Свойства? Адрес (URL)/ЧПУ/Переадресация Баланс пользователя/Абонентская плата Веб-браузер Дата/Время/TimeMashine Доступы/Пользователи Кодировки/Наборы символов Контент/Контентные единицы Корзина для заказов Куки Меню/Списки/Навигация Многоязычность/Языки Обновления CMS Обмен сообщениями/Чат Пагинация/Подстраницы Поиск текста Помощники/Мастеры/Инструкции/Подсказки Сайт-каталог Связи Способы доставки/самовывоза Способы оплаты Сравнение Условия Фильтрация Что такое Плагины? Что такое Вкладки? Что такое Элементы? Элемент "HTML-код веб-страницы" Элемент "Место в структуре" Элемент "SEO-параметры" Элемент "Основной текст"
Если инструкция не соответствует тому, что Вы видите, Ваша версия CMS устарела. Обратитесь к создателю сайта за обновлением...
CMS Zion WebEngine является бесплатной системой. Развивается за счёт рекламы, помощи веб-студии #webZion и других спонсоров.
Будем рады, если Вы поддержите нас любой суммой, а также поделитесь идеями на счёт каких-либо улучшений и доработок для CMS...
Заранее, большое, спасибо
|
Блог обновлений
Zion WebEngine 24.03.26
- Доработан элемент
Связи
(спасибо MasterProfi):- Расширены возможности некоторых плагинов
Zion WebEngine 24.03.22
- Доработаны элемент
Связи
и административные JS-скрипты (спасибо MasterProfi):- Доработана настройка связей между пользователями и контентом:
- Теперь для связей пользователей с контентом доступен весь функционал, доступный для связей контента с контентом
- Доработана настройка связей между пользователями и контентом:
Zion WebEngine Доступы/Пользователи Контент/Контентные единицы Связи Элементы Как редактировать Контент?
Zion WebEngine 24.03.20
- Доработан элемент
Однострочное поле
(спасибо GL Technology):- Создан новый плагин
stringfield_Replace
, позволяющий в указанной строке заменять одну подстроку на другую
- Создан новый плагин
Zion Catalog Однострочное поле Плагины Поиск текста Элементы Что такое Плагины?
Zion WebEngine 24.03.19
- Доработан элемент
Связи
(спасибо MasterProfi):- Устранены недочёты при автоматической корректировке таблиц данных
Zion WebEngine База данных/Таблицы данных Связи Элементы Что такое Элементы?
Zion WebEngine 24.03.18
- Доработаны элемент
Связи
, класс для управления пользователями и административные JS-скрипты (спасибо MasterProfi):- Доработана настройка связей между пользователями и контентом:
- Внешне настройка существующих связей и связей с контентом определённого типа уже выглядит также, как настройка связей контента с контентом:
- Некоторые возможности будут внедрены в ближайших обновлениях
- Внешне настройка существующих связей и связей с контентом определённого типа уже выглядит также, как настройка связей контента с контентом:
- Доработана настройка связей между пользователями и контентом:
Zion WebEngine Доступы/Пользователи Классы Контент/Контентные единицы Обновления CMS Связи Элементы Что такое Тип контента?
Zion WebEngine 24.03.14
- Доработаны элемент
Связи
и административные JS-скрипты (спасибо MasterProfi):- Реализована тонкая настройка связей между пользователями и контентом:
- Настройка делается для каждой группы пользователей отдельно
- Теперь здесь доступны все те же настройки, что и в случае связей контента с контентом:
- Некоторые возможности будут внедрены в ближайших обновлениях
- Реализована тонкая настройка связей между пользователями и контентом:
Zion WebEngine Доступ Групп пользователей Доступы/Пользователи Контент/Контентные единицы Обновления CMS Связи Элементы Что такое Контент?
Zion WebEngine 24.03.04
- Доработан класс для управления импортом данных о товарах из 1С/XML (спасибо Moto-Retail18):
- За счёт оптимизации уменьшено количество обращений к базе данных
Zion Import XML/RSS/1С/YML Импорт/Экспорт Классы Сайт-каталог Как импортировать данные о товарах из XML
Zion WebEngine 24.02.12
- Доработаны класс для управления шаблонами и монитор очистки после обновления CMS (спасибо Энерго-Профи):
- Теперь при обновлении CMS и при открытии на редактирование любого из шаблонов в таблице данных шаблонов автоматически будут созданы все недостающие столбцы, необходимые для работы элементов
Zion WebEngine База данных/Таблицы данных Классы Мониторинг Обновления CMS Связи Шаблоны контента Элементы Что такое Шаблон контента?
Zion WebEngine 24.02.07
- Доработаны элемент
Связи
и административные JS-скрипты (спасибо ТК Кило):- Удалён устаревший, более не использующийся функционал
Zion WebEngine 24.02.01
- Доработан класс для управления контентом:
- Устранены недочёты в некоторых формах для пользователей по умолчанию
Zion WebEngine Классы Контент/Контентные единицы Формы для пользователей Как редактировать Контент?
Zion WebEngine 24.01.29
- Доработан элемент
Связи
(спасибо MasterProfi):- Добавлено несколько методов, упрощающих работу со связями между пользователями и контентом
Zion WebEngine Доступы/Пользователи Контент/Контентные единицы Связи Элементы Что такое Элементы?
Zion WebEngine 24.01.24
- Доработан класс для управления пользователями (спасибо MasterProfi):
- Устранены проблемы с отображением нестандартных свойств пользователей
Zion WebEngine Что такое Свойства? Доступы/Пользователи Классы Свойства
Zion WebEngine 24.01.23
- Доработан класс для управления пользователями (спасибо MasterProfi):
- Теперь доступен просмотр даты регистрации пользователя (при наличии в комплекте поставки пакета
Zion User Control
)
- Теперь доступен просмотр даты регистрации пользователя (при наличии в комплекте поставки пакета
- Доработаны драйвер облочки и элементы
Адрес
иМесто в структуре
(спасибо Портал поддержки):- Расширился список символов, которые могут быть написаны в команде вызова плагина
- Устранены проблемы с очисткой кэша при определении ЧПУ-адреса веб-страниц
Zion WebEngine Адрес (URL)/ЧПУ/Переадресация Дата/Время/TimeMashine Доступы/Пользователи Драйверы Классы Кодировки/Наборы символов Кэш/Кеш Место в структуре Плагины Элементы Что такое Плагины?
Zion WebEngine 24.01.19
- Доработан плагин универсального меню (спасибо ТК Кило):
- Теперь если для параметра
select
(что выбрать) указаны значенияlinked
(связанные записи) илиbacklinks
(обратные связи), то для параметраsort
(сортировка) становятся доступны только следующие варианты:id
- ID связиfromid
- ID связывающейся записиtoid
- ID связываемой записиreason
- причина связиinfo
- информация о связиprice
- цена связиdescription
- описание связи
- Теперь если для параметра
Zion WebEngine Меню/Списки/Навигация Плагины Связи Плагин Menu
Zion WebEngine 24.01.17
- Доработан элемент
Связи
(спасибо MasterProfi):- Теперь при подсчёте количества связей пользователя с контентом, можно указать типы:
- Можно указать несколько типов через запятую, чтобы подсчитать количество связей с контентом только этих типов
- Без указания хотя бы одного типа будет подсчитано количество всех связей указанного пользователя с контентом (как и раньше)
- Теперь при подсчёте количества связей пользователя с контентом, можно указать типы:
Zion WebEngine Доступы/Пользователи Контент/Контентные единицы Связи Типы Элементы Что такое Контент?
Zion WebEngine 24.01.16
- Доработан класс для управления базой данных (спасибо МедИнвест):
- Теперь при использовании кнопки
Переместить в указанное место
для контента будут отображаться только записи с тем же местом в структуре, что и у перемещаемой записи:- Так перемещение будет работать быстрее, а отсутствие "лишних" записей в списке избавит от путаницы
- В других списках в административном интерфейсе перемещение работает, как прежде
- Теперь при использовании кнопки
Zion WebEngine Административный интерфейс База данных/Таблицы данных Классы Контент/Контентные единицы Место в структуре Элемент "Место в структуре"
Zion WebEngine 24.01.12
- Доработаны система мониторинга SEO-оптимизации и элемент
Место в структуре
(спасибо ZS Москва):- Устранены проблемы при формировании огромных файлов
sitemap.xml
- Устранены проблемы при формировании огромных файлов
Zion WebEngine Zion SEO Booster SEO-параметры XML/RSS/1С/YML Место в структуре Мониторинг Элементы Как оптимизировать сайт под поисковые системы?
Zion WebEngine 24.01.12
- Доработано меню администратора для пакета
Zion Export
:- Скорректировано описание возможностей пакета
- Скорректированы названия пунктов меню
Zion Export Что такое Меню администратора? Импорт/Экспорт Меню администратора
Zion WebEngine 24.01.03
- Доработан класс для управления проектом:
- Внедрены новые стандарты CMS
Zion WebEngine 23.12.26
- Доработан класс для управления экспортом данных в YML (спасибо Moto-Retail18):
- Учтены новые требования к кодировке от Яндекс.Маркет
- Реализована обработка спецсимволов, недопустимых в Товарах сообществ VK.com
Zion Export XML/RSS/1С/YML Импорт/Экспорт Классы Кодировки/Наборы символов Что такое Классы?
© 2005-2024 Все права защищены | Поддержку осуществляет веб-студия #webZion