题
嘿,我的第一篇文章:D
问题:
我正在尝试制作模板库,而不是幻灯片节目,我可以在多个站点上轻松重复使用。
主要是用于快速的作品集网站,所有者不知道如何更新代码以添加图片。
它需要从选定目录中读取所有图像文件。 (JPG,GIF,PNG,BMP)它需要能够在没有任何代码更改的情况下更新内容。 (文件夹的动态负载)需要将IMG标签写入查看页面。 (使用javascript进行自定义/CSS?)
来自PHP/JavaScript输出的IMG标签集需要为缩略图,当单击将链接到完整的DEF图片时,最初在链接时可能会使用JavaScript处理。
进步:
我找到了一个PHP脚本,该脚本将从文件夹中读取文件,并将URL保存到用于JavaScript中的数组。但是,用于显示图片的代码是作为单个块幻灯片显示的,因为我需要在其中单独发布所有图像,而不仅仅是替换同一图像的SRC。
例子:
root/index.htm- pastebin [。] com/m52568ed55
root/images/getimages.php- pastebin [。] com/f5395a572
root/images/pic01.png
root/images/pic03.jpg
root/images/asdfs.gif
那么,如何让JavaScript循环通过GalleryArray [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,我认为我做得很好。
解决方案
非常简单的自动画廊脚本,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>';
另外,我使用Lightbox 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脚本的输出将在标签之间出现。
其他提示
您可以使用PHP写出IMG标签。
另外,您的循环将无限运行,因为它具有始终为真的最终条件。
编辑:看一下您的粘贴,看来您已经误解了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教程, ,这确实可以帮助您解决这个问题。相同 JavaScript. 。您可以不断询问有关所有这些方法的问题,但是您永远不会真正理解它,并且无法弄清楚如何将所有位放在一起。只要给它几个小时!
感谢所有帮助的人,非常感谢Sergey Kunetsov的画廊剧本,经过轻微的修改后,它非常有效。
对于任何想要它的人来说,这是最终工作的PHP。
显示的文件夹是$路径。
享受,再次感谢。