Jump to content


Photo
- - - - -

Ограничение количества фото


Best Answer SOLO , 02 February 2014 - 00:21

Доброго времени суток! Да! здесь JS надо знать - сам читаю с нуля - ибо знания на уровне лабораторных работ...

По делу:

Идея в том что бы скрыть "Добавить еще Картинка" по достижению нужного количества фото...

Я выкрутился так (не судите строго):

1. Создаем файл \media\zoo\applications\jbuniversal\assets\js\jbzoo.[typename].js вот тут почему так надо...

    где [typename] - псевдоним типа

2. код:

jQuery(function ($) {
// глобальные переменные ****************************
var countphoto = 8; //необходимое количество фото

//***************************************************
//работа с фото**************************************
jQuery("#97c0dc83-b840-48af-992f-2294bcf0c474").children().mousemove(function () {
	countel = jQuery('.upload').size();
	// если изменялось показать
	jQuery('#countphoto').html('осталось= '+(countphoto - countel)+'   '); //просто вывод скока осталось
	
	if (countphoto <= jQuery('.upload').size()) {jQuery("#97c0dc83-b840-48af-992f-2294bcf0c474 > .add").hide('3000')} else {jQuery("#97c0dc83-b840-48af-992f-2294bcf0c474 > .add").show("slow")};

});
//***************************************************
});

где: #97c0dc83-b840-48af-992f-2294bcf0c474 id - элемента(в "Типы" -> "Редактировать поля" авто присваивается элементу "Element ID" )

       .upload - Класс блока div их количество и считаем

 

Работает в две стороны, т.е. если превысит - скрываем, если удалили например пару фото - показываем 

 

НО: подсчет работает по событию mousemove на элемент #97c0dc83-b840-48af-992f-2294bcf0c474

    

 

 

 

а если хочет больше - то оплатив.

       

  первое что пришло в голову:

Явно - пользователи которые оплатили будут классифицироваться, т.е. например принадлежать отдельной группе... например: paid, тогда в submission.php определяем группу вот тут описано пункт 2. Хм, тогда JS надо в submission.php вставлять, к сожалению механизма передачи переменной PHP в JS не знаю... и есть ли...

 

 

 

Есть ограничение на количевство символов например в текстовом блоке

Вот тут описано для определенного количества слов  - не сложно будет переделать на символы...

Go to the full post


  • This topic is locked This topic is locked
6 replies to this topic

#1 Andrey

Andrey
  • JBZoo User (rus)
  • User rate: 0
  • posts: 18
  • topics: 8

Posted 30 January 2014 - 14:50

Например пользователь подает материал в каталог недвижимости. Как ограничить что бы бесплатно мог подавать например 10 фоток, а если хочет больше - то оплатив.


  • 0

#2 Sliapy

Sliapy
  • JBZoo User (rus)
  • User rate: 50.6
  • posts: 6393
  • topics: 15

Posted 30 January 2014 - 15:34

Такого функционала нет и реализовать его "по-простому" не получится. Придется что-то дописывать своими силами либо обратиться в коммерческий раздел - http://forum.jbzoo.c...oznagrazhdenie/


  • 0
[color=#aa0000]Не забывайте нажимать кнопку "Вопрос Решён" под сообщением, которое решило Вашу проблему.[/color]

#3 Andrey

Andrey
  • Topic Starter
  • JBZoo User (rus)
  • User rate: 0
  • posts: 18
  • topics: 8

Posted 30 January 2014 - 19:48

Понятно. Есть ограничение на количевство символов например в текстовом блоке если делать два блока, один краткое описание и другой полное.


  • 0

#4 Sliapy

Sliapy
  • JBZoo User (rus)
  • User rate: 50.6
  • posts: 6393
  • topics: 15

Posted 30 January 2014 - 19:53

Не совсем понял, это вопрос?

 

Нет, в стандартных тестовых полях Zoo ограничения по кол-ву символов нет. Если нужно ограничить колв- вводимых символов при подаче материала, то существует множество готовых jquery плагинов, которые не сложно к этому прикрутить.


  • 0
[color=#aa0000]Не забывайте нажимать кнопку "Вопрос Решён" под сообщением, которое решило Вашу проблему.[/color]

#5 SOLO

SOLO
  • JBZoo User (rus)
  • User rate: 0.1
  • posts: 17
  • topics: 6

Posted 02 February 2014 - 00:21   Best Answer

Доброго времени суток! Да! здесь JS надо знать - сам читаю с нуля - ибо знания на уровне лабораторных работ...

По делу:

Идея в том что бы скрыть "Добавить еще Картинка" по достижению нужного количества фото...

Я выкрутился так (не судите строго):

1. Создаем файл \media\zoo\applications\jbuniversal\assets\js\jbzoo.[typename].js вот тут почему так надо...

    где [typename] - псевдоним типа

2. код:

jQuery(function ($) {
// глобальные переменные ****************************
var countphoto = 8; //необходимое количество фото

//***************************************************
//работа с фото**************************************
jQuery("#97c0dc83-b840-48af-992f-2294bcf0c474").children().mousemove(function () {
	countel = jQuery('.upload').size();
	// если изменялось показать
	jQuery('#countphoto').html('осталось= '+(countphoto - countel)+'   '); //просто вывод скока осталось
	
	if (countphoto <= jQuery('.upload').size()) {jQuery("#97c0dc83-b840-48af-992f-2294bcf0c474 > .add").hide('3000')} else {jQuery("#97c0dc83-b840-48af-992f-2294bcf0c474 > .add").show("slow")};

});
//***************************************************
});

где: #97c0dc83-b840-48af-992f-2294bcf0c474 id - элемента(в "Типы" -> "Редактировать поля" авто присваивается элементу "Element ID" )

       .upload - Класс блока div их количество и считаем

 

Работает в две стороны, т.е. если превысит - скрываем, если удалили например пару фото - показываем 

 

НО: подсчет работает по событию mousemove на элемент #97c0dc83-b840-48af-992f-2294bcf0c474

    

 

 

 

а если хочет больше - то оплатив.

       

  первое что пришло в голову:

Явно - пользователи которые оплатили будут классифицироваться, т.е. например принадлежать отдельной группе... например: paid, тогда в submission.php определяем группу вот тут описано пункт 2. Хм, тогда JS надо в submission.php вставлять, к сожалению механизма передачи переменной PHP в JS не знаю... и есть ли...

 

 

 

Есть ограничение на количевство символов например в текстовом блоке

Вот тут описано для определенного количества слов  - не сложно будет переделать на символы...


  • 1

#6 SOLO

SOLO
  • JBZoo User (rus)
  • User rate: 0.1
  • posts: 17
  • topics: 6

Posted 02 February 2014 - 00:34

Единственное JS работает на клиенте и обойти эту заплатку я думаю будет не сложно...


  • 0

#7 Sliapy

Sliapy
  • JBZoo User (rus)
  • User rate: 50.6
  • posts: 6393
  • topics: 15

Posted 03 February 2014 - 18:57

Вот тут описано для определенного количества слов  - не сложно будет переделать на символы...

 

Я думал, Вам нужно ограничение на ввод. Там описана обрезка при выводе. По символам ее можно сделать так:

 

<?php 
$desc = JString::trim(strip_tags($this->renderPosition('anons')));
$desc_new = substr($desc, 0, 320);
echo $desc_new.'...';
?>
Хм, тогда JS надо в submission.php вставлять, к сожалению механизма передачи переменной PHP в JS не знаю... и есть ли...

Механизма особого нет. Достаточно вывести js через PHP и переменную туда передать не составит труда. Например

var test = "test";
echo '<script>jQuery(alert("'.test.'"));</script>';
Единственное JS работает на клиенте и обойти эту заплатку я думаю будет не сложно...

Да, js - это костыль на скорую руку. Но без него придется довольно сильно переписывать компонент. 

 

 


Edited by Sliapy, 03 February 2014 - 19:01.

  • 0
[color=#aa0000]Не забывайте нажимать кнопку "Вопрос Решён" под сообщением, которое решило Вашу проблему.[/color]




Click to return to top of page in style!