Я перешел на protoboks, тот-же lightbox, только понадежнее но смысл от этого не меняется))
Реализован вставкой в страницу кода:
Код
global $APPLICATION;
CModule::IncludeModule("iblock");
$GRows = GetIBlockElementListEx(
"photo",
"gallery",
array(),
array(),
0,
array("SECTION_ID"=>$SECTION_ID),
array("DETAIL_PICTURE","PREVIEW_PICTURE","FILE_NAME","NAME","PREVIEW_TEXT","DETAIL_TEXT","PROPERTY_REAL_PICTURE")
);
$APPLICATION->AddHeadString('<!--[if IE]><script type="text/javascript" defer="true" id="init_js" src="javascript://"></script><![endif]-->');
$APPLICATION->AddHeadString('<link href="/protobox/css/protobox.css" rel="stylesheet" type="text/css" />');
$APPLICATION->AddHeadString('<script src="/protobox/js/prototype.js" type="text/javascript"></script>');
$APPLICATION->AddHeadString('<script type="text/javascript" src="/protobox/js/effects.js"></script>');
$APPLICATION->AddHeadString('<script type="text/javascript" src="/protobox/js/builder.js"></script>');
$APPLICATION->AddHeadString('<script type="text/javascript" src="/protobox/js/dragdrop.js"></script>');
$APPLICATION->AddHeadString('<script type="text/javascript" src="/protobox/js/odl.js"></script>');
$APPLICATION->AddHeadString('<script type="text/javascript" src="/protobox/js/protobox.js"></script>');
$APPLICATION->AddHeadString('<!--[if lte IE 6]><link rel="stylesheet" type="text/css" href="/protobox/css/iefixes.css"/><![endif]-->');
//====================================================================================================================
$ret = '<style type="text/css">/*<![CDATA[*/
html, body { margin: 0; padding: 0; border: 0}
a img { border: 0 }
/*]]>*/
</style>';
$ret .= '<div id="catgallery">';
while ($GRow = $GRows->GetNext()){
$RES=CFile::GetByID($GRow["~PROPERTY_REAL_PICTURE_VALUE"]);
$Detail_Image = $RES->GetNext();
$ret .= '<a href="/upload/'.$Detail_Image["~SUBDIR"]."/".$Detail_Image["~FILE_NAME"].'" rel="lightbox[gallery]" alt="'.$GRow["~NAME"].'" title="'.$GRow["~PREVIEW_TEXT"].'">';
$ret .= CFile::ShowImage($GRow["~PREVIEW_PICTURE"],$this->GalleryImgWidth,$this->GalleryImgHeight,'border="0" title="'.$GRow["~PREVIEW_TEXT"].'" ') ;
$ret .= '</a><br />';
}
$ret .= "</div>" ;
$ret .= '<script type="text/javascript">
.....{some gode}
echo $ret;
//<![CDATA[
function onDomLoaded()
{
initLightbox(
{
ring : true,
protect : true
}
);
}
odl.register(onDomLoaded);
//]]>
</script>';
В шаблоне сайта необходимо добавить строки:
Код <?$APPLICATION->ShowHeadScripts(); ?>
<?$APPLICATION->ShowHeadStrings()?>
Они там вообщето никогда не помешают.
В самом protoboks(ligtbox) необходимо поправить названия классов в соответствии с выбранными вами.
Что тут делается?
1. Создаем запись для добавления на страницу со скриптами и объявлением таблиц стилей из protobox. Эта запись будет включена в заголовок страницы через ShowHead... (механизм отложенных функций в хелпере). Можно код включить сразу в шаблон, но в страницах без фотогалереи он будет лишним.
2. Делаем выборку из инфоблока по $SectionID.
3. Формируем фотогалерею по выбранным элементам:
Код
<div id="catgallery">
<a href="/upload/iblock/5c9/V031.jpg" rel="lightbox[gallery]" alt="V031.jpg" title="V031.jpg">
<img src="/upload/iblock/4d3/V031thumbnail.jpg" title="V031.jpg" alt="" border="0" width="180" height="145"></a><br>
<a href="/upload/iblock/58e/12.jpg" rel="lightbox[gallery]" alt="12.jpg" title="12.jpg">
<img src="/upload/iblock/423/12thumbnail.jpg" title="12.jpg" alt="" border="0" width="180" height="120"></a><br>
<a href="/upload/iblock/ca0/0607_cuba_beachv1n.jpg" rel="lightbox[gallery]" alt="0607_cuba_beach[1].jpg" title="0607_cuba_beach[1].jpg"><img src="/upload/iblock/a7f/0607_cuba_beachq1ythumbnail.jpg" title="0607_cuba_beach[1].jpg" alt="" border="0" width="180" height="135"></a><br>
.....
</div>
Работает здесь:
Пример работы фотогалереи на Lightbox