Jump to content
Дизайн и модификация IPS Community IPBSkinsBETA
Search In
  • More options...
Find results that contain...
Find results in...
Sign in to follow this  
Petros

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

Recommended Posts

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

 

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]

Edited by Petros

Share this post


Link to post
Share on other sites

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

 

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

 

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

Share this post


Link to post
Share on other sites

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

 

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

 

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

 

 

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

Share this post


Link to post
Share on other sites

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

Ну я сам так назвал показатель, исходя из того, что он рассчитывается так: сумма всех оценок ($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>

Share this post


Link to post
Share on other sites

<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>

 

 

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

 

Спасибо!

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites

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

  • Upvote 1

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

 

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

 

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

 

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

 

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

 

Где 123 - ваш id.

  • Upvote 1

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

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

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

  • Upvote 1

Share this post


Link to post
Share on other sites

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

 

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

 

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

 

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

  • Upvote 1

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...