Собственный JS-скрипт на вашей странице и примеры настройки

Последнее изменение:


Доступно в тарифных планах: Универсальный

Если вы хотите запустить какой-либо скрипт JS на своей странице, вы можете добавить его в настройках проекта - Портал -> Шаблоны -> Head (JS). Пример:

<script>
alert('test');
</script>

Иногда вам нужно запустить скрипт, когда страница готова. У нас есть специальный массив методов (initqueue), которые мы запускаем, когда страница готова. Просто добавьте свой метод в этот массив.

<script>
initqueue.push(function(){
    // здесь ваш код
});
</script>

Вы можете использовать библиотеку JQuery, когда страница загружена!

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

uetopicpopuploaded - Загружено всплывающее окно темы

uesearchresultspanelloaded - Загружена панель результатов поиска

uetopiclistloaded - Загружен список тем (изменение страницы, изменение фильтра и т. д.) 

uesigninpopuploaded - Загружено всплывающее окно входа


Вот пример того, как добавить текст во всплывающее окно темы при его загрузке.

<script language="javascript">
initqueue.push(function(){
    $(window).on('uetopicpopuploaded', function () {
        $('#module_add_topic .modal-body').prepend('<div style="background-color: #ffdd99;padding:10px;margin-bottom:10px">Test message in the topic popup</div>');
    });
});
</script>


Еще один пример: предопределенный текст в поле описания, если поле пустое.

<script language="javascript">
initqueue.push(function(){
    $(window).on('uetopicpopuploaded', function () {
        var description_field = $('#module_add_topic .redactor-editor:first');
        if ( description_field.length > 0 &&  description_field.html()=='<p></p>'){
              var text = "<p>;text line 1
text line 2</p>";
               description_field.html(text);
        };
    });
});
</script>

Показать/скрыть определенные пользовательские поля по выбранной категории в форме темы

<script language="javascript">
// show/hide fields by selected category
function onCategorySelected(){
  var selected_category = this.value;
  // custom field ids to show/hide by category id
  var cf_by_cat_settings = {'64':[13,17],'81':[10,11,12,13]};
  for (var key in cf_by_cat_settings) {
    for (i = 0; i < cf_by_cat_settings[key].length; i++) { 
      // check if show or hide
      var show = (key == selected_category) || (selected_category in cf_by_cat_settings && cf_by_cat_settings[selected_category].indexOf(cf_by_cat_settings[key][i]) != -1);
      // show or hide
      $('form#id_topic_form #id_cf_'+cf_by_cat_settings[key][i]).closest('.form-group').toggle(show);
    }
  }
};
// add script to queue
initqueue.push(function(){
  // execute script on topic form loaded 
  $(window).on('uetopicpopuploaded', function () {
    var category_selector = $('form#id_topic_form select#id_category');
    // call method by 'change' event
    category_selector.on('change', onCategorySelected);
   // call default selected 
   category_selector.change();
  });
});
</script>

Изменить вид "Дополнительного поля URL" с заголовка и URL на кликабельный заголовок

<script language='javascript'>
function convertUrlCustomField(el){
      // replace text in the link with a custom field name
      $(el).find('.custom-field-value a').text($(el).find('.custom-field-name').text().slice(0,-1));
      $(el).find('.custom-field-name').remove();
}
  initqueue.push(function(){
    // convert already loaded custom fields on the page
    $('.custom-field-url').each(function(){ convertUrlCustomField(this);})
    // convert custom fields loadd in the user mini profile
    $('.ajax-popover').on('uepopoverloaded', function() {
        if ($(this).attr('data-popover-class') == 'mini-profile'){
            var popover = $(this).next();
            // double check if correct element      
            if (popover.hasClass('popover')){
                popover.find('.custom-field-url').each(function(){ convertUrlCustomField(this);})
            }
       };
   })
})
</script>


Эта статья была полезна для 18 людей. Эта статья помогла вам?