#php #html #slider
#php #HTML #слайдер
Вопрос:
Мне было интересно, сможет ли кто-нибудь помочь мне исправить этот сценарий…По сути, он просто вызывает слайд-шоу, если файл представляет собой изображение, проигрыватель vimeo, если у него есть URL-адрес vimeo, и встроенный swf-файл, если это флэш-файл.
<div id='jessslide'>
<?php
$photos=file("work.txt");
echo "<div id='slider-wrapper'>";
foreach($photos as $image){
$flag=0;
$item=explode("|",$image);
if($item[0]==$fields[0]){
$photo=trim($item[1]);
// check for Vimeo
if(strpos($photo, "vimeo.com") amp;amp; $flag==0){
echo "<iframe src='$photo?title=0amp;amp;byline=0amp;amp;portrait=0' width='900' height='500' frameborder='0' webkitAllowFullScreen allowFullScreen></iframe>";
$flag=1;
}
// check for Flash
if(strpos($photo, ".swf") amp;amp; $flag==0){
echo "<object id='myId' classid='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000' width='900' height='500'><param name='movie' value='$photo' />
<!--[if !IE]>-->
<object type='application/x-shockwave-flash' data='images/work/$photo' width='900' height='500'>
<!--<![endif]-->
<div>
<h1>Alternative content</h1>
<p><a href='http://www.adobe.com/go/getflashplayer'><img src='http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif' alt='Get Adobe Flash player' /></a></p>
</div>
<!--[if !IE]>-->
</object>
<!--<![endif]-->
</object>";
$flag=1;
}
// If it's not Vimeo or Flash, then it must be a photo
if($flag==0){
echo "<div id='slider' class='nivoSlider'><img src='images/work/$photo' alt='' /></div>n";
}
}
}
echo "</div>";
?>
</div>
Все работает нормально, однако в слайд-шоу отображается только 1 изображение. При просмотре сгенерированного исходного кода это то, что отображается для слайд-шоу:
<div id='jessslide'>
<div id='slider-wrapper'><div id='slider' class='nivoSlider'><img src='images/work/sparklingsweet1.jpg' alt='' /></div>
<div id='slider' class='nivoSlider'><img src='images/work/sparklingsweet2.jpg' alt='' /></div>
<div id='slider' class='nivoSlider'><img src='images/work/sparklingsweet3.jpg' alt='' /></div>
<div id='slider' class='nivoSlider'><img src='images/work/sparklingsweet4.jpg' alt='' /></div>
<div id='slider' class='nivoSlider'><img src='images/work/sparklingsweet5.jpg' alt='' /></div>
<div id='slider' class='nivoSlider'><img src='images/work/sparklingsweet6.jpg' alt='' /></div>
<div id='slider' class='nivoSlider'><img src='images/work/sparklingsweet7.jpg' alt='' /></div>
</div>
</div>
И это то, как должен выглядеть правильный рабочий вывод слайд-шоу:
<div id='slider-wrapper'>
<div id='slider' class='nivoSlider'>
<img src='images/work/sparklingsweet1.jpg' alt='' />
<img src='images/work/sparklingsweet2.jpg' alt='' />
<img src='images/work/sparklingsweet3.jpg' alt='' />
<img src='images/work/sparklingsweet4.jpg' alt='' />
<img src='images/work/sparklingsweet5.jpg' alt='' />
<img src='images/work/sparklingsweet6.jpg' alt='' />
<img src='images/work/sparklingsweet7.jpg' alt='' />
</div>
</div>
Похоже, это проблема с div…Я что-то не так делаю с divs в php. Кто-нибудь хочет быть потрясающим и помочь мне с этой глупой проблемой div? 🙂
* На странице php, которая у меня есть, есть только один div вне php-скрипта, который является «jessslide».
Ответ №1:
<div id='jessslide'>
<?php
$photos=file("work.txt");
foreach($photos as $image){
$flag=0;
$item=explode("|",$image);
if($item[0]==$fields[0]){
$photo=trim($item[1]);
// check for Vimeo
if(strpos($photo, "vimeo.com") amp;amp; $flag==0):
echo "<iframe src='$photo?title=0amp;amp;byline=0amp;amp;portrait=0' width='900' height='500' frameborder='0' webkitAllowFullScreen allowFullScreen></iframe>";
$flag=1;
// check for Flash
elseif(strpos($photo, ".swf") amp;amp; $flag==0):
echo "<object id='myId' classid='clsid:D27CDB6E-AE6D-11cf-96B8-444553540000' width='900' height='500'><param name='movie' value='$photo' />
<!--[if !IE]>-->
<object type='application/x-shockwave-flash' data='images/work/$photo' width='900' height='500'>
<!--<![endif]-->
<div>
<h1>Alternative content</h1>
<p><a href='http://www.adobe.com/go/getflashplayer'><img src='http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif' alt='Get Adobe Flash player' /></a></p>
</div>
<!--[if !IE]>-->
</object>
<!--<![endif]-->
</object>";
$flag=1;
// If it's not Vimeo or Flash, then it must be a photo
else :
$photoarray[] = $photo;
endif;
}
}
if (isset($photoarray)):
echo "<div id='slider-wrapper'><div id='slider' class='nivoSlider'>";
foreach ($photoarray as $photo):
echo "<img src='images/work/$photo' alt='' />n";
endforeach;
echo "</div></div>";
endif;
?>
</div>
Комментарии:
1. О черт, оказывается, что проигрыватель vimeo и swf теперь находятся внутри слайдера! D:
2. Спасибо! Но, к сожалению, отредактированный код немного сводит с ума, в нем перечислены все имена файлов, которые у меня есть в файле .txt: P
3. Это немного сложно отлаживать, не глядя на результат, но я внес несколько быстрых изменений. Здесь уже очень поздно, так что никаких гарантий 🙂
4. Вау! Большое вам спасибо за то, что помогли мне!! Это работает отлично! 😀 Ты сделал мой день лучше! Ха-ха 🙂
Ответ №2:
Я не совсем уверен, что вы делаете, но id — это уникальный идентификатор. У вас не может быть нескольких элементов на одной странице с одинаковым идентификатором. Я бы сначала посмотрел туда, чтобы узнать, является ли это источником вашей проблемы. Скорее всего, он делает все, что вы хотите, в самом последнем div с идентификатором «slider», а все остальные просто каким-то образом уничтожаются.