Модератор форума: Yuri_G |
Сообщество uCoz Мастерская uCoz Дизайн: управление шаблонами Условные операторы и системные коды (Особенности использования и интересные решения) |
Условные операторы и системные коды |
Условные операторы от новичка до профи
Если вы совершенно не понимаете, как работают условные операторы, и информации в панели управления для вас мало, то я попробую вам объяснить. Самое главное, чтобы вы настроились на то, что это очень просто. Так оно и есть! И так, начну с понятий. Условные операторы - это специальные коды-символы, которые могут выполнять какие-то сценарии. Вы можете создать совершенно новую опцию на своём сайте, которая собственно не предусмотрена панелью. Для начала нужно понять и привыкнуть к составляющим частям самого кода сценария, а это: Код <?if($код$)?> - это какое-то условие (код), которое говорит оператору с кем мы имеем дело и с чем работать. Заменяем мысленно фразой «Если есть»; Код <?else?>- это оператор которое выполнит то, что вы скажете, когда условие не соответствует названным. Мысленно заменяем фразой «Если нет»; Код <?endif?> - это конец условного оператора, мысленно заменяем «Конец»; Теперь разберем простой пример, который приводится в панели управления: (Из редактора страниц) Код <?if($USER_LOGGED_IN$)?>Hello, $USERNAME$<?else?>You are GUEST. Please register.<?endif?> Что это на нашем языке написано: «Если есть авторизированный пользователь, то «Привет его логину!», а если нет, «Привет Гостю!» и конец.» Почему? Откуда? Подробней! Что в данном коде использовалось: Мы оператору Код <?if($код$)?> Код $USER_LOGGED_IN$ Код <?if($USER_LOGGED_IN$)?> Получаем Код <?if($USER_LOGGED_IN$)?> Привет, $USERNAME$ <?else?> Привет Гость! Осталось закрыть всё это дело концовкой. Код <?if($USER_LOGGED_IN$)?> Привет, $USERNAME$<?else?>Привет Гость! <?endif?> Мы так же можем исключить Гостей совершенно и вывести информацию только зарегистрированным. Для этого просто не используем «Если нет». Получаем следующее: Код <?if($USER_LOGGED_IN$)?> Как хорошо, что вы зарегистрировались! <?endif?> То есть в данном случае фразу «Как хорошо, что вы зарегистрировались!» видят только те, кто вошёл под логином. Условием для работы операторов может быть любой код, который указан как работающий в каком-то модуле. В нашем случае (редактор страниц) могут примеры: Выход и вход: Код <?if($USER_LOGGED_IN$)?> <a href="$LOGOUT_LINK$">ВЫХОД</a> <?else?> <a href="$LOGIN_LINK$">ВХОД</a> <?endif?> Дни после регистрации: Код <?if($USER_LOGGED_IN$)?>Вы с нами уже$USER_REG_DAYS$ дней!<?else?>Пожалуйста, зарегистрируйтесь. <?endif?> И так далее. Условия для сценария можно изменить с помощью дополнительных возможностей, которые поддерживают операторы. Это знаки «=», «>», «<». При необходимости, приравненные разделяются вертикальной чертой. После знака, вы сообщаете оператору на кого направлен весь сценарий. Код <?if($код$='условие')?> Я это вижу <?else?> А вот я вижу это<?endif?> Или Код <?if($код$='условие')?> Самое главное, что я это вижу <?endif?> Пример: Код <?if($USER$='Дима')?> Дима, не забудь каждый день читать почту. <?endif?> То есть, на словах «Если есть логины вошедших и среди них есть Дима (='Дима'), то ему показать это…» То же самое касается групп, имён, пола, даты и всего что работает из кодов. Ещё примеры: Код <?if($USER$='Mike' or $USER$='Lola')?> Дима и Света, вот тайная ссылочка …. <?endif?> Группы: Код <?if($GROUP_ID$=3 or $GROUP_ID$=4)?>Модеры и Админы, все кликаем на рекламу тут… <?endif?> И т.д. Однако операторы могут работать друг в друге. Пример: Код <?if($USER_LOGGED_IN$)?> Привет $USER$! <?if($GROUP_ID$=3 || $GROUP_ID$=4)?> Не забываем кликать на рекламу!<?endif?><?else?>Пожалуйста, зарегистрируйтесь.<?endif?> Сценарий такой: «Если есть вошедшие, то Привет им, а если среди них есть Админы и Модеры, то добавить Кликаем на рекламу, если есть то кто не вошел, то просим зарегистрироваться и конец.» Самое главное хорошо подумать, как написать сценарий, какие для этого использовать коды и кому они будут направляться. Можно написать что угодно, что придет на ум. uCoz настолько гибкий, что мне иногда кажется, что он живой и создатели сами точно не знают сколько и чего будет работать. Ну всё есть! Самое главное подумайте. Теперь напоследок мини-инфо: Код * Сколько <?if($код$)?> столько и <?endif?> * <?else?> нужно, когда выводим инфу для тех, кто не соответствует условиям, в других случаях оно не нужно * Поддерживаются альтернативные условия or и and (||и [&&) * Поддерживается вложенность операторов * Поддерживается сравнение переменных друг с другом: <?if($VAR1$=$VAR2$)?> * При сравнении текст обязательно должен быть в кавычках: <?if($USER$='Mike') ?> Вопрос - ответ Цитата При создании новых страниц, закачанных через FTР, коды Код $SITE_NAME$, $LOGIN_LINK$, $LOGOUT_LINK$ Цитата Как сделать альтернативные условия, например для кода Код $GROUP_ID$ Код <?if($GROUP_ID$=5 or ($GROUP_ID$=4 and $USER$='Alex'))?>...<?endif?> Цитата Есть ли операторы, позволяющие пользователю видеть в списке категорий только те, в которые он имеет доступ? Цитата Код $GROUP_ID$ Цитата Есть код Код $USER_LOGGED_IN$ Код <?if(!$USER_LOGGED_IN$)?> |
подскажите как сделать чтобы скрипт не срабатывал если сайт просматривает админ, но оставался включенным для других пользователей? Код <?if($GROUP_ID$="4")?><?else?>скрипт<?endif?> Adguard - Рекламы не будет!
Сообщение отредактировал †Angel† - Воскресенье, 21 Июн 2015, 09:35:09
|
я так пробовал не получается всё равно срабатывает
вот сам скрипт <SCRIPT LANGUAGE="JavaScript"> function preventSelection(element){ var preventSelection = false; function addHandler(element, event, handler){ if (element.attachEvent) element.attachEvent('on' + event, handler); else if (element.addEventListener) element.addEventListener(event, handler, false); } function removeSelection(){ if (window.getSelection) { window.getSelection().removeAllRanges(); } else if (document.selection && document.selection.clear) document.selection.clear(); } function killCtrlA(event){ var event = event || window.event; var sender = event.target || event.srcElement; if (sender.tagName.match(/INPUT|TEXTAREA/i)) return; var key = event.keyCode || event.which; if (event.ctrlKey && key == 'A'.charCodeAt(0)) { removeSelection(); if (event.preventDefault) event.preventDefault(); else event.returnValue = false; } } addHandler(element, 'mousemove', function(){ if(preventSelection) removeSelection(); }); addHandler(element, 'mousedown', function(event){ var event = event || window.event; var sender = event.target || event.srcElement; preventSelection = !sender.tagName.match(/INPUT|TEXTAREA/i); }); addHandler(element, 'mouseup', function(){ if (preventSelection) removeSelection(); preventSelection = false; }); addHandler(element, 'keydown', killCtrlA); addHandler(element, 'keyup', killCtrlA); } preventSelection(document); document.ondragstart = test; document.onselectstart = test; document.oncontextmenu = test; function test() { return false } </SCRIPT> |
подскажите как сделать чтобы скрипт не срабатывал если сайт просматривает админ, но оставался включенным для других пользователей? <?if(GROUP_ID$=4)?> ??? <?endif?> Вот рабочий: Код <?if!($GROUP_ID$='4')?>код_не_будет_виден_админам<?endif?> Можно сделать и так: Код <?if($GROUP_ID$='4')?><?else?>код_не_будет_виден_админам<?endif?> Ну как-то так. ------------- Простите, не увидел что на новой странице ответы уже были добавлены. Ладно пусть висит WAV-LIBRARY.NET - Библиотека звуков. Бесплатные звуки, шумовые эффекты, сэмплы и музыка в WAV, MP3, OGG форматах.
Сообщение отредактировал vredniey-faktor - Воскресенье, 21 Июн 2015, 10:59:54
|
Переменная $GROUP_ID$ числового типа. Шаблонный язык uCoz построен на основе PHP, где могут быть проблемы в случае неявного сравнения данных разного типа.
Поэтому лучше использовать сравнение с числом: <?if ($GROUP_ID$ = 4) ?>администратор<?endif?> или <?if ($GROUP_ID$ != 4) ?>НЕадминистратор<?endif?> Дурман, что касается Вашего скрипта - его код в данном случае не важен - если Вы "обернете" этот скрипт в предложенный условный оператор, то на странице, которую будет просматривать администратор, этого кода вообще не будет - он будет "вырезан" еще на этапе формирования html-кода страницы на сервере uCoz. Сообщение отредактировал sch779 - Воскресенье, 21 Июн 2015, 13:25:00
|
А uCoz как-то определяет с какой аппаратуры зашел пользователь? К примеру, требуется убрать определенный блок для тех кто заходит с мобильных устройств, а для компьютеров оставить, хотел сделать это с помощью условных операторов основываясь на браузере, но не знаю, как обозначается тот или иной.
Подскажите, пожалуйста, как можно осуществить данное? |
К примеру, требуется убрать определенный блок для тех кто заходит с мобильных устройств, а для компьютеров оставить Код <?if($USER_AGENT_PDA$)?>Информация для пользователей мобильного телефона<?else?>Информация для пользователей ПК<?endif?> Adguard - Рекламы не будет!
|
Подскажите, пожалуйста, что нарушилось? Странные названия страниц товаров... скрин - https://yadi.sk/i/GHHqHjXkhzGc4
Вчера я добавила wishlist, во встроенном редакторе в каталогах (прошло хорошо) , а на страницах товара его было не видно , и после сохранения система ругнулась, что отсутствует $POWERED_BY$ (хотя я только вставила код $2WISHLIST$ в начале страницы и потом его удалила, а $POWERED_BY$ в конце наверное был... я его-то воткнула правильно? )) И как вернуть нормальные названия страниц? Когда встаешь курсором в адресную строку, ссылка нормальная.. Цитата Код <html><head> <meta http-equiv="content-type" content="text/html; charset=UTF-8"> <title><!--if($META_TITLE$)-->$META_TITLE$<!--else-->$ENTRY_TITLE$ - $MODULE_NAME$ - $SITE_NAME$<!--endif--></title> <?$META_DESCRIPTION$?> <link type="text/css" rel="StyleSheet" href="/_st/my.css"> </head> <body style="background-color:#d0f0c0; margin:0px; padding:0px;" > $ADMIN_BAR$ $GLOBAL_AHEADER$ <table cellpadding="0" cellspacing="0" border="0" width="100%" style="padding: 10px;"><tbody><tr><td width="100%" align="center"> <!-- <middle> --> <table border="0" cellpadding="0" cellspacing="0" width="100%"> <tbody><tr> <td valign="top" width="200"> $GLOBAL_CLEFTER$ </td> <td valign="top" style="padding:0px 10px 0px 10px;"> <table border="0" cellpadding="5" cellspacing="0" width="100%" style="border:1px solid #6DA104;"><tbody><tr><td style="background:#FFFFFF;"><!-- <body> --> <table border="0" cellpadding="0" cellspacing="0" width="100%"> <tbody><tr> <td style="white-space: nowrap;">$SHOP_PATH$</td> <?if($EDIT_ENTRY_LINK$)?><td align="right" style="white-space: nowrap;">[ <a href="$EDIT_ENTRY_LINK$"><!--<s4443>-->Редактировать товар<!--</s>--></a> ]</td><?endif?> </tr> </tbody></table> <table border="0" cellpadding="0" cellspacing="0" style="width:100%; margin-top:10px;"> <tbody><tr> <td><h1>$ENTRY_TITLE$</h1></td> <td align="right"><b style="font-size:14px; padding:0 10px;"><?if($PRICE_OLD$)?><s>$PRICE_OLD$</s> <span class="newprice">$PRICE$</span><?else?>$PRICE$<?endif?></b> $2BASKET_Q$</td> </tr></tbody></table> $OPTIONS$ <br><table border="0" cellpadding="0" cellspacing="0" style="width:100%; margin-top:10px;"> <tbody><tr valign="top"><td style="padding-right:10px; width:1%"> $IMGS_ARRAY_JS$ <script type="text/javascript"> function _bldCont(indx){ var bck=indx-1;var nxt=indx+1; if (bck<0){bck = allEntImgs$ID$.length-1;} if (nxt>=allEntImgs$ID$.length){nxt=0;} var imgs=''; if (allEntImgs$ID$.length>1){ for (var i=0;i<allEntImgs$ID$.length;i++){var img=i+1; if(allEntImgs$ID$[i][0].length<1){continue;} if (i==indx){imgs += '<b class="pgSwchA">'+img+'</b> ';} else {imgs += '<a class="pgSwch" href="javascript://" rel="nofollow" onclick="_bldCont('+i+');return false;">'+img+'</a> ';} } imgs = '<div align="center" style="padding:8px 0 5px 0;white-space:nowrap;overflow:auto;overflow-x:auto;overflow-y:hidden;"><a class="pgSwch" href="javascript://" rel="nofollow" onclick="_bldCont('+bck+');return false;">« Back</a> '+imgs+'<a class="pgSwch" href="javascript://" rel="nofollow" onclick="_bldCont('+nxt+');return false;">Next »</a> </div> ';} var hght = parseInt(allEntImgs$ID$[indx][2]); if ($.browser.msie) { hght += 28; }; _picsCont = '<div id="_prCont" style="position:relative;"><img border="0" src="' + allEntImgs$ID$[indx][0] + '"/>'+imgs+'</div>'; new _uWnd('wnd_prv', "Изображения товара", 10, 10, { waitimages:300000, autosizewidth:1, hideonresize:1, autosize:1, fadetype:1, closeonesc:1, align:'center', min:0, max:0, resize:1 }, _picsCont); } </script> <img src="$THUMB$" class="gphoto" onclick="_bldCont(this.getAttribute('idx'));" id="ipreview" idx="0" title="Кликните для увеличения изображения"> <?if($SMALL_1$)?> <img src="$SMALL$" class="gphoto" onclick="var el=getElementById('ipreview'); el.src='$THUMB$'; el.setAttribute('idx',0);"> <img src="$SMALL_1$" class="gphoto" onclick="var el=getElementById('ipreview'); el.src='$THUMB_1$'; el.setAttribute('idx',1);"> <?endif?> <?if($SMALL_2$)?><img src="$SMALL_2$" class="gphoto" onclick="var el=getElementById('ipreview'); el.src='$THUMB_2$'; el.setAttribute('idx',2);"><?endif?> <?if($SMALL_3$)?><img src="$SMALL_3$" class="gphoto" onclick="var el=getElementById('ipreview'); el.src='$THUMB_3$'; el.setAttribute('idx',3);"><?endif?> <?if($RATING$)?><div style="margin-bottom:10px;"><?$RSTARS$('30','/.s/img/stars/3/30.png','1','float')?><div style="font-size:10px; text-align:center;"><!--<s3119>-->Рейтинг<!--</s>-->: <b><span id="entRating$ID$">$RATING$</span></b>/<span id="entRated$ID$">$RATED$</span></div></div><?endif?> <?if($BUY_NOW$)?> <div align="center" class="goods-list"> <!--<s5454>Купить сейчас</s>--> <!--$BUY_NOW$--> </div> <?endif?> </td><td> <?if($MODER_PANEL$)?><div style="float:right">$MODER_PANEL$</div><?endif?> <?if($ART_NO$)?><div style="margin-bottom:10px;"><!--<s4749>-->Артикул<!--</s>-->: <b>$ART_NO$</b></div><?endif?> <?if($STOCK$)?><div style="margin-bottom:10px;"><!--<s4377>-->Наличие<!--</s>-->: <b>$STOCK$</b></div><?endif?> <?if($WARR$)?><div style="margin-bottom:10px;"><!--<s4376>-->Гарантия<!--</s>-->: <b>$WARR$</b></div><?endif?> <div style="text-align:justify;">$DESCRIPTION$</div> </td></tr> </tbody></table> <div style="margin-top: 10px; text-align:right;"><!--<s4417>-->Добавлен в каталог<!--</s>-->: $ADD_WDAY$, $ADD_DATE$</div> <?if($COM_IS_ACTIVE$)?> <?if($COM_CAN_READ$)?> <table border="0" cellpadding="0" cellspacing="0" width="100%"> <tbody><tr><td width="60%" height="25"><!--<s5183>-->Всего комментариев<!--</s>-->: <b>$COM_NUM_ENTRIES$</b></td><td align="right" height="25">$COM_PAGE_SELECTOR$</td></tr> <tr><td colspan="2">$COM_BODY$</td></tr> <tr><td colspan="2" align="center">$COM_PAGE_SELECTOR1$</td></tr> <tr><td colspan="2" height="10"></td></tr> </tbody></table> <?endif?> <?if($COM_CAN_ADD$)?> $COM_ADD_FORM$ <?else?> <?if($USER_LOGGED_IN$)?><?else?><div align="center" class="commReg"><!--<s5237>-->Добавлять комментарии могут только зарегистрированные пользователи.<!--</s>--><br />[ <a href="$REGISTER_LINK$"><!--<s3089>-->Регистрация<!--</s>--></a> | <a href="$LOGIN_LINK$"><!--<s3087>-->Вход<!--</s>--></a> ]</div><?endif?> <?endif?> <?endif?> <!-- </body> --></td></tr></tbody></table> </td> <td valign="top" width="200"> $GLOBAL_DRIGHTER$ <!-- --> <center><b>Ваша корзина</b></center> <br> $BASKET$ </td> </tr> </tbody></table> <!-- </middle> --> </td></tr></tbody></table> $GLOBAL_BFOOTER$</body></html> $POWERED_BY$ Служба поддержки отправила мне скрин http://screencast.com/t/N9UFkIEc5olS - у меня так же, а что нужно убрать или добавить - я не понимаю ) Добавлено (22 Июл 2015, 10:29:02) Добавлено (22 Июл 2015, 11:08:04) Сообщение отредактировал Kate_Ch - Среда, 22 Июл 2015, 10:07:06
|
Есть код:
$CAT_URL$-<?substr($CURRENT_PAGE$,28,-35)?> он выводит: http://сайт/dir/материал/4-22 где $CAT_URL$ http://сайт/dir/материал/4 - знак минус <?substr($CURRENT_PAGE$,28,-35)?> 22 Мне нужно эти операторы вложить в условие, чтобы получить http://сайт/dir/материал/4-22 Пробовал <?if($CAT_URL$-substr($CURRENT_PAGE$,28,-35))?> не то, оно отнимает <?ifsubstr($CAT_URL$-)substr($CURRENT_PAGE$,28,-35)?> и это не то... Никак не въеду как реализовать $REQUEST_URI$ не предлагать т.к. это условие и будет сравниваться с $REQUEST_URI$ Сообщение отредактировал Joolz - Четверг, 23 Июл 2015, 20:35:45
|
|
mailru, можно, в принципе, и через условные операторы, но, если я не ошибаясь, система сама добавляет к статусу классы
Код .statusOffline .statusOnline надо просто добавить в css Код .statusOnline {color: green;} .statusOffline {color: red;} Если надо, добавьте ещё стилей. Элегантный uCoz :)
|
NZT,
Насколько я знаю в последних версиях "Мелкие" выдают свои браузеры за другие, помнится где-то они твердили что их браузер поддерживает все современные теги и т.д. и т.п., поэтому им совсем не обязательно вообще указывать UserAgent или указывать, но не свой! |
|
| |||