В основном у меня есть немного нестандартная реализация FancyBox.По умолчанию вы должны включить ссылку на большую версию изображения, чтобы лайтбокс мог ее отобразить.Однако в моей реализации URL-адреса ссылок на изображения указывают на сценарий, а не непосредственно на файл изображения.Так, например, вместо:
<a href="mysite/images/myimage.jpg" rel="gallery">
у меня есть:
<a href="mysite/photos/view/abc123" rel="gallery">
Приведенный выше URL-адрес указывает на функцию:
public function actionPhotos($view)
{
$photo=Photo::model()->find('name=:name', array(':name'=>$view));
if(!empty($photo))
{
$this->renderPartial('_photo', array('photo'=>$photo, true));
}
}
"$ this-> renderPartial () "bit просто вызывает файл макета, который включает в себя стандартный HTML-тег для вывода.
Теперь, когда пользователь нажимает на миниатюру, вызывается вышеуказанная функция, и большое изображение отображается в Lightbox.
Теперь, если пользователь щелкнет правой кнопкой мыши на миниатюре и выберет «открыть в новой вкладке / окне», тогда изображение будет отображаться в браузере как обычно, т.е. только изображение.Я хочу изменить это так, чтобы оно отображало изображение в макете.
В приведенном выше коде я могу включить следующее и вставить его в оператор IF:
$this->render('photos', array('photo'=>$photo));
Это вызоветфайл макета "photos", который содержит макет для отображения изображения.
У меня есть для этого особое ограничение - URL-адрес изображения должен оставаться прежним, то есть никаких дополнительных переменных GET в URL-адресе.Однако, если мы можем передать переменную GET в фоновом режиме, тогда все в порядке.
Скорее всего, мне потребуется изменить указанную выше функцию, чтобы она вызывала другой файл для этой функции.
РЕДАКТИРОВАТЬ: Чтобы продемонстрировать, что именно я пытаюсь сделать, проверьте следующее:
http://www.starnow.co.uk/KimberleyMarren
Перейдите на вкладку фотографий и наведите курсор на миниатюру - запишите URL.Нажмите на миниатюру, и она откроется в лайтбоксе.Затем щелкните правой кнопкой мыши на том же миниатюре и выберите «открыть в новой вкладке / новом окне».Вы заметите, что изображение теперь отображается в макете.Так что тот же URL-адрес используется для отображения изображения в лайтбоксе и на его собственной странице.
Способ, которым StarNow сделал это, использует некоторую сумасшедшую длинную функциональность JavaScript, которую я не слишком заинтересован в репликации.