Архив - только для чтения |
Сообщество uCoz » Архивариус » Архив » условные операторы и системные коды (архив 27.02.2011) |
условные операторы и системные коды |
fflesh, спасибо, буду экспериментировать.
Добавлено (19-Ноя-2010, 22:32:28) Quote (fflesh) чтобы получить именно последнюю циферку Причём тут последняя циферка? $NUM_SHOWN$ выводит - (цитирую) - количество материалов на текущей странице. То есть "1-5", а точнее "1-12", "13-24", "25-36" и т.д. это не количество, а порядковые номера материалов на текущей странице. Quote (fflesh) <?substr($NUM_SHOWN$,strrpos($NUM_SHOWN$,'-')+1,-7)?> Это так, - свободный пример? Что будет на выходе? Иначе говоря, этот вот код, именно с этими операторами, КАКОЕ условие задаёт? Типа: если к числу после знака "-" прибавить единицу, (причём здесь "-7"?), то браузер увидит в ней конкретное число - число рваное порядковому номеру последнего материала страницы, соответственно, плюс единица? Так что ли? И ещё раз, причём здесь "-7"? Длина подстроки? |
Если первое число отнять от второго и прибавить 1, то получим кол-во материалов, которые выведены на данной странице.
Что касается кода, то он позволяет выделить второе число - правда, вместо -7 надо поставить положительное число 7 (т.е. будет вырезана подстрока длиной 7 символов или до конца исходной строки). А еще лучше - вообще ничего не ставить - в этом случае будет возвращена подстрока, начиная со следующего после "-" символа и до конца строки. Т.е., для получения кол-ва материалов на странице надо использовать код типа:
Code <? substr($NUM_SHOWN$,0,strrpos($NUM_SHOWN$,'-')) - substr($NUM_SHOWN$,strrpos($NUM_SHOWN$,'-')+1) + 1 ?> Сообщение отредактировал sch779 - Суббота, 20 Ноя 2010, 19:42:33
|
Quote (sch779) Т.е., для получения кол-ва материалов на странице надо использовать код типа: Code <? substr($NUM_SHOWN$,0,strrpos($NUM_SHOWN$,'-')) - substr($NUM_SHOWN$,strrpos($NUM_SHOWN$,'-')+1) + 1 ?> Вообще-то все гораздо сложнее, поскольку, как уже было указано выше, код $NUM_SHOWN$ содержит не только сами "циферки", ни еще и стилевую обвязку. В итоге, чтобы сделать подобный арифметический подсчет, придется городить жутко длинную конструкцию из комбинаций substr и strpos , затраты на написание и обработку которой вряд ли окупятся Потеряшка - поиск потерянных и помощь бездомным животным в Питере
Сообщение отредактировал YuriT - Понедельник, 22 Ноя 2010, 15:37:59
|
делаю так:
Code <?if($код$="1")?>$код$=="2"<?else?>$код$=="3"<?endif?> но в результате на экране появляется что то типа: Code 1==2 как правильно присваивать переменным значения и возможно ли это? Потихоньку изучаю Perl и php.
Russian Hacker's Portal Сообщение отредактировал CоNtRolleR - Вторник, 23 Ноя 2010, 04:20:44
|
Появился вопрос:
- как показать с помошью условных операторов определенный код на нужной странице (разделе, категории) - это понятно. А вот как сделать так, чтобы код, находящийся в глобальном блоке (расположенном на всех страницах сайта), выводился во всех разделах кроме одного конкретного. Иначе говоря, какой символ в условном операторе мог бы равнятся знаку "не равно". Создаете сайт питомника? Вам нужен для него домен? - "имя".питомники.рф - в подарок!!!
|
Quote (Sultanka) Иначе говоря, какой символ в условном операторе мог бы равнятся знаку "не равно". Символы != А теперь помогите мне пожалуйста. Как присваивать переменным значения? Потихоньку изучаю Perl и php.
Russian Hacker's Portal Сообщение отредактировал CоNtRolleR - Вторник, 23 Ноя 2010, 05:51:32
|
Quote Если код $код$ равен 1 ( $код$="1" ) вообще то правильно применять одинарные кавычки : ( $код$='1' ) отобразить это ( $код$=="2" ) если код не равен 1 отобразить это ( $код$=='3' ) Мне не нужны азы программирования. То что вы обьяснили мне и так известно. Quote вообще то правильно применять одинарные кавычки : ( $код$='1' ) Какие кавычки разницы особой нет. Если значение - цисло, то можно их вообще не использовать.. Quote ни о каком присвоении каких либо значений речи не идёт Очень жаль. Придётся использовать жабаскрипт или ещё что-то... Потихоньку изучаю Perl и php.
Russian Hacker's Portal |
Как в модуле доска объявлений на странице со списком материалов категории выводить разную информацию в зависимости от фильтра?
например при http://сайт/board/1-1-2-0-0-1-Х-Х вывести одну информацию а при http://сайт/board/1-1-2-0-0-2-Х-Х другую ну и второй вопрос, возможно дурацкий, но как повлияет большое количество <?if( около 100-150 при загрузке страницы на скорость работы сайта? |
Quote (rekrutua) Как в модуле доска объявлений на странице со списком материалов категории выводить разную информацию в зависимости от фильтра? Смотря для чего это нужно. Если для поисковиков (скажем, ставить на эти страницы разные тайтлы и дескрипшны) - то это действительно можно сделать только при помощи юкозовских операторов, и на данный момент делается это только крайне неприятными длиннющими выражениями (комбинации кучи substr и strpos либо для $FILTERx_MENU$, либо для кода формы "посоветовать другу", которая содержит URL текущей страницы). А если для показа людям - то тогда все гораздо проще. Тут уж можно анализировать и либо текущий URL, либо текущее значение контрола фильтра при помощи джаваскрипта, и соответственно скриптом же выводить (или подправлять) все, что требуется.
Quote (rekrutua) ну и второй вопрос, возможно дурацкий, но как повлияет большое количество <?if( около 100-150 при загрузке страницы на скорость работы сайта? Понятно, что повлияет отрицательно. А уж насколько отрицательно, можно будет увидеть только по результатам "практического эксперимента". Но в принципе - на странице с выборкой из 15-20 материалов и сложными шаблонами вида материалов (содержащими условные операторы) это должно сказаться не особо ошутимо, поскольку там серверу и без того работы хватает. PS: к слову, время генерации страницы сервером, насколько я понимаю, можно увидеть, если посмотреть в самый конец ее HTML-кода. Там стоит что-нибудь типа <!-- 0.20386 (s4) --> так вот первое число здесь, скорее всего, и есть время генерации страницы. Потеряшка - поиск потерянных и помощь бездомным животным в Питере
Сообщение отредактировал YuriT - Среда, 24 Ноя 2010, 17:57:57
|
rekrutua, если для людей - то джаваскриптом это можно сделать примерно так (считаем, что контрол соответствующего фильтра, а значит и название выбранной позиции фильтра, на странице доступно):
Code $FILTER1_MENU$ ..... <div id="text1"></div> <script> var divText=$('#text1') var filter=$('select[name="filter1"]').get(0) var filterValue=filter.options[filter.selectedIndex].text if(filterValue=="значение 1") divText.val('текст для значения 1') if(filterValue=="значение 2") divText.val('текст для значения 2') ...... </script> Ну, или в зависимости от того, насколько сильно различаются нужные тексты для разных значений фильтра, все это можно прооптимизировать. Например, загнать пары "значение фильтра - текст" в общий объект, и извлекать нужный текст одним оператором, или написать функцию, которая выдает по значению фильтра нужный текст. Но только поисковики видеть всего этого, конечно, уже не будут. Потеряшка - поиск потерянных и помощь бездомным животным в Питере
Сообщение отредактировал YuriT - Среда, 24 Ноя 2010, 20:44:07
|
Есть такой замечательный условный оператор: $ONLINE_USERS_LIST$
Как сделать так чтобы, если определенный пользователь авторизован на сайте (например admin), то тогда ВСЕ пользователи видят скрытую информацию? Пример: <?if($ONLINE_USERS_LIST$and $USER$="admin")?>видно<?else?>НЕ видно<?endif?> Не бойся когда один, бойся когда ноль...
|
joker7am, теоретически можно написать так:
<?if(strpos($ONLINE_USERS_LIST$,'>admin<')!=-1)?>видно<?endif?> Но только оно может не всегда правильно работать, поскольку функция strpos проверяет только первые 1000 символов, в код $ONLINE_USERS_LIST$ содержит кучу всякой всячины и может оказаться длиннее. Потеряшка - поиск потерянных и помощь бездомным животным в Питере
Сообщение отредактировал YuriT - Среда, 24 Ноя 2010, 22:31:22
|
| |||