Перейти к содержимому
Открыть в приложении

Удобный способ просмотра. Узнать больше.

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

Полноэкранное приложение на главном экране с push-уведомлениями, медалями и многим другим.

Чтобы установить это приложение на iOS и iPadOS
  1. Нажмите иконку «Поделиться» в Safari
  2. Прокрутите меню и нажмите На экран «Домой».
  3. Нажмите Добавить в правом верхнем углу.
Чтобы установить это приложение на Android
  1. Нажмите меню из трёх точек (⋮) в правом верхнем углу браузера.
  2. Нажмите Добавить на главный экран или Установить приложение.
  3. Подтвердите, нажав Установить.
Русский язык для Invision Community 5

Организация фотоконкурса на базе Галереи 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

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

Аккаунт

Навигация

Поиск

Поиск

Настроить push-уведомления браузера

Chrome (Android)
  1. Нажмите на иконку замка рядом с адресной строкой.
  2. Нажмите Права доступа -> Уведомления.
  3. Измените свои настройки.
Chrome (компьютер)
  1. Нажмите на иконку замка в адресной строке.
  2. Выберите Настройки сайта.
  3. Найдите Уведомления и измените свои настройки.