2012-01-19 193 views
0

我目前正在研究客戶網站的前端。 他是一名攝影師,不想打擾CMS系統(sheesh)。PHP - 從文件夾鏈接

我就解釋他解釋給我的方式:

他想創建自己的FTP文件夾充滿圖像。 這些文件夾代表頁面或類別。 這些文件夾內的圖像應顯示在從該文件夾創建的頁面上。 如果該文件夾被命名爲「fashion」,他希望域名爲:www.client.com/fashion。

我正在尋找遍佈互聯網的解決方案,我真的希望你能幫助我擺脫困境。

基本上,我需要一個調優的目錄列表系統,它掃描文件夾並在文件夾名稱中創建一個php文件中的鏈接,顯示裏面的圖像。另外,如果您在文件夾中放置一個txt文件,它應該在其中顯示文本。

該系統與Stacey CMS類似,但可惜他不想要任何CMS。

如果您需要更多信息,請不要猶豫,投遞郵件。

謝謝。

+2

所以他希望你編寫一個系統來管理他的內容,但他不想要一個內容管理系統?聽起來像是需要一些再教育。 –

+0

什麼是要求**是** CMS。只需將Stacey的名字歸檔即可。 – Quentin

+0

你不需要CMS! –

回答

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

你需要的是這樣,從URL

  1. 閱讀類(使用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] 
    
  2. 掃描您對PHP的第1步中讀取目錄。

  3. 在一個不錯的html模板中顯示內容
  4. 對於單張照片(如果要全屏顯示)使用另一個模板。

它需要2個PHP腳本。和2個html模板。此外,您可能需要創建縮略圖的解決方案。

+0

這將完美的與我發佈的代碼片段 – Jeremy

+0

故意沒有給任何代碼剪斷。甚至沒有upvote。給這個任務的代碼片段將被編碼爲OP。但是,如果OP搜索谷歌的每一步,他會得到一個解決方案。 –

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> 

請勿使用表格。我只做,因爲它是我工作的模板所需的。 我希望這可以幫助你,請讓我知道。

+0

感謝您的提示!當然,我不使用表格,我是前端開發人員,因此我沒有真正進入PHP,所以我不能真正想到自己的解決方案。 – pixelschupser