Как я могу использовать PHP и Lightbox для добавления подписей к изображениям на моем сайте?

Я все еще новичок в PHP, так что держись здесь.

Я создал (почти рекурсивный) PHP-скрипт, который просматривает каталог изображений и его дочерний каталог «миниатюры». Затем он создает цикл для выбора каждого изображения и соответствующей ему миниатюры, создает ссылку из этой миниатюры и затем переходит к изображению №2.

Вот код функции, которую я использую:

function imageroll ($imgnum, $album) 
{
$i=1;

while($i<=$imgnum)  
  {
  $ii = str_pad($i, 3, "0", STR_PAD_LEFT);
  echo "<a class=\"thumb\" href=\"pictures/", $album, "_", $ii, ".jpg\" rel=\"lightbox[", $album, "]\">";
  echo "<img src=\"pictures/thumbs/thumb-", $album, "_", $ii, ".jpg\" \/ >";
  echo "</a>";
  $i++;
  }
}

В таком случае у меня возникает вопрос: как мне изменить этот сценарий, чтобы я мог использовать функцию субтитров в Lightbox?

Для этого мне нужно было бы добавить атрибут title к каждому изображению внутри тега <a> со строкой подписи к каждой фотографии. Как я могу ввести добавление $title в цикл, не передавая в функцию 12 разных $title?

Спасибо!


person CaseyHunt    schedule 17.12.2010    source источник
comment
Просто быстрый комментарий: как насчет использования цикла for? Выглядит немного чище.   -  person Scorchio    schedule 18.12.2010


Ответы (3)


Как я могу ввести добавление $title в цикл, не передавая в функцию 12 разных $title?

Используйте массив, поэтому они существуют. Добавьте свои заголовки в массив $titles и используйте $title[$i] для доступа к каждому заголовку.

Для получения дополнительной информации о массивах PHP посетите http://php.net/manual/en/language.types.array.php и проконсультируйтесь с любыми хорошими книгами по PHP.

person Scorchio    schedule 17.12.2010
comment
Отлично - у меня есть жестко закодированный массив, делающий это. Мне любопытно, можно ли присвоить массив из внешнего источника, скажем, текстового документа? Идея состоит в том, чтобы сделать подписи как можно более модульными без необходимости кодировать массив каждый раз, когда я хочу использовать эту функцию с кучей изображений. - person CaseyHunt; 18.12.2010
comment
@CaseyHunt Возможно, самым элегантным решением была бы разработка интерфейса для добавления подписей к изображениям (подумайте о любой серьезной галерее в Интернете - Flickr, Picasa и т. Д., Что угодно) и хранения подписей в базе данных. Вероятно, вам придется немного изучить PHP (и MySQL, например), чтобы достичь этого, но это действительно стоит усилий! В долгосрочной перспективе, возможно, большая часть данных вашего веб-сайта будет храниться в базе данных, поэтому научитесь правильно ее использовать. - person Scorchio; 18.12.2010
comment
Я согласен, изучение MySQL находится на горизонте для меня, но не для этого проекта. В итоге я создал дополненный массив, в котором он дополняет массив, равный $imgnum. Кажется, это работает достаточно хорошо. Из того места, где я вызываю функцию, я могу назначать определенные подписи к элементам массива — они соответствуют изображениям, которые я хочу подписать. - person CaseyHunt; 18.12.2010

Обычно лайтбоксы используют заголовок для отображения подписей, поэтому попробуйте следующее:

  echo "<a class=\"thumb\" title=\"" . $title . "\" href=\"pictures/", $album, "_", $ii, ".jpg\" rel=\"lightbox[", $album, "]\">";
  echo "<img src=\"pictures/thumbs/thumb-", $album, "_", $ii, ".jpg\" \/ >";
  echo "</a>";

Дайте мне знать, если это поможет

person Ives.me    schedule 17.12.2010
comment
Да, использование title — это функция лайтбокса, и я вижу, вы присвоили ей переменную $title. Однако вопрос остается в силе: я использую цикл для отображения серии изображений. Как я могу затем включить несколько разных заголовков в этот цикл, не передавая много разных $titles в функцию? - person CaseyHunt; 18.12.2010

вы можете использовать фейс-бокс как лайтбокс и вставлять через него подпись.

person Chandresh M    schedule 17.12.2010