Скрыть объявление
ВАШИ ПРАВА ОГРАНИЧЕНЫ!

Зарегистрируйтесь на форуме, чтобы стать полноценным участником сообщества!

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

Тема в разделе "Хаки Ucoz", создана пользователем iCooLER, 16 май 2017.

16.05.17 в 13:53
16.05.17 в 18:24
2
2.506
1
  1. TopicStarter Overlay
    iCooLER

    Кодер

    Регистрация:
    13 сен 2016
    Сообщения:
    390
    Лучших ответов:
    6
    Рейтинги:
    +318 / 12 / -0
    Доброго времени суток!

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

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

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

    Способы сделать больше дополнительных полей на uCoz:
    1.
    Зайти в Панель сайта->[Модуль]->Настройка модуля. Далее включить все поля, что есть в модуле и постараться по максимум использовать их возможности.
    2. В июне 2016 года uCoz помимо основных дополнительных полей добавил еще дополнительные поля. Для бесплатного тарифа их всего 3, однако если оплатить тариф, то получите больше дополнительных полей. Вот информация с официального блога uCoz:
    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 Однако на мой взгляд он слишком замудрен и можно сделать лучше!
     
    • Нравится Нравится x 1
  2. Садияр

    Садияр Бывалый

    Регистрация:
    28 июл 2015
    Сообщения:
    193
    Лучших ответов:
    0
    Рейтинги:
    +10 / 1 / -0
    Возможно ли на модуле "Новости сайта", сделать краткое и полное описание, как на остальных модулях? На дополнительных полях есть ограничение на кол-во символов, можно ли его увеличить?
     
  3. TopicStarter Overlay
    iCooLER

    Кодер

    Регистрация:
    13 сен 2016
    Сообщения:
    390
    Лучших ответов:
    6
    Рейтинги:
    +318 / 12 / -0
    Ни один их пунктов не возможен(только если с применением PHP скриптов). Однако скрипт можно использовать и на модуле Новости.
     
Яндекс.Метрика