Редактор темы

Ucoz Дополнительные поля ucoz: небольшой хак!

  • Автор темы Автор темы iCooLER
  • Дата начала Дата начала

iCooLER

Кодер
Регистрация
13 Сен 2016
Сообщения
390
Рейтинг реакций
239
Баллы
43
Возраст
31
1/3
Автор темы
Доброго времени суток!

Предисловие:

Как-то недавно речь зашла о дополнительных полях uCoz и кто-то или что-то дернул(о) меня за язык написать что-то типа мануала по данной теме. Решил не задерживать, так что читаем дальше!

Warning: Мой первый пост с мануалом! Я плохо у меню объяснять, так что не судите строго!

Способы сделать больше дополнительных полей на uCoz:
1.
Зайти в Панель сайта->[Модуль]->Настройка модуля. Далее включить все поля, что есть в модуле и постараться по максимум использовать их возможности.
2. В июне 2016 года uCoz помимо основных дополнительных полей добавил еще дополнительные поля. Для бесплатного тарифа их всего 3, однако если оплатить тариф, то получите больше дополнительных полей. Вот информация с официального блога uCoz:
  • Для сайтов, которые не имеют оплаченных пакетов услуг — до 3-х дополнительных полей.
  • Для сайтов, которые имеют оплаченные пакеты услуг — до 10-ти дополнительных полей.
  • Для сайтов, работающих по тарифу VIP — до 30-ти дополнительных полей.

3. Если вам все-же мало дополнительных полей, то следующий вариант — PHP скрипт. Надо оплатить поддержку PHP на сайта (входит в тарифы начиная с «Оптимального»). Насколько знаю, такой скрипт есть, либо его придется заказать.

Однако есть 4-й вариант:
Данный способ не самый лучший, зато бесплатный! 🙂 Суть проста: в описании материала через «редактор HTML кодов» вставляете комментированный текст, который на странице выводится не будет, зато JS запросто может его обработать, что мы и будет использовать в данном случае.

Минусы способа:
— Редактирование только через «редактор HTML кодов»
— Данные из таких доп.полей НЕ индексируются поисковиками.

Плюсы:
— Бесплатно, просто и быстро!
— Практически не ограниченное количество дополнительных полей!
— Не лишает возможности использовать полное/краткое в своих целях!

Приступим к установке:
1. Установим кусок JS кода на сайт.
HTML:
var text = $('#thefields').html(),
    fields = /[<-]{2}FIELDS([\s\S]*)\/FIELDS[->]{2}/gm.exec(text)[1];

$.each(fields.split("||"), function() {
    if(/\|/gm.exec(this)) {
        var value = this.split("|");
        $('#thefield_' + value[0].trim()).html(value[1].trim());
    }
});

$('*[id^=thefield_]').each(function(e) {
    if($(this).text().length < 1) {
        $('.' + $(this).attr('id')).remove();
    }
});

2. Заходим в Панель управления->[Модуль]->Управление дизайном->Полная страница материала, находим $MESSAGE$ и заменяем на:
HTML:
<span id="thefields">$MESSAGE$</span>

3. Выведем наши поля:
HTML:
<ul>
    <li class="thefield_name"><b>Название:</b> <span id="thefield_name"></span></li>
    <li class="thefield_altname"><b>Оригинальное название:</b> <span id="thefield_altname"></span></li>
    <li class="thefield_year"><b>Год:</b> <span id="thefield_year"></span></li>
    <li class="thefield_country"><b>Страна:</b> <span id="thefield_country"></span></li>
</ul>

Тут все просто: к примеру вы указали 2 поля: name и year. От кусок JS-скрипта вставит информацию поля name в элемент с id=thefield_name, а year аналогично в элемент с id=thefield_year. Однако, так как поля altname и country вы не указали, то скрипт уберет элемент с классом thefield_altname и thefield_country со страницы.

Короче: там где нужно вывести значение надо присвоить атрибут id = thefield_[названиеполя] . Если нужны скрыть определенный блок на странице, если поле не указано, то присваиваем ему class = thefield_[названиеполя]

Теперь будет использовать наши поля:

При добавлении материала нужно Полное описание материала перевести в режим Редактора HTML кодов, нижу снять галку Заменять переводы строк тегом <br>

Далее добавляем туда такой код:
HTML:
<!--FIELDS
названиеполя|значение||
названиеполя|значение||
названиеполя|значение
/FIELDS-->

Это за комментированный код, который не отображается на странице, но наш JS-скрипт возьмет из него данные. Название поля должно быть из английских букв и цифр, без пробелов!

Если все сделано правильно, а я нигде не накосячил в коде 🙂 — все должно работать.

Внимание: Это тестовая версия скрипта, который делался за пол часа. Возможно где-то это не сработает, так как модули отличаются друг от друга. Мне важно мнение, мысли, идеи и предложения. Если это будет актуально я сделаю полноценный скрипт, который будет работать везде, а с настройкой полей и их редактирование будет помогать визуальный интерфейс — никакого кода!

Тут типа живой пример:
http://9interi.3dn.ru/load/dota_2/teksturki/dark_viper_fioletovyj_vajper/177-1-0-596
Тем, кому интересно — песочница на CodePen: https://codepen.io/theCooLER/pen/gWjwmW

P.S:
Есть вот такой скрипт: http://webo4ka.ru/load/skripty_i_mo...telnye_polja_dlja_ljubykh_modulej/46-1-0-3629 Однако на мой взгляд он слишком замудрен и можно сделать лучше!
 
Возможно ли на модуле "Новости сайта", сделать краткое и полное описание, как на остальных модулях? На дополнительных полях есть ограничение на кол-во символов, можно ли его увеличить?
 
Автор темы
Возможно ли на модуле "Новости сайта", сделать краткое и полное описание, как на остальных модулях? На дополнительных полях есть ограничение на кол-во символов, можно ли его увеличить?

Ни один их пунктов не возможен(только если с применением PHP скриптов). Однако скрипт можно использовать и на модуле Новости.
 

Похожие темы Последние темы Популярные темы

Назад
Сверху