我目前正在客户网站的前端工作。 他是一名摄影师,并不想打扰CMS系统(sheesh)。
我只是按照他向我解释的方式解释它:
他想在他的FTP上创建充满图像的文件夹。 这些文件夹代表页面或类别。 然后,这些文件夹中的图像应显示在从该文件夹创建的页面上。 如果该文件夹名为" fashion",他希望该域名为:www.client.com/fashion。
我在互联网上寻找解决方案,我真的希望你能帮助我摆脱困境。
基本上,我需要一个精简的目录列表系统,它扫描文件夹并在php文件中创建带有文件夹名称的链接,在里面显示图像。此外,如果您在文件夹中删除txt文件,它应该在其中显示文本。
这个系统类似于Stacey CMS,但遗憾的是他不想要任何CMS。
如果您需要更多信息,请随时留言。
谢谢。
答案 0 :(得分:1)
首先,您需要重写URL,以便将其传递给PHP脚本,以便您可以使用它。假设Apache,你可以放置像这样的.htaccess文件:
参考:http://httpd.apache.org/docs/current/mod/mod_rewrite.html
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ imagelist.php?dir=$1 [L]
然后,在imagelist.php
中,执行以下操作:
<?php
$baseDir = 'images/';
$workingDir = $baseDir.$_GET['dir'];
if (!is_dir($workingDir) || (!$dp = opendir($workingDir))) {
exit('Unknown category: '.$_GET['dir']);
}
echo '<html><head><title>'.$_GET['dir'].'</title></head></body>';
while (($file = readdir($dp)) !== FALSE) {
if (substr(strtolower($file),-4) == '.txt') {
// Handle text files
echo '<pre>'.file_get_contents($workingDir.'/'.$file).'<pre>';
} else {
// Treat everything else as an image
echo '<img src="'.$workingDir.'/'.$file.'" alt="'.$file.'" title="'.$file.'">';
}
}
echo '</body></html>';
显然,这并没有对布局进行任何好的格式化,但希望它会给你一个正确的方向。
答案 1 :(得分:1)
你需要的是这个,
从url读取类别(为此使用mod_rewrite)
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
# Rewrite all other URLs to index.php/URL
RewriteRule ^(.*)$ index.php/$1 [PT,L]
通过php扫描您在步骤1中阅读的目录。
它需要2个PHP脚本。还有2个html模板。此外,您可能需要一个缩略图创建解决方案。
答案 2 :(得分:1)
实际上这很简单。使用DirectoryIterator。我会发布一些代码来推动你朝着正确的方向发展,但我没有给你解决方案,你必须自己做; - )
我使用此代码段来获取横幅目录中的文件夹列表:
$tmpDir = dirname(__FILE__).DIRECTORY_SEPARATOR.'banners'.DIRECTORY_SEPARATOR.'emrc'.DIRECTORY_SEPARATOR;
$dirProc=new DirectoryIterator($tmpDir);
$banerSizes = array();
foreach($dirProc as $dirContent){
if ($dirContent->isFile() || substr($dirContent->getFilename(), 0, 1) === '.') continue;
if ($dirContent->isDir()) {
$banerSizes[] = $dirContent->getFilename();
}
}
natcasesort($banerSizes);
我用它来显示它们:(注意:我没有链接图像,但我提供了一个代码示例来复制和粘贴链接。这可以很容易地根据您的需要进行修改)
<table class="regular" width="100%" cellpadding="0" cellspacing="0">
<?php
/**
* Display bannes
*/
foreach($banerSizes as $bannerSize){
$tmpDir = dirname(__FILE__).DIRECTORY_SEPARATOR.'banners'.DIRECTORY_SEPARATOR.'emrc'.DIRECTORY_SEPARATOR.$bannerSize.DIRECTORY_SEPARATOR;
$dirProc=new DirectoryIterator($tmpDir);
?>
<tr>
<td>
<a name="<?php echo $bannerSize; ?>"><?php echo $bannerSize; ?></a>
<hr />
</td>
</tr>
<?php
foreach($dirProc as $dirContent){
if (!$dirContent->isFile() || substr($dirContent->getFilename(), 0, 1) === '.') continue;
?>
<tr>
<td align="center">
<img src="/banners/emrc/<?php echo $bannerSize; ?>/<?php echo $dirContent->getFilename(); ?>" />
<br />
<textarea cols="42" rows="4" readonly="readyonly"><a href="<?php echo $affiliateLink; ?>"><img src="<?php echo $siteLink; ?>/banners/emrc/<?php echo $bannerSize; ?>/<?php echo $dirContent->getFilename(); ?>" /></a></textarea>
<br />
<hr style="width:384px" />
</td>
</tr>
<?php
}
}
?>
</table>
不要使用表格。我之所以这样做,是因为我工作的模板需要它。 我希望这对你有所帮助,请告诉我。