Условные операторы в шаблоне: "вид материала"

Вопросы и решения по операторам и системным кодам uCoz

Условные операторы в шаблоне: "вид материала"

» » Сообщение:

Здравствуйте, вообщем:
у меня в модуле "Доска объявлений" есть 112 материалов где в 60 материалах в поле $OTHER3$ написано Число "12 000" а в остальных 52 (материала) написано число "15 000"
и вот я для каждой группы пользователя сделал свой вид материала, но для одной группы я поставил условный оператор вот такой: <?if($OTHER3$="15 000")?> в итоге если заходишь под этой группой появляются только те материалы где $OTHER3$ = 15 000!
ПРОБЛЕМА:
в том что у меня стоит вывод материалов 50 на одной странице.
а когда я захожу под "специальной группой" на одной странице появляются 10 - 15 материалов, а хотя должно быть 50
как можно это исправить?!)


Re: Условные операторы в шаблоне: "вид материала"

Admin » » Сообщение:

Василий

Василий писал(а) › 25.05.2015, 08:18:а когда я захожу под "специальной группой" на одной странице появляются 10 - 15 материалов, а хотя должно быть 50
как можно это исправить?!

Дело в том, что на юкоз фиксированный вывод материалов на одной странице, определяемый вами в настройках и никак не зависимый от ваших локальных условий, типа:

Код: Выделить всё Развернуть
<?if($OTHER3$="15 000")?> выводим материал <?endif?>

..
При таком условии получается: сервер, как и указано в настройках, отдает 50 материалов, а потом ваше условие выбирает из них те, в которых поле OTHER3 == 15 000, и уже выбранное выводится.

Василий писал(а) › 25.05.2015, 08:18:как можно это исправить?!)

Только скриптом - подгружать недостающие материалы со следующих страниц - страницы 2, 3 и т.д., пока не наберется 50.
Естественно, этот вариант, чреват баном по кол-ву get-запросов.
Сгладить можно, выполняя их через тайм-аут, но при большой посещаемости ресурса .. все равно возможен бан.

Похожий скрипт есть тут: Как подгрузить новости сайта, при наличии скрытых ... оверяет кол-во новостей и подгружает при недоборе) , но требует доработки.



Re: Условные операторы в шаблоне: "вид материала"

Василий » » Сообщение:

Код: Выделить всё Развернуть
<?if($PAGE_ID$='archive')?>
<script type="text/javascript">
$(function(){
/*Start DocumentReady*/
var a=6; /* Количество новостей в архиве */
var b=$('#allEntries div[id^=entryID]').length;
if(a<=b){return}else if(b==0){$('#allEntries').html('<center><img src="/.s/img/wd/1/[anchor=http://likbezz.ru/viewtopic.php?t=1569|Как вывести форму добавления комментария в AJAX-окне?]ajax[/anchor].gif" width="31" height="31" /></center>')};
var n=a-b,nw='';
$.get('/news/2',function(d){
for(i=0;i<n;i++){
nw+=$('#allEntries div[id^=entryID]:eq('+i+')',d).html();
};
if(b){$('#allEntries div[id^=entryID]:last').after(nw)}else{$('#allEntries').html(nw)}
});
/*End DocumentReady*/
});
</script>
<?endif?>

Мне нужно сделать для модуля доска объявлений, что тут нужно изменить?! и куда вставить тоже в шаблон на главную страницу модуля?


Re: Условные операторы в шаблоне: "вид материала"

Admin » » Сообщение:

Василий

Василий писал(а) › 25.05.2015, 12:56:И какая вероятность того что забанят?

При пятидесяти материалах .. без тайм-аута (как в скрипте по ссылке выше) достаточно большая.
С тайм-аутом - в зависимости от величины паузы - больше секунды - практически нулевая.
Кроме того, можно использовать тайм-аут + подгрузка при прокрутке (как в OK) дабы лишний раз не делать запрос.

Готового, кроме как давнишней разработки (для модуля новости, без тайм аута и только для главной) нет.

Василий писал(а) › 25.05.2015, 13:41:Мне нужно сделать для модуля доска объявлений, что тут нужно изменить?!

Достаточно много.
Во первых, определить на какой странице находится пользователь.
Затем определить существует ли следующая страница.
И, если материалов не хватает, сделать запрос на следующую страницу по адресу: текущее местонахождение пользователя + если на главной, то «?page2», если на другой, то - «текущее местонахождение+1», при условии, что страница существует.
Затем снова проверить кол-во материалов, если снова недобор, то повторить ..

Короче, много переделывать.

Василий писал(а) › 25.05.2015, 13:41:и куда вставить тоже в шаблон на главную страницу модуля?

- в шаблоны тех страниц, где должна работать функция, обычно, в шаблоны главной, категорий и разделов, если есть, так же и страницу рейтинга, если нужно.

Могу написать скрипт с тайм аутом загрузки за 3000 р.
С тайм-аутом и подгрузкой при прокрутке за 6000 р.



Re: Условные операторы в шаблоне: "вид материала"

Admin » » Сообщение:

Василий писал(а) › 25.05.2015, 13:41:Мне нужно сделать для модуля доска объявлений, что тут нужно изменить?!

В данном коде, вот так:

Код: Выделить всё Развернуть
<?if($PAGE_ID$='main')?>
<script type="text/javascript">
$(function(){
/*Start DocumentReady*/
var a=6; /* Количество новостей в архиве */
var b=$('#allEntries div[id^=entryID]').length;
if(a<=b){return}else if(b==0){$('#allEntries').html('<center><img src="/.s/img/wd/1/[anchor=http://likbezz.ru/viewtopic.php?t=1569|Как вывести форму добавления комментария в AJAX-окне?]ajax[/anchor].gif" width="31" height="31" /></center>')};
var n=a-b,nw='';
$.get('/board/?page2',function(d){
for(i=0;i<n;i++){
nw+=$('#allEntries div[id^=entryID]:eq('+i+')',d).html();
};
if(b){$('#allEntries div[id^=entryID]:last').after(nw)}else{$('#allEntries').html(nw)}
});
/*End DocumentReady*/
});
</script>
<?endif?>

Неплохо было бы и проверить наличие элемента в ответе, как и сам ответ:

Код: Выделить всё Развернуть
$.get('/board/?page2',function(d){
if(d){
   var els=$('#allEntries div[id^=entryID]',d);
   for(i=0;i<n;i++){
      var e=els.eq(i).html();
      if(e){nw+=e;}
   };
if(b){$('#allEntries div[id^=entryID]:last').after(nw)}else{$('#allEntries').html(nw)}
}
});

..



Re: Условные операторы в шаблоне: "вид материала"

Admin » » Сообщение:

Kzander писал(а) › 17.08.2017, 22:44:а сколько сейчас на юкозе можно гет запросов делать? Раньше помню когда выводил гет запрос из профиля в форум, то сайт блокировался из-за большого кол-ва запросов.

Ничего не изменилось. При превышении лимита, сайт блокируется и сейчас.
Примерная разрешенная частота запросов - 3-5 в секунду.





Похожие темыКомментарии ПросмотрыПоследнее сообщение
0969Операторы шаблонов и системные коды...
Сообщение от: Admin
01055Операторы шаблонов и системные коды...
Сообщение от: Admin
02094Операторы шаблонов и системные коды...
Сообщение от: Admin
0961Операторы шаблонов и системные коды...
Сообщение от: Admin
01442Операторы шаблонов и системные коды...
Сообщение от: Admin