PHP - ссылка из папки - PullRequest
       19

PHP - ссылка из папки

0 голосов
/ 19 января 2012

В настоящее время я работаю над клиентским сайтом. Он фотограф и не хочет беспокоиться о системах CMS (sheesh).

Я просто объясню это так, как он объяснил мне:

Он хочет создавать на своем FTP папки, заполненные изображениями. Эти папки представляют страницы или категории. Изображения внутри этих папок должны затем отображаться на странице, созданной из папки. Если папка называется «fashion», он хочет, чтобы домен читал: www.client.com/fashion.

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

В основном мне нужна настроенная система распечатки каталогов, которая сканирует папки и создает ссылки внутри php-файла с именем папки, отображая изображения внутри. Также, если вы уроните текстовый файл в папку, он должен отобразить текст внутри него.

Эта система похожа на CMS Стейси, но, к сожалению, ему не нужна CMS.

Если вам нужна дополнительная информация, не стесняйтесь оставлять сообщения.

Спасибо.

Ответы [ 3 ]

1 голос
/ 19 января 2012

Что вам нужно, это

  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]
    
  2. Сканирование каталога, который вы прочитали на шаге 1, по тел.

  3. Показать содержимое в хорошем HTML-шаблоне
  4. Для одной фотографии (если вы хотите показать ее в полноэкранном режиме) используйте другой шаблон.

Для этого потребуются 2 сценария php. И 2 HTML-шаблона. Кроме того, вам может понадобиться решение для создания миниатюр.

1 голос
/ 19 января 2012

Это очень просто на самом деле.Используйте 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>

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

1 голос
/ 19 января 2012

Во-первых, вам нужно переписать URL, чтобы он передавался вашему PHP-скрипту, чтобы вы могли что-то с ним сделать.Предполагая Apache, вы бы поместили что-то вроде этого .htaccess:

Ref: 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>';

Очевидно, что это не делает никакого хорошего форматирования макета, но, надеюсь, это даст вам толчок в правильном направлении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...