2012-01-19 6 views
0

私は現在、クライアントのウェブサイトのフロントエンドで作業しています。 彼は写真家であり、CMSシステム(シース)を気にしたくありません。PHP - フォルダからのリンク

私はちょうどそれを彼は私にそれを説明する方法を説明します:

彼が画像でいっぱいの彼のFTP上のフォルダを作成したいと考えています。 これらのフォルダはページまたはカテゴリを表します。 これらのフォルダ内の画像は、そのフォルダから作成されたページに表示されます。 フォルダの名前が「ファッション」の場合、彼はドメインがwww.client.com/fashionを読むことを望んでいます。

私は解決策をインターネット上で探していました。私はあなたが私の不幸から私を助けてくれることを願っています。

基本的には、フォルダをスキャンし、フォルダ名を含むPHPファイル内にリンクを作成し、画像を内部に表示するディレクトリリストシステムが必要です。また、フォルダにtxtファイルをドロップすると、その中にテキストが表示されます。

このシステムはStacey CMSに似ていますが、悲しいことに、彼はCMSを望んでいません。

さらに詳しい情報が必要な場合は、メッセージを削除することを躊躇しないでください。

ありがとうございます。

+2

彼は自分のコンテンツを管理するシステムを作成することを望んでいますが、コンテンツ管理システムは望ましくありません。いくつかの再教育のような音が必要です。 –

+0

何を求めているのですか?**はCMSです。ステイシーの名前から終わりを告げるだけです。 – Quentin

+0

これにはCMSは必要ありません! –

答えて

1

まず、PHPスクリプトに渡されるようにURLを書き直す必要があります。

参考:

<?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>'; 

明らかにこのdoesnの: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で、これは.htaccessファイルであるようにApacheを想定すると、あなたが何かを置きますレイアウトの整形はすばらしいですが、うまくいけば正しい方向へのプッシュを与えるでしょう。あなたが必要なもの

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. 1つの写真(フルスクリーンで表示したい場合)は別のテンプレートを使用してください。

2つのPHPスクリプトが必要です。 2 htmlのテンプレート。さらに、サムネイル作成のソリューションが必要な場合があります。

+0

投稿したコードスニペットで完璧に動作します – Jeremy

+0

意図的にコードを抜かないでください。 upvoteでさえも。そのような作業のためのスニペットを与えることは、OPをコーディングすることになります。しかし、OPがgoogleのあらゆるステップを検索するなら、彼は解決策を得るだろう。 –

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

関連する問題