Thickbox распознает тип ресурса, связанного расширением файла, чтобы определить, является ли это изображение отображаемым или нет. Он также игнорирует строку запроса при определении расширения. Таким образом, у вас есть следующие варианты:
- используйте переписывание пользовательских URL-адресов и заставьте ваш скрипт работать, например. используя URL-адрес, например
my_image_processing/img.jpg
вместо my_image_processing.php?img=img.jpg
(ищите дополнительную информацию по "mod_rewrite"),
- переписать код ThickBox (или выполнить поиск параметров, позволяющих изменить этот механизм распознавания без изменения кода - я не нашел ни одного), или
- реализовать другую библиотеку, позволяющую вам реализовать то, что вам нужно (и позволяет использовать внешний сценарий так, как вы хотели),
Одна вещь заставляет Thickbox думать, что он загружает изображение, а не страницу в рамку, а вторая - как указал vbence - добавление правильного типа пантомимы к изображению, которое вы возвращаете своим сценарием: вы следует добавить соответствующий заголовок с информацией «Content-Type».
EDIT:
Код, отвечающий за отображение изображений, начинается следующим образом [sic!]:
var baseURL;
if(url.indexOf("?")!==-1){ //ff there is a query string involved
baseURL = url.substr(0, url.indexOf("?"));
}else{
baseURL = url;
}
var urlString = /\.jpg$|\.jpeg$|\.png$|\.gif$|\.bmp$/;
var urlType = baseURL.toLowerCase().match(urlString);
if(urlType == '.jpg' || urlType == '.jpeg' || urlType == '.png' || urlType == '.gif' || urlType == '.bmp'){//code to show images
Вы можете добавить другой тип ('php'), если вы решите изменить скрипт самостоятельно, но вы должны знать о последствиях.
EDIT2:
Если вы воспользуетесь опцией «изменить плагин», есть некоторая альтернатива ( ColorBox ), которая позволяет вам без необходимости копаться в коде, должна ли ссылка * .php рассматриваться как изображение. Просто найдите опцию photo
в документации (когда установлено photo=true
должно вести себя так, как вы ожидаете).