Собственный 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>