Перейти к публикации
Дизайн и модификация IPS Community IPBSkinsBETA
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...
Petros

Организация фотоконкурса на базе Галереи 4.1.1 IPBoard 3.2.2

Рекомендованные сообщения

04/05/12 20:12 (изменено)

Все здорово, просто супер, все считает

 

http://hunting-club.org/forum/index.php?/gallery/album/41-konkurs-fotografii-zhivotnii-mir-glazami-ohot/

 

 

Но есть одно но!

 

 

Посыпался шалбон после добавления вот этого

 

 

{parse expression="sprintf("%01.2f",$image['ratings_total']/$image['ratings_count'])"}

 

 

В шапке появилось вот это

 

Warning: Division by zero in /var/www/www.hunting-club.org/forum/cache/skin_cache/cacheid_7/skin_gallery_albums.php on line 558 Warning: Division by zero in /var/www/www.hunting-club.org/forum/cache/skin_cache/cacheid_7/skin_gallery_albums.php on line 558 Warning: Division by zero in /var/www/www.hunting-club.org/forum/cache/skin_cache/cacheid_7/skin_gallery_albums.php on line 558 Warning: Division by zero in /var/www/www.hunting-club.org/forum/cache/skin_cache/cacheid_7/skin_gallery_albums.php on line 558 Warning: Division by zero in /var/www/www.hunting-club.org/forum/cache/skin_cache/cacheid_7/skin_gallery_albums.php on line 558 Warning: Division by zero in /var/www/www.hunting-club.org/forum/cache/skin_cache/cacheid_7/skin_gallery_albums.php on line 558 Warning: Division by zero in /var/www/www.hunting-club.org/forum/cache/skin_cache/cacheid_7/skin_gallery_albums.php on line 558 Warning: Division by zero in /var/www/www.hunting-club.org/forum/cache/skin_cache/cacheid_7/skin_gallery_albums.php on line 558club.org/forum/cache/skin_cache/cacheid_7/skin_gallery_albums.php on line 558[/code]

Изменено пользователем Petros

Поделиться сообщением


Ссылка на сообщение

Правильно, если никто не голосовал, то там - ноль. А на ноль делить нельзя.

 

Это нужно проверять:

 

{parse expression="($image['ratings_count'] > 0) ? sprintf("%01.2f",$image['ratings_total']/$image['ratings_count']) : 0"}

Поделиться сообщением


Ссылка на сообщение

Правильно, если никто не голосовал, то там - ноль. А на ноль делить нельзя.

 

Это нужно проверять:

 

{parse expression="($image['ratings_count'] > 0) ? sprintf("%01.2f",$image['ratings_total']/$image['ratings_count']) : 0"}

 

 

Вообще все фотки куда то исчезают в этом случае :(

Поделиться сообщением


Ссылка на сообщение

В галереи средний бал не есть среднее арифметическое. Там еще учитывается количество голосов. То есть за фотография с большим количеством голосов будет выше. По крайней мере так было раньше.

Ну я сам так назвал показатель, исходя из того, что он рассчитывается так: сумма всех оценок ($image['ratings_total']) / количество голосов ($image['ratings_count']).

Что касается дробной части, то в самом коде идет округление значения, а потом уже запись в БД. Поэтому правильно предложил Ritsuka заняться арифметическими действиями самим.


<br />
Общее число оценок: {parse expression="intval($image['ratings_count'])"} · Общая оценка: {parse expression="intval($image['ratings_total'])"}
<br />
Средний балл: <if test="$image['ratings_count'] > 0">
{parse expression="sprintf("%01.2f",$image['ratings_total']/$image['ratings_count'])"}
<else />
0
</if>

Либо такой вариант:

<br />
<if test="$image['ratings_count'] > 0">
Общее число оценок: {parse expression="intval($image['ratings_count'])"} · Общая оценка: {parse expression="intval($image['ratings_total'])"}
<br />
Средний балл: {parse expression="sprintf("%01.2f",$image['ratings_total']/$image['ratings_count'])"}
<else />
<strong>Фото без оценки</strong>
</if>

Поделиться сообщением


Ссылка на сообщение

<br />

Общее число оценок: {parse expression="intval($image['ratings_count'])"} · Общая оценка: {parse expression="intval($image['ratings_total'])"}

<br />

Средний балл: <if test="$image['ratings_count'] > 0">

{parse expression="sprintf("%01.2f",$image['ratings_total']/$image['ratings_count'])"}

<else />

0

</if>

 

 

Попробовал этот код- все работает.

 

Спасибо!

Поделиться сообщением


Ссылка на сообщение

P.S. Вижу, что у вас отдельный альбом под конкурс. Ну, тогда и страница отдельная не нужна, просто сделать специальный шаблон для этой страницы, чтобы на ней выводилась еще и оценка.

Здравствуйте. Очень заинтересовал этот момент. Если не затруднит, объясните как привязать свой шаблон к определенному альбому?

Поделиться сообщением


Ссылка на сообщение

Самый простой вариант - проверяйте в коде шаблона номер альбома через , и используйте два разных блока верстки на оба случая в одном шаблоне :)

  • Upvote 1

Поделиться сообщением


Ссылка на сообщение

Понятно. Действительно, вариант. А по-конкретней, как эта строка (<if>) должна выглядеть? В коде ну очень плохо разбираюсь.

Поделиться сообщением


Ссылка на сообщение

В шаблоне albumView в самом начале добавьте:

 

<if test="$album['album_id']==123">
...копия всего шаблона...
<else />
...оригинальный шаблон...
</if>

 

И правьте копию на свой вкус как угодно :)

 

Та же конструкция удобна для "боевой" отладки чего-либо.

 

<if test="$this->memberData['member_id']==123">
тестовый вариант оформления, виден вам
<else />
оригинальный шаблон для всех остальных
</if>

 

Где 123 - ваш id.

  • Upvote 1

Поделиться сообщением


Ссылка на сообщение

Огромный спасиб, @Ritsuka! Метод работает и на странице просмотра изображения.

Поделиться сообщением


Ссылка на сообщение

Вот незадача только. У меня конкурсные альбомы находятся в глобальном альбоме, т.е. суб-альбомы. Возможно задать id главного альбома, чтобы во всех суб-альбомах использовать свой шаблон? Или id каждого альбома прописывать? И можно ли прописать несколько id?

Поделиться сообщением


Ссылка на сообщение

И можно ли прописать несколько id?

<if test="in_array( $album['album_id'], array( 1,2,3 ) )">

1,2,3 - перечисление через запятую ID альбомов, для которых будет использоваться свой шаблон.

  • Upvote 1

Поделиться сообщением


Ссылка на сообщение

И там наверняка есть что-то вроде $album['parent_id'].

 

Проверьте содержимое массива $album таким кодом и посмотрите нужные вам поля:

 

<php> print_r($album); die; </php>

 

Потом просто уберите этот блок кода.

  • Upvote 1

Поделиться сообщением


Ссылка на сообщение

@newbie, @Ritsuka, спасибо большое. Оба варианта работают.

Поделиться сообщением


Ссылка на сообщение

Вот еще такой вопрос созрел, а как бы еще в сортировке изображений (в альбоме), сделать так чтобы популярные сортировались по общей сумме оценок а не по среднему баллу? Реально ли это?

Поделиться сообщением


Ссылка на сообщение

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

  • Сейчас на странице   0 пользователей

    Нет пользователей, просматривающих эту страницу.

×
×
  • Создать...