Вывод изображений доб. пользователем на персональную стр.
|
|
[1] bandjuk [17.09.2012, 19:48] |
Антон, нужен твой совет/помощь по скрипту. Требуется вывести на "Персональная страница пользователя" определённое количество изображений, добавленных пользователем в фотоальбом. Собственно с выводом проблем нет, действую по накатанной схеме : ПУ -- фотоальбом -- Страница рейтинга и поиска фотографий, лепим $BODY$ ИД:
Quote <span id="userFoto"> $BODY$ </span>
в шаблон "Персональная страница пользователя": Quote <span id="uFoto"> <script type="text/javascript"> $('#uFoto').load('http://fotki.ucoz.ua/photo/0-1-0-17-$_USER_ID$ #userFoto'); </script> </span>
выводит кол-во фотографий, выставленное в настройках модуля фотоальбом, только не пойму какая из 2-х настройка за это отвечает, но это и не важно! т.е. в моём случае выводит последних 12 добавленных мной изображений. Собственно вопрос - как скриптом ограничить вывод например до 3-х изображений?
Сообщение отредактировал bandjuk - Понедельник, 17.09.2012, 19:49 |
|
[2] likbezz [21.09.2012, 23:37] |
Собственно с выводом проблем нет, действую по накатанной схеме smile : Вот только ты не понимаешь одной простой вещи ... какждый такой скрипт - запрос. Сколько их у тебя уже? навскидку? два, три, больше? .... Делать нужно только один запрос, ведь получаются все данные, АБСОЛЮТНО все, включая титле страницы... и .. распихивать нужные элементы по странице. ... Это так, считай не в теме.
выводит кол-во фотографий, выставленное в настройках модуля фотоальбом, только не пойму какая из 2-х настройка за это отвечает, но это и не важно! По-моему, там какая-то стандартная установленная цифра и она не меняется. Насколько я знаю, конечно..
Собственно вопрос - как скриптом ограничить вывод например до 3-х изображений? Либо скриптом, либо ограничить блоком с фиксированными размерами. Как еще? только так Code <div id="uFoto"></div> <script type="text/javascript"> $.get('http://fotki.ucoz.ua/photo/0-1-0-17-$_USER_ID$',function(d){ if($('#userFoto img',d).length){ for(var i=3;--i>=0;){ $('#uFoto').append($('#userFoto img',d).eq(i)); } } }); </script>
И знаешь что, для тебя благотворительный лимит закончился. Номер моего счета на главной, в левом блоке. Там все счета актуальные. Не воспринимай как оскорбление. |
|
[3] chila [21.01.2013, 03:17] |
Интересное решение
<div id="uFoto"></div> <script type="text/javascript"> $.get('http://fotki.ucoz.ua/photo/0-1-0-17-$_USER_ID$',function(d){ if($('#userFoto img',d).length){ for(var i=3;--i>=0;){ $('#uFoto').append($('#userFoto img',d).eq(i)); } } }); </script>
но материал выводится в обратном порядке я-a, начиная с последних, которые найдет функция. Как сделать так, чтобы сначала выводились первые а-я. Спасибо.. |
|
[4] likbezz [21.01.2013, 07:45] |
chila, if($('#userFoto img',d).length){ for(var i=3;--i>=0;){ $('#uFoto').append($('#userFoto img',d).eq(i)); } } Если фоток меньше 3 будет ошибка. Тогда уж вот так: Код <div id="uFoto"></div> <script type="text/javascript"> $.get('http://fotki.ucoz.ua/photo/0-1-0-17-$_USER_ID$',function(d){ if($('#userFoto img',d).length){ var j=$('#userFoto img',d).length<3?$('#userFoto img',d).length:3; for(i=0;i<j;i++){ $('#uFoto').append($('#userFoto img',d).eq(i)); } } }); </script> |
|
[5] chila [21.01.2013, 12:04] |
Спасибо огромное, я убрал img и скрипт подтягивает весь блок с id - это именно то, что искал вторую неделю. Буду обращаться, вопросы по скриптам бывают частенько... дополнительный вопрос: как дописать что-то вроде такого: if(i==0) {result ='<div>код, если результат скрипта нулевой</div>' P.S. естественно не безвозмездно, что и сколько можешь в личку)) |
|
[6] likbezz [21.01.2013, 12:38] |
chila, как дописать что-то вроде такого: if(i==0) {result ='<div>код, если результат скрипта нулевой</div>' Код <div id="uFoto"></div> <script type="text/javascript"> $.get('http://fotki.ucoz.ua/photo/0-1-0-17-$_USER_ID$',function(d){ if($('#userFoto img',d).length){ var j=$('#userFoto img',d).length<3?$('#userFoto img',d).length:3; for(i=0;i<j;i++){ $('#uFoto').append($('#userFoto img',d).eq(i)); } }else{ $('#uFoto').html('<div>код, если результат скрипта нулевой</div>'); } }); </script> естественно не безвозмездно ) Если есть большое желание, вот мои реквизиты: Цитата (Info Реквизиты) WebMoney (кошелёк): R426443544810 Z120914141775 E305902557268 U399148405304 B258688647365
Яндекс деньги (№ счета): 41001660518076
Единый кошелек (№ счета): 181342928825@W1
QIWI Кошелек (№ счета): 9688596198 |
|
[7] chila [21.01.2013, 12:51] |
Спасибо, безвозмездность перевел! Добавлено (21.01.2013, 12:51) --------------------------------------------- Извини, чисто спортивное любопытство... Запрос $.get - загружает полностью указанную страницу и отбрасывает лишнее или ищет нужное и выводит? |
|
[8] likbezz [21.01.2013, 13:02] |
chila, Извини, чисто спортивное любопытство... Запрос $.get - загружает полностью указанную страницу и отбрасывает лишнее или ищет нужное и выводит? $.get(), $ajax(), $.load() - все это одно и то же, просто сокращенные версии и все они изначально загружают всю страницу, отдавая только только нужное. Если вы об этом, конечно. |
|
[9] chila [26.01.2013, 17:47] |
Спасибо еще раз, по скриптам теперь только к Вам) Добавлено (26.01.2013, 17:47) --------------------------------------------- Все же я считаю, что этот скрипт дает необоснованную дополнительную нагрузку, раз $.get(), $ajax(), $.load() загружают все страницу целиком. Есть ли способ, который не загружал бы все, а искал и выдавал то, что нужно... возможно что-то вроде find или другим способом. Есть варианты? Если это стоит дополнительного финансирования, рассмотрю. |
|
[10] likbezz [26.01.2013, 20:20] |
chila, Все же я считаю, что этот скрипт дает необоснованную дополнительную нагрузку, раз $.get(), $ajax(), $.load() загружают все страницу целиком Без сомнения. Кто-то говорил иначе?)
Есть ли способ, который не загружал бы все, а искал и выдавал то, что нужно. Нет, при помощи JavaScript нет такого способа.
возможно что-то вроде find или другим способом. А вот, чисто теоретически, .. как вы думаете, в чем денная: $.find() функция что-то ищет?
Что-бы что-то найти нужно это что-то получить, а страница - это единое целое. Единственное, что работает немного не так - это базы данных - там есть индексы. Все остальное, сначала получают все, а потому уже делают выборку.
Только очень сложные, связанные с запоминанием результата уже сделанного запроса, на определенное время, скажем на 6-12 часов.. И нормально реализовать это можно только с php. Остальное - это сложные костыли. Как вариант попроще - ссылки на изображения можно писать в куку и лакал сторадж. .. |
|
[11] chila [13.02.2013, 16:03] |
Есть незамысловатый скрипт: Код <script type="text/javascript"> if ($("#selector").find(".swchItem:contains('»')").text() == '»') { $("#selector").after('<br><div id="nextCont" style="display:block; text-align:center;"><div onclick="Conti.to();" class="buttonq" style="width: 100%;">Просмотреть еще...</div></div>'); }; Conti = { to:function(){ $("#nextCont").html('<div style="padding:4px"><img src="/img/loading.gif" border="0" /></div>'); nextik = $("#selector").find(".swchItem:contains('»')").attr('onclick').toString(); num = nextik.match(/\d/); $.get('адрес сайта/модуль/страница-'+num, function(next){ $("#contik").append( $("#contik", next).html() ); var $newItems = $(''); $('#portfolio-items').prepend( $newItems) .isotope( 'reloadItems' ).isotope({ sortBy: 'original-order' }); $("#selector").html( $("#selector", next).html() ); $("#nextCont").html('<div onclick="Conti.to();" class="buttonq" style="width: 100%;">Просмотреть еще...</div>'); if ($("#selector", next).find(".swchItem:contains('»')").html() == null) { $("#nextCont").fadeOut(); }; }); } } </script> Скрипт работает, это радует, но есть одно но - скрипт подтаскивает страницу с 'адрес сайта/модуль/страница-'+num, если дело доходит до фильтрации материалов, то страницу нужно подтаскивать не с 'адрес сайта/модуль/страница-'+num, а ...'адрес сайта/модуль/страница-'+num+'-6-0-0-21-14-13', или что-то вроде этого. Как такое можно реализовать/исправить... возможно, брать ссылку из вышеупомянутого ".swchItem:contains('»')" в $PAGE_SELECTOR$, в коде выглядит примерно так: Код <a class="swchItem" href="нужный нам адрес" onclick="spages('2','6');return false;"><span>»</span></a> Заранее спасибо! |
|
[12] likbezz [13.02.2013, 17:23] |
chila, но есть одно но - скрипт подтаскивает страницу с 'адрес сайта/модуль/страница-'+num Вот это добавьте в скрипт: $("#selector").after('<br><div id="nextCont" style="display:block; text-align:center;"><div onclick="Conti.to();return false;" class="buttonq" style="width: 100%;">Просмотреть еще...</div></div>'); нужное выделено синим. И не будет подскакивать.
если дело доходит до фильтрации материалов, то страницу нужно подтаскивать не с 'адрес сайта/модуль/страница-'+num, а ...'адрес сайта/модуль/страница-'+num+'-6-0-0-21-14-13', или что-то вроде этого. Как такое можно реализовать/исправить... возможно, брать ссылку из вышеупомянутого ".swchItem:contains('»')" в $PAGE_SELECTOR$, в коде выглядит примерно так: Исправить можно - переписать скрипт - нормально.. Ибо этот “уныл”.. И у меня, кстати, ссылка выглядит не так, а вот так: Цитата (Code) <a class="swchItem" href="http://likbezz.ru/load/converters/13-2-6" onclick="spages('2','6');return false;"><span>»</span></a> и зачем брать: .attr('onclick').toString(); и вытаскивать из него строку: num = nextik.match(/\d/); .. мне вообще непонятно.. когда там есть прямой адрес на страницу. Как с фильтрами, так и без: Цитата (Code) <a class="swchItem" href="http://likbezz.ru/news/2" onclick="spages('2');return false;"><span>»</span></a> ..Дауж.. |
|
[13] chila [13.02.2013, 17:42] |
и зачем брать: .attr('onclick').toString(); и вытаскивать из него строку: num = nextik.match(/\d/); .. мне вообще непонятно.. когда там есть прямой адрес на страницу. - Да, зачем... Тогда еще проще, как изменить скрипт, чтобы он брал адрес ссылки, которая находится в "»". А зачем проверка (с фильтрацией и без), если ссылка в "»" - будет правильная в любом случае... Вытаскивание номера страницы получается лишнее. За скрипт переведу немного wmz))
P.S. Вот этот код в скрипте - это мое хулиганство... просьба оставить, без него неправильно отображается подтянутая информация. Код var $newItems = $(''); $('#portfolio-items').prepend( $newItems) .isotope( 'reloadItems' ).isotope({ sortBy: 'original-order' });
Сообщение отредактировал chila - Среда, 13.02.2013, 17:50 |
|
[14] likbezz [13.02.2013, 17:50] |
chila, А зачем проверка (с фильтрацией и без), если ссылка в "»" - будет правильная в любом случае... Вот именно. Поправил уже - просто думал что в других модулях она может отсутствовать, проверил - везде есть.
Вытаскивание номера страницы получается лишнее. А находя ссылку по атрибуту contains: if ($("#selector").find(".swchItem:contains('»')").text() == '»') { да еще после этого проверяя есть ли в нем » ... ))) когда уже нашли.. )) ну ваапще ))
За скрипт переведу немного wmz)) Хорошо, ближе к ночи сделаю.. а лучше приходите утром) |
|
[15] chila [13.02.2013, 17:55] |
Где взял такой скрипт?) Случайно нашел, но сейчас уже не вспомню на каком именно сайте... Спасибо огромное, буду ждать. |
|