динамическая галерея изображений

Привет всем, мой первый пост: D

Проблема:

Я пытаюсь создать галерею шаблонов, а не слайд-шоу, которые я могу легко повторно использовать на нескольких сайтах.
В основном для сайтов с быстрыми фолио, где владелец не знает, как обновить код для добавления изображений.

Ему необходимо прочитать все файлы изображений из выбранного каталога. (jpg, gif, png, bmp) Он должен иметь возможность обновлять контент без каких-либо изменений кода. (динамическая загрузка из папки) Необходимо записать теги img на просматриваемую страницу. (используя JavaScript для настройки / css?)

Набор тегов img, выводимых из php / JavaScript, должен быть эскизами, которые при нажатии будут ссылаться на полные изображения def, это, вероятно, можно обработать с помощью JavaScript при первоначальном создании ссылок.

Прогресс:

Я нашел php-скрипт, который будет читать файлы из папки и сохранять URL-адреса в массив для использования в JavaScript. Однако код, используемый для отображения изображения, выполнен в виде слайд-шоу из одного блока, где мне нужно размещать все изображения отдельно, а не просто заменять src того же изображения.

Пример:

root / index.htm - pastebin [.] com / m52568ed5
root / images / getimages.php - pastebin [.] com / f5395a572
root / images / pic01.png
root / images / pic03. jpg
корень / images / asdfs.gif

Итак, как мне заставить JavaScript проходить через массив галереи [curimg] и записывать мои ссылки?

Я зашел так далеко и застрял.

function rotateimages(){
 // document.getElementById("slideshow").setAttribute("src", "res/gallery/painting/"+galleryarray[curimg])
 // curimg=(curimg<galleryarray.length-1)? curimg+1 : 0
 for (curimg=1;curimg!=0;curimg++;) {
 document.write("<div><img class='gallery' src='" + galleryarray[curimg] + "' /></div>")
 }
}

Заранее спасибо, Брейден.


РЕДАКТИРОВАТЬ: вот моя песочница, чтобы показать, что происходит

-EDIT: удалена ссылка

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

<!DOCTYPE html>
<html>
    <head>
        <title>My Gallery</title>
    </head>

    <body>
        <div id="gallery"></div>
    </body>
</html>

Похоже, он застревает, когда пытается запустить 'foreach ()'

Вот текущий php:

<?php

function getDirTree($dir,$p=true) {
    $d = dir($dir);$x=array();
    while (false !== ($r = $d->read())) {
        if($r!="."&&$r!=".."&&(($p==false&&is_dir($dir.$r))||$p==true)) {
                $x[$r] = (is_dir($dir.$r)?array():(is_file($dir.$r)?true:false));
        }
    }

    foreach ($x as $key => $value) {
        if (is_dir($dir.$key."/")) {
                $x[$key] = getDirTree($dir.$key."/",$p);
        }
    }

    ksort($x);
    return $x;
}

$tree = getDirTree("./res/gallery/");

echo '<div id="gallery">';

foreach($tree as $element => $eval) {
    if (is_array($eval)) {

        foreach($eval as $file => $value) {
                if (strstr($file, "jpg")) {
                        $file = 'res/gallery/'.$element.'/'.$file;
                        echo 'test'; //test//echo '<a href="'.$file.'">test</a>'; //test// <img class="gallery" src="'.$file.'" alt="'.$file.'"/></a>';
                }
        }


    }
}
echo '</div>';

учитывая, что я никогда не делал php до того, как начал это, я думаю, что у меня все в порядке.


person Neros    schedule 13.12.2009    source источник


Ответы (3)


Очень простой скрипт автогалереи, photos.php:

<?php
function getDirTree($dir,$p=true) {
    $d = dir($dir);$x=array();
    while (false !== ($r = $d->read())) {
        if($r!="."&&$r!=".."&&(($p==false&&is_dir($dir.$r))||$p==true)) {
            $x[$r] = (is_dir($dir.$r)?array():(is_file($dir.$r)?true:false));
        }
    }

    foreach ($x as $key => $value) {
        if (is_dir($dir.$key."/")) {
            $x[$key] = getDirTree($dir.$key."/",$p);
        }
    }

    ksort($x);
    return $x;
}

$tree = getDirTree("./foto/");

echo '<div id="gallery">';
echo '<ul class="linone">';
foreach($tree as $element => $eval) {
    if (is_array($eval)) {
        echo '<li><h4>'.$element.'</h4>';
        echo '<ul class="linone photos">';
        foreach($eval as $file => $value) {
            if (strstr($file, "jpg")) {
                $file = 'foto/'.$element.'/'.$file;
                echo '<li><a href="'.$file.'"><img src="'.$thumb.'" alt="'.$thumb.'"/></a></li>';
            }
        }
        echo '</ul>';
        echo '</li>';
    }
}
echo '</ul>';
echo '</div>';

Также я использую плагин jQuery для лайтбокса, чтобы сделать эту галерею удобной для просмотра.

Кроме того, управлять фотографиями для этой страницы очень-очень просто - вам просто нужно загрузить файлы .jpg в каталог с фотографиями (в этом примере '/ foto /').

index.php:

<!DOCTYPE html>
<html>
    <head>
        <title>My Gallery</title>
    </head>

    <body>
        <?php require_once('photos.php') ?>
    </body>
</html>

Этот файл будет включать файл photos.php и запускать его, вывод скрипта photos.php будет происходить между тегами.

person Sergey Kuznetsov    schedule 13.12.2009
comment
выглядит интересно, дайте ему трещину и опубликуйте результаты. - person Neros; 13.12.2009
comment
Я сменил каталог и загрузил, но он не работает: Вот мой текущий htm-файл, который загружает php - pastebin.com/f4fce85e - person Neros; 13.12.2009
comment
Вы не можете включить файл PHP с тегом ‹script› (с тегами ‹script› вы можете включать файлы JS), я показываю вам файл index.php (без ‹head› и других тегов). Хорошо, вы можете сделать, как я покажу вам в отредактированном ответе, подождите минуту. - person Sergey Kuznetsov; 13.12.2009
comment
в ваших кодах отсутствует редактор? ›даже в этом случае, я попробовал это, и ничего не вышло, ни картинок не появилось, ни ошибок, ничего. - person Neros; 13.12.2009
comment
Ну конечно; естественно. Если ваш файл скрипта заполнен кодом PHP, вам нужно написать ‹? Php в начале файла и?› В его конце (но это не обязательно, но об этом правиле знают продвинутые PHP-кодеры :)). Но если вы пишете смесь кода HTML и PHP, вам нужно начинать части PHP с помощью ‹? Php и заканчивать их тегами?›. - person Sergey Kuznetsov; 13.12.2009
comment
Понятно, понятно, хорошо, я собираюсь создать тестовую страницу, чтобы показать, что происходит, держитесь крепче - person Neros; 13.12.2009

Вы можете использовать PHP для записи тегов img.

Кроме того, ваш цикл for будет работать бесконечно, потому что у него есть конечное условие, которое всегда истинно.

РЕДАКТИРОВАТЬ: глядя на свой pastebin, похоже, вы неправильно поняли, как работает PHP. <script src="res/getimages.php"></script> не будет работать, так как теги скрипта читаются на стороне клиента. PHP запускается на стороне сервера. Чтобы запустить res/getimages.php, вам нужно будет сделать что-то вроде:

<?php //This is a PHP opening tag; anything after this is PHP code
include('res/getimage.php'); //Imports the PHP file into index.php
?> <!--this is the closing PHP tag - anything after this is HTML -->

Я настоятельно рекомендую изучить краткое руководство, такое как W3Schools PHP Tutorial, которое действительно поможет вам в этом. То же самое для JavaScript. Вы можете продолжать задавать вопросы о том, как все это работает, но вы никогда этого не поймете и не сможете понять, как собрать все воедино. Просто подождите несколько часов!

person Skilldrick    schedule 13.12.2009
comment
хорошо, круто, но я не знаю, на каком PHP это делать :) Не могли бы вы мне помочь? и да, я знаю, что это работает бесконечно, как мне остановить это был один из моих вопросов. - person Neros; 13.12.2009
comment
кстати, черт возьми, это был быстрый ответ. - person Neros; 13.12.2009
comment
Так почему вы пометили вопрос PHP? - person pavium; 13.12.2009
comment
Потому что, как сказал скиллдрик, вы можете закодировать теги img с помощью php, я просто не знаю, как это сделать. - person Neros; 13.12.2009
comment
Глядя на свой pastebin, похоже, вы неправильно поняли, как работает PHP. Это потому, что я не знаю php, я получил этот скрипт с другого сайта, однако при загрузке и использовании с исходным кодом слайд-шоу он работает отлично. - person Neros; 13.12.2009
comment
Я имел в виду, если вы не знаете PHP, почему вы так пометили его? Решение PHP не поможет, если его не держать в руках. - person pavium; 13.12.2009
comment
что ты имеешь в виду? там написано «опубликовать вопрос» и в нем задействован php, я что-то сделал не так? - person Neros; 13.12.2009
comment
Я не пытаюсь вас оттолкнуть, Брейден, но StackOverflow задуман как сайт, на котором программисты помогают друг другу разобраться в своем коде. Когда возникает вопрос, из-за которого создается впечатление, что работа не выполнялась, но «пожалуйста, пришлите код», это вызывает недовольство. С другой стороны, ваш вопрос предоставил намного дополнительную справочную информацию, чем типичный первый вопрос, но, пожалуйста, помните, что это предполагается совместными усилиями. Покажите нам, что вы сделали, и мы сможем предложить улучшения. - person pavium; 13.12.2009
comment
Да, я понимаю, я буду проходить через эти php tuts, как только у меня будет запущен php на моем компьютере, поэтому мне не нужно загружать каждое утомительное изменение. - person Neros; 13.12.2009

Спасибо всем, кто помогал, огромное спасибо Сергею Кунецову за его скрипт галереи, который после небольшой модификации работал отлично.

и для всех, кто этого хочет, вот окончательный рабочий файл php.

http://pastebin.com/f442f31f3

отображаемая папка - это путь $.

Наслаждайтесь, и еще раз спасибо.

person Neros    schedule 14.12.2009