Архив - только для чтения
Сообщество uCoz » Архивариус » Архив » условные операторы и системные коды (архив 27.02.2011)
условные операторы и системные коды
STALKER-Z0NA
Сообщений: 7
Репутация: 6

Сообщение # 91 | 18:55:00
Всем добрый день.
Есть вопрос относительно раздела "Фотоальбомы". Я начал усовершенствовать свой раздел "Фотоальбомы", и столкнусля с проблемой. В этом разделе я планировал создать блок информации пользователя. Все бы хорошо, но не получилась одна вещь. Я хотел вывести строку, содержащюю информацию о том, сколько фотографий было добавлено пользователем. Использовал код: $_PHOTO_ENTRIES$. В профиле этот код работает отлично, но добавленый в разделе "Фотоальбомы" - он мёртв.
Посоветуйте код (работующий в р. "фотоальбомы" и не только) для вывода информации о том, сколько фотографий было добавлено "мной".
Вот скриншот:

Заранее спасибо) happy

Прикрепления: 0206550.jpg (21.1 Kb)
YuriT
Сообщений: 231
Репутация: 701
Уровень замечаний:

Сообщение # 92 | 21:14:41
Quote (STALKER-Z0NA)
Посоветуйте код (работующий в р. "фотоальбомы" и не только) для вывода информации о том, сколько фотографий было добавлено "мной".
Вот:
Code
Вами добавлено: <span id="nPhoto"></span> фото. ......   

<script>
$.get('/index/8', function(data) {
     var phN=parseInt($('a[href*="photo"] b',$(data)).html());
     $('#nPhoto').html(phN)
})
</script>

Здесь число фотографий сначала преобразуется из строки в число, чтобы при желании его можно было сначала проанализировать (и, к примеру, менять форму следующего за ним слова в выдаваемом тексте). Если это не требуется, то код можно еще упростить.
И, конечно, в профиле должно выводиться число материалов пользователя для фотоальбома.

Потеряшка - поиск потерянных и помощь бездомным животным в Питере
Сообщение отредактировал YuriT - Вторник, 19 Окт 2010, 21:15:22
sch779
Сообщений: 703
Репутация: 348

Сообщение # 93 | 03:58:37
Quote (YuriT)
$('a[href*="photo"] b',$(data)).html()

Извини, а зачем здесь $(data)?
У меня в подобном коде нормально работает просто data:
Code
$('a[href*="photo"] b',data).html()

Или я чего-то не учитываю?
YuriT
Сообщений: 231
Репутация: 701
Уровень замечаний:

Сообщение # 94 | 16:09:57
Quote (sch779)
Извини, а зачем здесь $(data)?
У меня в подобном коде нормально работает просто data:
Можно и так, здесь это не принципиально (просто если не указать $(), то этот оператор будет применен автоматически, по умолчанию)

Потеряшка - поиск потерянных и помощь бездомным животным в Питере
STALKER-Z0NA
Сообщений: 7
Репутация: 6

Сообщение # 95 | 17:45:18
Спасибо вам большое. Но при работе данного скрипта происходит проблема. Вместо числа отображается слово "NaN". Проверял на нескольких сайтах. Возможно в скрипте допущена ошибка? happy
YuriT
Сообщений: 231
Репутация: 701
Уровень замечаний:

Сообщение # 96 | 18:26:22
Quote (STALKER-Z0NA)
Спасибо вам большое. Но при работе данного скрипта происходит проблема. Вместо числа отображается слово "NaN". Проверял на нескольких сайтах. Возможно в скрипте допущена ошибка?

Это, наверное, для тех людей, у кого загруженных фотографий вообще нет. Для остальных у меня все работает нормально.

Попробуйте тогда заменить внутреннюю часть скрипта на такую:

Code
$.get('/index/8', function(data) {
      var ph=$('a[href*="photo"] b',$(data))
      $('#nPhoto').html(ph.length>0 ? ph.html() : '0')
})  

Потеряшка - поиск потерянных и помощь бездомным животным в Питере
STALKER-Z0NA
Сообщений: 7
Репутация: 6

Сообщение # 97 | 18:48:22
YuriT, Спасибо. Но проблема с подсчетом фотографий осталась. Теперь пишет, что "Вами добавлено: 0 фото". Хотя мною добавлено много фотографий.

Добавлено (20-Окт-2010, 18:48:22)
---------------------------------------------
Ладно. Буду разбираться =)
Есть ещё один вопросик...
Я создал информер для вывода 5 самых активных пользователей (кол. фотографий). Mak. 5 человек. Передомной стояла задача - в блоке "профиль" отображать рейтинг человека. Рейтинг зависит от места (в inf).
Например:
Человек 2-ой в списке, и на странице, в блоке "профиль" отображается 4-ре звезды.
Если человек 1-ый в списке - значит в блоке "профиль" отображается 5 звезд.
Что я сделал:
Я создал информер ($MYINF_20$) [ Пользователи · Материалы · Кол. фотографий.....]. Весь дизайн inf заменил на код "$USER_ID$$NUMBER$"
("$USER_ID$" - ID пользователя, занимающий "$NUMBER$" место)
В html добавил код:

Code

<?if($MYINF_20$=$USER_ID$1)?>★★★★★<?else?>
<?if($MYINF_20$=$USER_ID$2)?>★★★★<?else?>
<?if($MYINF_20$=$USER_ID$3)?>★★★<?else?>
<?if($MYI NF_20$=$USER_ID$4)?>★★<?else?>
<?if($MYINF_20$=$USER_ID$5)?>★<?else?>
<?endif?><?endif?><?endif?><?endif?><?endif?>

Но эта система почему то не работает. Что я сделал неправильно? sad

sch779
Сообщений: 703
Репутация: 348

Сообщение # 98 | 19:41:56
Quote (STALKER-Z0NA)
Что я сделал неправильно?

В профиле пользователя переменная $USER_ID$ принимает значение ид-кода текущего пользователя, кто просматривает сейчас эту страницу, а не ид-кода пользователя, чей профиль просматривают!
В твоем коде надо использовать $_USER_ID$
YuriT
Сообщений: 231
Репутация: 701
Уровень замечаний:

Сообщение # 99 | 20:17:31
Quote (STALKER-Z0NA)
проблема с подсчетом фотографий осталась. Теперь пишет, что "Вами добавлено: 0 фото". Хотя мною добавлено много фотографий.

А вообще-то на странице профиля выводится количество материалов пользователя? И браузер, случайно - не Опера версии младше 9.63 ? У Оперы есть проблемы с определением времени окончания подгрузки, так что в ней все скрипты такого типа могут работать неправильно.
В общем, по какой-то причине скрипт вообще не видит в профиле кусочка с числом фотографий. По какой - надо уже смотреть конкретно "по месту".

Потеряшка - поиск потерянных и помощь бездомным животным в Питере
sch779
Сообщений: 703
Репутация: 348

Сообщение # 100 | 01:15:26
STALKER-Z0NA, я что-то не совсем "вьехал" в твой код поределения кол-ва звездочек!
$MYINF_20$, если я правильно понял, возвращает список типа:
101
112
203
154
и т.д.

Поэтому условие ($MYINF_20$=$USER_ID$1), для пользователя с ID=20, будет сравнивать строку, в которой находится вышеуказанный список, с числами201,202,203,204,205.
По правилам при этом строка будет преобразована в число, и при преобразовании строки "101 112 203..." получим число 101!
Т.е. твой код производит сравнения числа 101 последовательно с числами 201,202,203,204,205!
И сработает он ТОЛЬКО В ОДНОМ СЛУЧАЕ - если пользователь занимает первое место в списке!

Так что, тебе нужно не просто сравнивать, а делать поиск числа "$USER_ID$n" в списке $MYINF_20$. Что-то типа:

Code
<?if(strpos($MYINF_20$,$USER_ID$1)> -1)?>★★★★★<?else?>  
<?if(strpos($MYINF_20$,$USER_ID$2) > -1)?>★★★★<?else?>  
<?if(strpos($MYINF_20$,$USER_ID$3) > -1)?>★★★<?else?>  
<?if(strpos($MYINF_20$,$USER_ID$4) > -1)?>★★<?else?>  
<?if(strpos($MYINF_20$,$USER_ID$5) > -1)?>★<?else?>  
<?endif?><?endif?><?endif?><?endif?><?endif?>

Правда, в этом случае может быть ложное срабатывание, если, к примеру, в списке есть пользователь 21 на любом месте и ID текущего пользователя = 2 - в этом случае первый-же оператор сравнения strpos('...213...',21) выдаст истину!
Что-бы обойти проблему посмотри несколькими страницами раньше ее решение.

Николай_Иванов
Сообщений: 67
Репутация: 5

Сообщение # 101 | 12:54:13
Можно ли с помощью условных операторов реализовать формулы? Например, А=В+С

www.SoftPresident.ru - интернет-магазин лицензионного программного обеспечения
Miss_Esq
Сообщений: 13859
Репутация: 4159
Уровень замечаний:

Сообщение # 102 | 13:23:11
Николай_Иванов, В панели управеления сайтом есть описание всех функций Условных Операторов . Управление дизайном , открыть шаблон страниц сайта например , внизу список системных кодов для этого шаблона и в конце ссылка [?] на HELP Условных операторов ...

Сообщение отредактировал Miss_Esq - Четверг, 21 Окт 2010, 13:45:19
sch779
Сообщений: 703
Репутация: 348

Сообщение # 103 | 15:16:54
Quote (Николай_Иванов)
Например, А=В+С

Увы, в данный момент язык шаблонов uCoz не позволяет создавать свои переменные. Поэтому ответ на Ваш вопрос будет - "частично возможно".
Т.е., можно писать формулы для вычисления и сразу-же использовать их результат для вставки в код страницы или в JS-коде, НО нельзя сохранять результат их вычисления в шаблонных переменных.
Таким образом, нельзя реализовать что-то типа:
Code
<? $B$ = 10+20 ?>
<? $C$ = 30*50 ?>
<? $A$ = $B$ + $C$ ?>

Но можно так:
Code
<script type="text/javascript">
var B = <? 10+20 ?>
var C = <? 30*50 ?>
var A = B + С
...
</script>
YuriT
Сообщений: 231
Репутация: 701
Уровень замечаний:

Сообщение # 104 | 17:24:57
Quote (sch779)
Но можно так:
Не, ну это уж совсем не интересно: уж если вставлять что-то в скрипт, то все вычисления проще прямо в скрипте и делать, благо возможностей у него значительно больше, чем у юкозовских выражений.

Потеряшка - поиск потерянных и помощь бездомным животным в Питере
Сообщение отредактировал YuriT - Четверг, 21 Окт 2010, 17:25:20
sch779
Сообщений: 703
Репутация: 348

Сообщение # 105 | 23:27:56
Ну, я имел в виду не такое простое использование!
К примеру, я таким образом, на основе IP-адреса пользователя, его ID-кода и временного штампа формирую в шаблоне ключ авторизации, который передаю в запросе на удаленный сервер и получаю от него некие данные, связанные с этим пользователем.
Т.е., если посмотреть в HTML-исходник сформированной страницы, то там виден только ключ, но никому не известен алгоритм его формирования!
Это, имхо, проще, чем использовать авторизацию средствами удаленного сервера и/или куки.

Было-бы вообще здорово, если-бы разработчики ввели в шаблоны возможность использования хотя-бы временных пользовательских переменных для хранения промежуточных результатов!
К примеру, из-за их отсутствия я долго бился над простой задачкой - выводить в случайном порядке четыре информера по фотоальбому! Так и не получилось - пришлось сделать просто их поочерёдный вывод каждую минуту:

Code
<?if((substr($TIME$,-2) % 4) = 0)?>$MYINF_1$<?else?>
<?if((substr($TIME$,-2) % 4) = 1)?>$MYINF_2$<?else?>
<?if((substr($TIME$,-2) % 4) = 2)?>$MYINF_3$<?else?>
<?if((substr($TIME$,-2) % 4) = 3)?>$MYINF_4$<?else?>
<?endif?><?endif?><?endif?><?endif?>

Хотя это далеко не то, что хотелось - запросто может получиться так, что пользователь будет обновлять страницу раз в 4 минуты и постоянно видеть один и тот-же информер!
Сообщество uCoz » Архивариус » Архив » условные операторы и системные коды (архив 27.02.2011)
Поиск: