Перейти к публикации
View in the app

A better way to browse. Learn more.

Дизайн и модификация Invision Community

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

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

Опубликовано:

Доброго времени суток!

Порадовало приветственное сообщение, что все телепаты ушли в отпуск. Улыбнуло. :)

 

 

По теме. Решил организовать фото конкурс. Есть в галерее возможность оценки по пятибальной шкале для каждой фотографии. Но как общую статистику то смотреть? И как бы сделать так, чтобы в общем обзоре альбома, под каждой фоткой была финальная оценка на текущий момент? Чтобы не щелкать на каждую фотку, чтобы посмотреть оценку?

 

Альбом вот этот http://hunting-club.org/forum/index.php?/gallery/album/41-konkurs-fotografii-zhivotnii-mir-glazami-ohot/

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

Опубликовано:

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

 

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

 

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

 

 

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

 

Спасибо!

  • 3 месяца спустя...
Опубликовано:

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

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

Опубликовано:

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

Опубликовано:

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

Опубликовано:

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

 

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

 

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

 

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

 

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

 

Где 123 - ваш id.

Опубликовано:

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

Опубликовано:

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

Опубликовано:

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

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

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

Опубликовано:

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

 

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

 

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

 

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

Опубликовано:

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

  • 2 недели спустя...
Опубликовано:

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

  • 4 месяца спустя...
Опубликовано:

Всем привет. Хоиим на форуме тоже организовать фотоконкурс. Для этого создали отдельную категорию, а в ней альбом - подскажите как его сделать общим, чтобы пользователи могли в него добавлять фотографии.

Не могу разобраться, половина на русском половина на инглиш. версия 5.0.2

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

Сейчас на странице 0

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

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.