Мне нужно отсортировать скрипт галереи php jquery по алфавиту - PullRequest
0 голосов
/ 18 января 2010

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

Ответы [ 4 ]

1 голос
/ 18 января 2010

Попробуйте использовать glob вместо opendir, что-то вроде:

$i=0;
foreach (glob($directory.'/*.{jpg,jpeg,png,gif}', GLOB_BRACE) as $file){
    if($file=='.' || $file == '..') continue;
    $file_parts = explode('.',$file);
    $ext = strtolower(array_pop($file_parts));
    $title = basename($file);
    $title = htmlspecialchars($title);
    $nomargin='';
    if(($i+1)%4==0) $nomargin='nomargin';
    echo '
    <div class="pic '.$nomargin.'" style="background:url('.$file.') no-repeat 50% 50%;">
    <a href="'.$file.'" title="Panoramic Stills taken at '.$title.'°" rel="pan1" target="_blank">'.$title.'</a>
    </div>';
    $i++;
}

Glob должен возвращать отсортированный список файлов.

РЕДАКТИРОВАТЬ: Спасибо Дугу Нейнеру зачаевые;)

0 голосов
/ 11 марта 2013

@ Habicht Код работает нормально, но соответствующие миниатюры больше не работают, так как ссылка на каталог миниатюр удалена:

Итак, я попытался так:

$i=0;
foreach (glob($directory.'/*.{jpg,jpeg,png,gif}', GLOB_BRACE) as $file)
{
  foreach (glob($thumbs_directory.'/*.{jpg,jpeg,png,gif}', GLOB_BRACE) as $file2)
  {
     if($file=='.' || $file == '..') continue;
     $file_parts = explode('.',$file);
     $ext = strtolower(array_pop($file_parts));
     $title = basename($file);
     $title = htmlspecialchars($title);
     $title = str_replace("_"," ",$title);
     $nomargin='';
     if(($i+1)%4==0) $nomargin='nomargin';
     echo '<div class="pic '.$nomargin.'" style="background:url('.$file2.') no-repeat 50% 50%;">
       <a href="'.$file.'" title="'.$title.'" target="_blank">'.$title.'</a>
     </div>';
     $i++;
  }
}

Эскизы работают нормально, но эталонное изображение всегда одинаково для любого эскиза - первого файла изображения в каталоге $. Я уверен, что есть какой-то другой способ объединить эти операторы foreach, чтобы исправить все сразу.

0 голосов
/ 18 января 2010

Вероятно, проще всего поместить значения из файлов в массив, а затем отсортировать массив перед выводом его на страницу.

0 голосов
/ 18 января 2010

добавить строку сортировки, как указано ниже

$file_parts = explode('.',$file);
sort($file_parts) or die("sorting failed");
$ext = strtolower(array_pop($file_parts));
...