Проблема. после загрузки изображения модуль Image создает несколько деривативов (производных изображений) согласно пресетам (заданным настройкам). Иногда оригинальное загружаемое изображение меньше, чем некоторые деривативы и тогда эти деривативы не создаются. В таком случае при интеграции с модулем ThickBox последний пытается обращаться к несуществующему деривативу и в итоге пользователь видит лишь индикатор загрузки (ничего не происходит). Для решения проблемы можно было бы поискать зацепки-маркеры в генерируемом html-коде, но их нет. Ковырять для этого модуль Image мне было лень и я подрихтовал файл thickbox_auto.js.
Теперь перед активацией красивостей из thickbox заданный дериватив проверяется на наличие. В случае его отсутствия пользователю будет показан оригинал изображения.
Внимание, говнокод!
var ch_flag = "";
ch_flag = $.ajax({url:check_href, type:'HEAD', error: ch_flag = ""}).status;
if (ch_flag == 404) {
var href = img.attr("src").replace(".thumbnail", "");
} else {
var href = img.attr("src").replace(".thumbnail", "." + settings.derivative);
};
// А было так:
//var href = img.attr("src").replace(".thumbnail", "." + settings.derivative);
Недостатки. Они очевидны - генерируется дополнительный http-запрос на каждое изображение, что неприемлемо для сайтов с большой посещаемостью. Если у вас много посетителей, не делайте этого.
Щас еще посмотрю первый раз в жизни на более популярный lightbox2.
Upd. Чуваки, юзайте лайтбокс - он сам все делает
Комментарии
Спасибо. Буду иметь в виду.