2016-02-07 3 views
1

Итак, я пытаюсь улучшить галереи изображений, которые я использую на своем сайте, с помощью PHP, если у вас появится следующая/предыдущая ссылка под описанием изображения, но я не уверен, как чтобы страница знала, что будет дальше в списке изображений. Я в настоящее время имеют свои страницы изображения хранятся в массивах, как это:Попытка сделать галерею изображений

$icoFanSprites = array(
    "Dust", 
    "Glados", 
    "Mario", 
    "Megaman", 
    "PortalTurret", 
    "PortalCubes" 
); 

И это код, который помещает ссылки в ряд на странице списка изображений:

function generateIcons($items, $prefix){ 
    foreach($items as $it){ 
     echo "<a href=\"" . $prefix . $it . ".php\"><img class=\"sprite\" src=\"img/ico" . $it . ".png\" /></a>"; 
    }; 
}; 

Он работает, принимая характер имя и добавьте его в ссылку с «ico», добавляемую к значкам, и $ prefix, добавляемый к фактическому имени страницы изображения (поскольку я использую «spr» для спрайтов, «dd» для цифровых рисунков и т. д.).

Моя проблема приходит в навигационную часть. Я не знаю, как сообщить PHP, где в массиве страниц находится пользователь. Я думал об использовании файла cookie, который помнил, где они были основаны на том, где они нажали, но потом я подумал, что произойдет, если у них отключены файлы cookie? Как еще я мог бы передавать данные между страницами?

В моем учебнике по Squirrel я просто поместил это число в генератор навигации напрямую, но это потому, что я использовал простой нумерованный список. Мои галереи изображений сортируются в личные вещи, фан-арт и заказываемое искусство, а также мои публичные активы разделяются на типы. У меня есть несколько массивов для каждого типа, так что generateIcons() не помещает неправильное количество изображений в одну строку. Однако массив навигации состоит из разделов, объединенных в один массив, с использованием array_merge(), поэтому я не всегда знаю, где изображение будет лежать на объединенном массиве, и даже если бы я это сделал, это на самом деле означало бы еще большее редактирование для меня делать каждый раз, когда я добавляю изображение.

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

Мой сайт http://www.kelvinshadewing.net, если кто-нибудь захочет посмотреть, как он выглядит в настоящее время.

+0

При условии, что на каждой странице изображения появится массив '$ icoFanSprites' и переменная '$ it' представляет текущее изображение. Не могли бы вы использовать что-то вроде '$ pos = array_search ($ it, $ icoFanSprites)' для возврата индекса массива? Затем вы можете сделать свои ссылки что-то вроде '$ pos + 1' и' $ pos-1'. – WheatBeak

+0

Подождите, что это будет? Переменная будет удалена, как только вы покинете страницу. Вот в чем моя проблема; Мне нужен способ переноса данных с страницы на другую без использования файлов cookie. –

+0

Зачем вам переносить данные на следующую страницу?Я думал, вы сказали, что вам просто нужно знать, где находится пользователь. Возможно, я не совсем понял, что вы пытаетесь сделать. Если вы используете 'array_search()', как подробно объяснил DanielM, вы сможете получить ключ от того, какое изображение было следующим в списке. Например, если пользователь был на «Марио», который является '$ icoFanSprites [2]' У вас будет переменная '$ pos', которая будет равна 2. Тогда ваша кнопка Next будет выглядеть примерно так:' Next', которая приведет пользователя к Megaman.php – WheatBeak

ответ

1

Это, как правило, легче сделать это думает, что с индексом, и хранить индекс на странице или в URL, однако ...

Вы могли бы сделать array_search(), а затем проверить на наличие предыдущей и следующие ключи.

$icoFanSprites = array(
    "Dust", 
    "Glados", 
    "Mario", 
    "Megaman", 
    "PortalTurret", 
    "PortalCubes" 
); 

$current = 'Mario'; // Or wherever you would get this from. 
$previous = null; 
$next = null; 

$index = array_search($current, $icoFanSprites); 
if($index === false) { // Exactly equal, as value could be 0 
    // Handle the case where the sprite isn't in the list 
} 
if(array_key_exists($index - 1, $icoFanSprites) { 
    $previous = $icoFanSprites[$index - 1]; 
} 
if(array_key_exists($index + 1, $icoFanSprites) { 
    $next = $icoFanSprites[$index + 1]; 
} 

В качестве альтернативы, вы могли бы сделать что-то вроде http://www.kelvinshadewing.net/sprite.php страницы. Затем используйте параметр url для отслеживания отображаемой информации. Например:

sprite.php   // <- index (eg this: http://www.kelvinshadewing.net/artPixel.php) 
sprite.php?sprite=1 // <- Dust 
sprite.php?sprite=2 // <- Glados 
etc 

Значения sprite в URL можно получить из $_GET глобального массива, то есть: $_GET['sprite']. Если вы предпочитаете, чтобы значения URL были немного более информативными, вы могли бы объединить это с приведенным выше кодом, чтобы вы могли определить индекс из: sprite.php?sprite=Mario

+0

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

+0

Я полагаю, что это имеет смысл, он должен знать, какая страница обсуждается. Попробуйте это: http://stackoverflow.com/questions/17091586/adding-tracking-parameter-is-treating-url-as-differnt Я не уверен, как вы конвертируете и сохраняете старые обсуждения. – DanielM

+1

Как я пропустил это? Это все исправляет! Огромное спасибо! –

Смежные вопросы