Reg.ru: домены и хостинг
Крупнейший регистратор и хостинг-провайдер в России.
Более 2 миллионов доменных имен на обслуживании.
Продвижение, почта для домена, решения для бизнеса.
Более 700 тыс. клиентов по всему миру уже сделали свой выбор.
*Наведите курсор мыши для приостановки прокрутки.
Назад Вперед
Получение списка папок с помощью PHP
Список каталогов средствами PHP, или листинг директорий
Листингом директорий мы будем называть запрос общего вида, формирующий список всех, либо некоторых файлов и каталогов родительской директории - процесс похожий на работу индексной страницы, обеспечиваемой большинством веб-серверов, но с бо льшим контролем над контентом и форматированием оного же.
Ещё одно преимущество данного скрипта - возможность выполнять определённые действия с файлами, используя PHP. В любом случае, первый шаг, который нам нужно сделать - это запрос к файловой системе - вернуть список файлов и каталогов.
Функции, представленные ниже, позволяют обеспечить извлечение имён файлов и других свойств из определённой директории или же пройтись по подкатегориям рекурсивно.
Замечание: в PHP5 есть функция scandir , которая "возвращает список файлов и каталогов, внутри директории, по заданному пути", однако она не выводит какую-либо дополнительную информацию о находящихся внутри директории файлах.
Листинг одной директории
Для начала, вот пример простой функции, которая возвращает список файлов, каталогов и их свойства, из одной директории (более продвинутые версии этой функции вы найдёте чуть ниже в данном уроке.)
read())) { // пропустить скрытые файлы if($entry == ".") continue; if(is_dir("$dir$entry")) { $retval = array("name" => "$dir$entry/", "size" => 0, "lastmod" => filemtime("$dir$entry")); } elseif(is_readable("$dir$entry")) { $retval = array("name" => "$dir$entry", "size" => filesize("$dir$entry"), "lastmod" => filemtime("$dir$entry")); } } $d->close(); return $retval; } ?>
Вы можете использовать эту функцию как ниже:
Возвращаемое значение является ассоциативным массивом файлов, включающим в себя информацию о пути к файлу, размер и дату последней модификации, кроме случая, когда файл является директорией, в этом случае строка "(dir)" возникает вместо размера файла.
Пример 1:
",print_r($dirlist),""; /* пример вывода Array ( => Array ( => images/background0.jpg => image/jpeg => 86920 => 1077461701) => ...) */ ?>
Пример 2:
",print_r($dirlist),""; /* пример вывода Array ( => Array ( => ./images/background0.jpg => image/jpeg => 86920 => 1077461701) => ...) */ ?>
Вывод списка файлов через HTML
Чтобы получить результаты вывода на странице в HTML, мы прокрутим возвращаемый массив через цикл
\n"; echo "
Этот код довольно просто модифицировать, например:
- - вывести результаты листинга списком вместо таблицы;
- - сделать названия файлов активными ссылками;
- - заменить имена иконками на основании того, какой тип у файла;
- и т.д.
Например, для вывода только PNG-файлов, добавьте простое условие в цикл вывода:
\n"; echo "
В этом примере будут пропущены и скрыты все файлы, чьи имена заканчиваются на .png . Вы также можете применить дополнительные условия, основанные на типе файла, его размере или дате последнего изменения.
Если вы, например, хотите отобразить миниатюру, ссылкой на картинку большего размера, или даже видео, просто задайте этим 2-м файлам одинаковые имена и в скрипте выше используйте str_replace или похожую функцию, чтобы модифицировать содержимое ссылок.
Рекурсивный листинг директории
И раз уж мы зашли так далеко, здесь будут только незначительные изменения в функции вызова рекурсивного списка и субкатегорий. Добавляя второй параметр в функцию, мы сохраняем предыдущий функционал листинга одиночной директории.
read())) { // пропустить скрытые файлы if($entry == ".") continue; if(is_dir("$dir$entry")) { $retval = array("name" => "$dir$entry/", "size" => 0, "lastmod" => filemtime("$dir$entry")); if($recurse && is_readable("$dir$entry/")) { $retval = array_merge($retval, getFileList("$dir$entry/", true)); } } elseif(is_readable("$dir$entry")) { $retval = array("name" => "$dir$entry", "size" => filesize("$dir$entry"), "lastmod" => filemtime("$dir$entry")); } } $d->close(); return $retval; } ?>
Чтобы новый функционал заработал, вам нужно ввести значение true (или 1) в качестве второго параметра.
Перед рекурсингом скрипта проверьте, являются ли поддиректории читабельными а также ознакомьтесь с последним пунктом данного урока, дабы избежать ошибок доступа.
Как и раньше, возвращаемая величина - это массив, ассоциативный массивов. Фактически, единственное дополнение - это ещё одна дополнительная опция для рекурсивного листинга.
Ограничение глубины рекурсии
Этот финальный пример добавляет ещё одно свойство - способность к определению, как "глубоко" должна проходить рекурсия. Предыдущий код будет продолжать исследовать вложенные директории, до тех пор пока они не закончатся. Этот скрипт поможет установить ограничение, по количеству уровней вложенных директорий.
read())) { // пропустить скрытые файлы if($entry == ".") continue; if(is_dir("$dir$entry")) { $retval = array("name" => "$dir$entry/", "size" => 0, "lastmod" => filemtime("$dir$entry")); if($recurse && is_readable("$dir$entry/")) { if($depth === false) { $retval = array_merge($retval, getFileList("$dir$entry/", true)); } elseif($depth > 0) { $retval = array_merge($retval, getFileList("$dir$entry/", true, $depth-1)); } } } elseif(is_readable("$dir$entry")) { $retval = array("name" => "$dir$entry", "size" => filesize("$dir$entry"), "lastmod" => filemtime("$dir$entry")); } } $d->close(); return $retval; } ?>
Как и раньше, мы добавили всего 1 новый параметр и пару строк кода. Если значение по умолчанию, отвечающее за глубину рекурсинга, не задано, то оно устанавливается в false . Это позволяет нам быть уверенными в том, что предыдущие особенности остаются и последующий код не "поломается" при изменении функции.
Ведение бизнеса на Amazon включает в себя изучение различной терминологии, которая встречается лишь на данном интернет-ресурсе. Немаловажной является поисковая оптимизация, о которой не стоит забывать. Сегодня мы поговорим о листингах и об их роли в процессе продажи товаров на Amazon.
Начнем с того, что определимся со значением этого слова. Листинг - это страница с описанием и характеристиками какого-либо товара на просторах интернет-магазина. Каждый продавец должен четко осознавать всю важность заполнения этого поля и не игнорировать этот этап. Заполнение листинга товара на Amazon включает в себя несколько этапов.
1. Заголовок товара.
Заполнение этого поля включает в себя название товара. Это первое, что увидит покупатель, когда перейдет на страницу вашего товара. Чтобы заголовок был хорошим, он должен содержать название товара, самые важные его характеристики (к примеру, вес, размер, ТМ). Лучше всего использовать в заголовке наиболее популярные поисковые запросы. Это поможет вашему товару оказываться в поиске на первых позициях.
2. Фото товара.
Как говорят, встречают по одежке. На Amazon товары также оценивают по их фотографиям. В листинге должны быть лишь высококачественные фотографии, которые отражают товар с лучшей стороны. Главное фото должно показывать товар крупным планом, а остальные - показывать товар в действии.
3. Буллеты.
Иными словами, это ключевые преимущества данного товара, которые оформлены в виде ненумерованного списка. Буллеты должны быть заполнены той информацией, которая поможет покупателю принять положительное решение относительно этого товара.
4. Описание товара.
Здесь нужно написать все то, что не было раскрыто в буллетах. Можно добавить больше информации о бренде, о сертификатах, которые подтверждают качество товара. Главное в описании нужно выделить ЗАГЛАВНЫМИ БУКВАМИ. Благодаря такой уловке все необходимое бросится в глаза сразу же.
5. Ключевые слова.
Ключи в листингах очень важны, однако их переизбыток сможет отбить у покупателя всякое желание приобрести товар. Составляйте ключевые слова правильно, не нарушая конструкцию листинга.
Если товар не соответствует описанию в листинге, покупатель может оставить жалобу и когда соберется необходимое количество голосов, Amazon блокирует аккаунт. В листингах есть возможность создавать различные вариации товара, в зависимости от цвета, количества и других факторов. Рекомендуется для разных товаров создавать разные листинги.
Качественный и хороший листинг должен быть лаконичен и информативен. В нескольких предложениях должна быть полностью раскрыта вся суть, назначение товара и его основные характеристики. Правильный листинг поможет привлечь внимание покупателя и принести прибыль.
Скучный и обыденный список файлов, который выдаёт Apache, можно с помощью нехитрых манипуляций превратить в красиво оформленный.
Что имеется по умолчанию:
Начнём по-порядку.
Заполняем .htaccess
:
RewriteEngine On RewriteBase / Options +Indexes Options +FollowSymLinks
1. Включаем модуль Апача для управления строками запросов.
2. Задаём базовый путь.
3. Включаем вывод листинга файлов.
4. Включаем обработку симлинков (SymLink, символические ссылки в файловой системе *nix систем).
ErrorDocument 400 /error.shtml ErrorDocument 401 /error.shtml ErrorDocument 403 /error.shtml ErrorDocument 404 /error.shtml ErrorDocument 500 /error.shtml
Задаём страницы для ошибок (не обязательно:)). Получение информации о запросе через SSI (файлы shtml) – оффтопик для данной темы.
Запрещаем обращение к.htaccess
1. Настройки модуля листинга (индексации) файлов.
2. IndexOptions – включение опций модуля. Мануал по всем доступным опциям .
IgnoreCase
– игнорировать регистр файлов
FancyIndexing
– включает другие опции для оформления листинга
FoldersFirst
– каталоги отображать вверху списка
NameWidth=*
– размер поля для имени файла, * – размер равен ширине имени файла, длинные имена не будут перенесены на новую строку
DescriptionWidth=*
– то же для описания файла
XHTML
– формат разметки страницы с листингом. Может быть и HTML
HTMLtable
– обернуть список файлов в таблицу, для удобства применения стилей и управления колонками
SuppressHTMLPreamble
– убирает стандартный хэдер и футер, чтобы можно было задать свои
SuppressRules
– убирает горизонтальные линии разметки
SuppressDescription, SuppressLastModified, SuppressSize
– убирают соответственно колонки описания файла, даты его модификации и размера
IconHeight=16
– высота иконки файла
IconWidth=16
– ширина иконки файла
IconsAreLinks
– иконки имеют ссылку на файл
3. Сортировка по названию файла, по алфавиту.
4 и 5. Название файлов с кодом для хэдера и футера.
6. Исключение из списка файлов по имени и по маске.
DefaultIcon /icons/bullet_black.png AddIcon /icons/folder.png ^^DIRECTORY^^ AddIcon /icons/bullet_arrow_up.png .. AddIcon /icons/deb16.png .deb AddIcon /icons/book_open.png .pdf AddIcon /icons/page_white_word.png .txt .doc .rtf .log .asc AddIcon /icons/picture.png .jpg .jpeg .jpe .png .gif .mpg .ico .psd AddIcon /icons/music.png .mp3 .wav .vox .wma .ra .ram .ogg .vqf .aac AddIcon /icons/film.png .mov .avi .wmv .mpeg AddIcon /icons/html.png .html .htm .shtm .shtml AddIcon /icons/xhtml.png .xhtml AddIcon /icons/css.png .css AddIcon /icons/script.png .php
Присвоение иконок переходу на уровень выше, каталогам и разным форматам файлов. Иконки для многих типов можно взять из набора SILK . Пано из всех SILK иконок (1 мб) для быстрого выбора.
AddDescription "[Go Back..]" .. AddDescription "Music/Sound File" .mp3 AddDescription "
Play as a God of a tribe and defeat your enemies!
" AncientWar.deb AddDescription "Bash.Org.Ru Viewer
" BashOr.deb AddDescription "Fun spelling game!
" BeeSpelled.deb AddDescription "DEB package
" .debПрисвоение описания конкретным файлам, каталогам и отдельным форматам файлов.
Создание страницы и стилей для списка файлов
Обычные страницы с разметкой XHTML и SSI вставкой текущего пути.
dirlist_header.shtml
Location:
dirlist_footer.shtml
AppDB 2009-2015
All Rights Reserved