0 Пользователей и 1 Гость просматривают эту тему.
  • 177 Ответов
  • 17925 Просмотров
*

ua-ix

  • Осваиваюсь на форуме
  • 24
  • 0 / 0
Здравствуйте. Подскажите, пожалуйста, как решить вот какую проблему:
Имеется в каждом материале фото с различных журналов, на 1 странице получается около минимум 120-максимум 1000 фото. Чтобы они сразу не грузились - решил спрятать их под спойлер. Однако, картинки все равно сразу же грузятся, когда открывается страница.

Не подскажите, как можно сделать, чтобы при нажатии на кнопке "Спойлер 1" загружались 25 картинок, только из под этого спойлера? При нажатии на "Спойлер 2" загружались другие 25 картинок... и т.д. Я хочу, чтобы пользователю загружались только те картинки, которые расположены под определенным спойлером, а не грузились сразу 200-500 фото, и создавали бешеную нагрузку на сервери генерировали огромный трафик.


Заранее спасибо!
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
это называется AJAX.
в сети есть примеры решений подобных задач, но если не программер, то проще заказать в ветке "предлагаю работу".
*

Mihanja80

  • Завсегдатай
  • 1918
  • 168 / 4
  • Всю жизнь учусь...
effrit, вот сколько уже народу используют Joomla а реально "крутой" спойлер так никто и не реализовал...

Спойлер такой в действии наблюдал на рутрекере, функционально!
Я с мобильного, в основном...
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
Mihanja80, согласен полностью.
у beliyadm'a, в ветке с его разработкой по теме тоже спрашивали подобный функционал, но не стал делать. за теньге поди сделает )).
да и на JED не видел ничего подобного. сам не программер, js вообще не знаю, так что не возьмусь за такое.
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
На jQuery могу попробовать сделать, мутулзов не знаю. Нужен мамбот или что еще?
*

Mihanja80

  • Завсегдатай
  • 1918
  • 168 / 4
  • Всю жизнь учусь...
Arkadiy, посмотрите на рутрекере пример того что нужно...
rutracker.org/forum/viewtopic.php?t=3394345

Текст присутствует в исходном коде но изображения начинают загружаться Только после открытия спойлера...

Зы. Может проще допилить спойлер от beliyadmin
« Последнее редактирование: 27.07.2011, 08:59:57 от Mihanja80 »
Я с мобильного, в основном...
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Сложность в том, что подгрузку по требованию без компонента не сделать правильно, по этому и компонент придется писать чтобы на аякс-запросы отвечал. Подумаю на досуге.
*

SDKiller

  • Живу я здесь
  • 2706
  • 329 / 5
  • ...ergo sum
на рутрекере пример того что нужно...

нет там аякса
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
нет там аякса
Это точно. Остается один вариант - детище Петра допиливать.
« Последнее редактирование: 27.07.2011, 11:40:51 от Arkadiy »
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Начал пилить спойлер, из сделанного - при загрузке контента мамбот заменяет {image href=/sdfsdf/sdf.gif} на скрытый инпут со значением равным пути к картинке. В скрипте, раскрывающем слайдер сделал следующую функцию
Код: javascript
	expandit:function($targetHeader, $targetContent, config, useractivated, directclick){
            $targetContent.find(".spoilerimage").each(function () {
                          $(this).replaceAll("<img src='"+$(this).val()+"' />");                       
                       }); 
которая по идее должна заменять в цикле инпуты на картинки, но что-то не покатило, прекращает работу на
Код: javascript
$(this).replaceAll("<img src='"+$(this).val()+"' />");   
Думаем дальше.
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
а я посмотрел в сторону lazyLoad - на мутулзе штука. так там загрузка идёт через замену одного атрибута другим.
item.set("src", item.get("data-src"));
т.е. изначально присутствует src="заглушка" и data-src="путь к правильной картинке"
а вата заключается в том, что размер картинок неизвестен, следовательно, спойлер надо будет динамически раздвигать по мерез загрузки картинок.

upd
как вариант, можно попробовать задействовать getimagesize чтобы выставить загодя размеры изображений. хотя не знаю, на сколько это целесообразно в плане быстродействия )
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
SmokerMan, дык размер блока ты не определишь без размера картинок.
блоки то нормально считаются стандартными библиотеками слайдеров.
а вот чтобы задействовать эти стандартные библиотеки надо картинкам-заглушкам выставить правильный размер.
чёт я погуглил и кроме getimagesize ничего путнего не нашёл.

понятно, что можно динамически раздвигать спойлер, по мере загрузки картинок, но это для виртуозов, которые могут переписать код слайдера, чтобы учитывать изменённые размеры картинок внутри контейнера.
но на это у меня мозгов не хватит точно. )
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
Arkadiy, можешь свой код дописать так, чтобы он проверял, есть ли у изображений внутри спойлера (настоящих, которые img src="")  атрибут высоты (не пустой и не нулевой). если нет, то запрос на getimagesize и прописывание высоты и ширины.
тогда для тех картинок, что юзер сам сресайзил, сохранится нужный размер.

далее создаём свойство data-src и копируем в него src.
а src заменяем путём к однобайтовой заглушке. в итоге внутри контейнера на стороне сервера у нас получатся пустые блоки нужной высоты.
а дальше - уже можно стандартной библиотекой слайдить, не заморачиваясь динамическим пересчётом размеров.
останется только запуск загрузки картинок открытого слайдера прописать.
*

skai

  • Завсегдатай
  • 1198
  • 153 / 1
  • skaiseo
архиважное дело! жаль помочь не смогу - программист как из слона балерина..  Буду следить за развитием темы.
Наполнение вашего сайта - 1т.р. стр. (текст, изображения, мета, перелинковка). Гарантия высокого ранжирования. SEO консультация в подарок.
----------------------------------------------------------------------------------------------
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
понятно, что можно динамически раздвигать спойлер, по мере загрузки картинок, но это для виртуозов, которые могут переписать код слайдера, чтобы учитывать изменённые размеры картинок внутри контейнера.
но на это у меня мозгов не хватит точно. )
У спойлера нет определенной высоты, так-что он должен раздвигаться по мере увеличения наполнения. По этому думаю что такой вопрос не встанет, с другой стороны когда появятся картинки в спойлере все будет видно, а пока это забегание вперед паровоза.
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
Arkadiy, если размер изображений определять на сервере, то у спойлера БУДЕТ определённая высота. у каждого-своя, конечно, но будет. и ее можно будет не просчитать, т.к. с этим отлично справляются встроенные в мутулз и квери функции. т.е. с сервера приходит контейнер нужной высоты, а, по нажатиб на спойлер, картинки заглушки заменяются на реальные изображения. при этом высота спойлера не меняется.
ну ладно, я сам попробую реализовать свои задумки. просто регшулярки забыл нафиг все.
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Доработал мамбот Петра. Для использования подгрузки изображений при открытии спойлера в нужном месте текста, выводимого спойлером нужно вставить
Код
{img href=/images/publish_f2.png}
где href - путь от корня сайта к картинке (обязательно от корня и начиная со слеша).

Делал только jQuery часть, mootuls не трогал.

Пробуйте, будут неприятности или приятности - пишите.
« Последнее редактирование: 28.07.2011, 12:10:15 от Arkadiy »
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Arkadiy, если размер изображений определять на сервере, то у спойлера БУДЕТ определённая высота.
Думаю что высота изображения ни на что не повлияет т.к. у дива спойлера высота не задана.
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
да блин. не знаю уже,как объяснить ))).
есть готовый спойлер на мутулзе, использует библиотечную функцию Fx.Slide. в ней происходит просчёт высоты контейнера и всё работает до момента подключания аякса.
все вычисления высоты контейнера происходят до того, как пошла загрузка, поэтому высота контейнера при вервом нажатии получается меньше нужной.
а я хотел попробовать задавть через php заглушкам размеры реальных изображений. тогда, по идее, высота контейнера будет правильной, т.к. её "посчитает" Fx.Slide.
т.е. вмето изображений в диве с сервера приходят, скажем, однопиксельные гифы, растянутые под реальный размер картинок, полученный через getimagesize ещё на сервере
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
А что будет без размеров? Ты имеешь ввиду что спойлер дергать будет при загрузке или еще какие проблемы?
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
а ты представь, что картинок в каждом спойлере- штук 5-10, размером, скажем, более 500/500px. и у всех он разный, и явно не задан.
и что тогда выведется в слайдере при первом нажатии? чтобы всё сработало правильно, надо по мере загрузки картинок спойлер сдвигать на их высоту.
т.е. в спойлере должн быть заложен обработчик загрузки, который будет срабатывать по мере загрузки каждой картинки и раздвигать спойлер.
вот в этом я вижу гемор. а в случае с получением размеров на сервере этого можно будет избежать.
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
к тому же синтаксис {img href=/images/publish_f2.png} не универсален, т.к. оставляет за бортом использование внешних плагинов.
как раз интересно было бы получить универсальный плагин, в который можно вставлять обычные картинки через вивзивиг или синтаксис плагина галерей засовывать.

*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
у меня мозгов не хватает регулярку написать, которая бы в блоке спойлера дописывала картинкам размеры.
Код
		$patterns = array ('/({beginslide.*?})(.*?)({endslide})/');
$replace = array ('$1 $2 $3');
$row->text=preg_replace($patterns, $replace, $row->text);
вот надо как-то шерстить то, что в $2 на предмет картинок. поможите, граждане! )
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Попробовал с размерами и без. Три фотки по пять мегапикселей, разницы не увидел.
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
хм. щас посмотрю тогда. может там правильный спойлер. тот, который я использую, не отслеживает изменение размера внутренностей контейнера.
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
к тому же синтаксис {img href=/images/publish_f2.png} не универсален, т.к. оставляет за бортом использование внешних плагинов.
как раз интересно было бы получить универсальный плагин, в который можно вставлять обычные картинки через вивзивиг или синтаксис плагина галерей засовывать.
Четкого ТЗ небыло, по этому как придумал, так и сделал.
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
Какой атрибут надо прибавлять к тегу картинки для галерей?
*

Arkadiy

  • Гуру
  • 5317
  • 463 / 2
  • Крепитесь, други.
По замене адреса катринки в тегах <img> можно сделать очень просто - ищем в мамботе вхождение 'src=' и заменяем него на 'src="#" data_src=' и все будет работать на фронте без переделок.
*

effrit

  • Легенда
  • 10132
  • 1118 / 13
  • effrit.com
ну... можно, конечно, все шерстить, но это не совсем правильно.
ведь тут подразумевалось обращение к серверу для получения размеров изображений. если все картинки в тексте дёргать - это может боком выйти, наверно.

но вообще, на странице с демкой скрипта
http://www.dynamicdrive.com/dynamicindex17/ddaccordion.htm с аяксом всё в порядке. так что возможно что и танцы с бубном не нужны.

а плагин у меня не заработал на 1.22. если без синтаксиса картинок - то всё ок, как только вствляешь путь до картинки - две ошибки выдаёт.
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Как добавить enclosure в картинки в RSS потока?

Автор eldar2005

Ответов: 28
Просмотров: 7921
Последний ответ 27.05.2017, 11:37:44
от eldar2005
Как показывать баннер (модуль) только для мобильных устройств?

Автор Escander

Ответов: 9
Просмотров: 3182
Последний ответ 27.10.2016, 12:26:56
от Escander
JCH_Optimize Plugin - оптимизирует загрузку страницы. Работает.

Автор Beer

Ответов: 16
Просмотров: 8831
Последний ответ 03.10.2016, 22:33:02
от SeBun
Модуль лезет на все страницы, а должен быть только на главной.

Автор landgraf

Ответов: 23
Просмотров: 10927
Последний ответ 13.05.2016, 13:22:37
от akteon25
Только на главной странице не отображаются Keywords и Description

Автор dobriibobr

Ответов: 3
Просмотров: 1591
Последний ответ 18.06.2014, 01:48:55
от dobriibobr