Jump to main content Jump to doc navigation

Сниппет GalleryItemPagination

Сниппет GalleryItemPagination задаёт плейсхолдеры для базовой навигации (previous, next) при выводе одного элемента Gallery через GalleryItem.

Свойства

GalleryItemPagination использует следующие свойства:

Name Description default value
curItem ID текущего изображения. Можно переопределить URL-параметром. 1, or an url parameter
checkForRequestVar Переопределять ли curItem URL-параметром из getParam 1
getParam URL-параметр для checkForRequestVar galItem
album ID или имя альбома 1
checkForRequestAlbumVar Переопределять ли album URL-параметром из albumRequestVar 1
albumRequestVar URL-параметр для checkForRequestAlbumVar galAlbum

Плейсхолдеры

GalleryItemPagination задаёт плейсхолдеры для текущего, предыдущего, следующего, первого и последнего элемента альбома. Пространства имён в таблице ниже. Можно использовать те же поля, что у плейсхолдеров GalleryItem, кроме album и tags.

Name Description
galitem.cur.* Пространство имён текущего элемента альбома
galitem.prev.* Пространство имён предыдущего элемента альбома
galitem.next.* Пространство имён следующего элемента альбома
galitem.first.* Пространство имён первого элемента альбома
galitem.last.* Пространство имён последнего элемента альбома

Примеры плейсхолдеров

Ниже частые плейсхолдеры GalleryItemPagination для tpl или ресурса.

Name Description
galitem.cur.id Плейсхолдер ID текущего элемента альбома
galitem.prev.id Плейсхолдер ID предыдущего элемента альбома
galitem.next.id Плейсхолдер ID следующего элемента альбома
galitem.first.id Плейсхолдер ID первого элемента альбома
galitem.last.id Плейсхолдер ID последнего элемента альбома
galitem.next.filename Имя файла следующего элемента
galitem.cur.description Описание текущего элемента

Примеры GalleryItemPagination

Базовая навигация для элемента GalleryItem с плейсхолдерами previous и next.

Создайте сниппет «GalleryItemPagination»

Сначала создайте сниппет. Назовите его «GalleryItemPagination» и сохраните.

<?php
// First instantiate the Gallery package
$modx->addPackage('gallery',$modx->getOption('gallery.core_path',$config,$modx->getOption('core_path').'components/gallery/').'model/');
$curItem = $modx->getOption('curItem',$scriptProperties,1);
if ($modx->getOption('checkForRequestVar',$scriptProperties,true)) {
    $getParam = $modx->getOption('getParam',$scriptProperties,'galItem');
    if (!empty($_REQUEST[$getParam])) { $curItem = (int)$_REQUEST[$getParam]; }
}
if (empty($curItem)) return '';
$album = $modx->getOption('album',$scriptProperties,1);
if ($modx->getOption('checkForRequestAlbumVar',$scriptProperties,true)) {
    $albumRequestVar = $modx->getOption('albumRequestVar',$scriptProperties,'galAlbum');
    if (!empty($_REQUEST[$albumRequestVar])) $album = $_REQUEST[$albumRequestVar];
}
// We pass the album name/ID to an &album property and find the gallery object
if (!is_int($album)) {
    $gallery = $modx->getObject('galAlbum',array('name' => $album));
    if ($gallery instanceof galAlbum)
        $album = $gallery->get('id');
}
$c = $modx->newQuery('galAlbumItem');
$c->innerJoin('galItem','Item');
$c->where(
    array(
        'album' => $album,
    )
);
$c->select(
    array(
        'galAlbumItem.*',
        'Item.*',
    )
);
$c->sortby('rank','asc');
$collection = $modx->getCollection('galAlbumItem',$c);
$items = array();
foreach ($collection as $i) {
    $items[] = $i->toArray();
}
$continue = true;
$i = 0; $prev = array(); $cur = array(); $next = array();
while ($continue) {
    $prev = $cur;
    $cur = $items[$i];
    if ($cur['id'] == $curItem) {
        $next = $items[$i+1];
        $continue = false;
    }
    $i++;
}
$first = $items[0];
$last = $items[count($items)-1];
$phs['galitem.cur.'] = $cur;
$phs['galitem.prev.'] = $prev;
$phs['galitem.next.'] = $next;
$phs['galitem.first.'] = $first;
$phs['galitem.last.'] = $last;
$modx->setPlaceholders($phs);
return '';

Настройте плейсхолдеры навигации:

[[!GalleryItemPagination? &album=`1`]]
[[!If? &subject=`[[!+galitem.prev.id]]`&operator=`isnotempty` &then=`
<a id="previmg" href="[[++site_url]]?id=[[*id]]&galItem=[[!+galitem.prev.id]]&galAlbum=1&galTag=">previous image</a>`]]
[[!If? &subject=`[[!+galitem.next.id]]`&operator=`isnotempty` &then=`
<a id="nextimg" href="[[++site_url]]?id=[[*id]]&galItem=[[!+galitem.next.id]]&galAlbum=1&galTag=">next image</a>`]]
`]]

Смотрите также

  1. Gallery.Gallery
    1. Gallery.Gallery.containerTpl
    2. Gallery.Gallery.thumbTpl
  2. Gallery.GalleryAlbums
    1. Gallery.GalleryAlbums.containerTpl
    2. Gallery.GalleryAlbums.rowTpl
  3. Gallery.GalleryItem
    1. Gallery.GalleryItem.albumTpl
    2. Gallery.GalleryItem.GalleryItemPagination
    3. Gallery.GalleryItem.tagTpl
    4. Gallery.GalleryItem.tpl
  4. Gallery.Plugins
    1. Gallery.Plugins.Galleriffic
    2. Gallery.Plugins.Slimbox
  5. Gallery.Setting Up Your Gallery
  6. Gallery.Example1
  7. Gallery.Setting Up the GalleryItem TV

Support the team building MODX with a monthly donation.

The budget raised through OpenCollective is transparent, including payouts, and any contributor can apply to be paid for their work on MODX.

Backers

  • modmore
  • STERC
  • Digital Penguin
  • Jens Wittmann – Gestaltung & Entwicklung
  • CrewMark
  • Fabian Christen
  • Sepia River Studios
  • Dannevang Digital
  • Alex
  • A. Moreno
  • Chris Fickling
  • Stéphane Jäggi
  • Murray Wood
  • Anton Tarasov
  • deJaya
  • JT Skaggs
  • Lefthandmedia
  • eydolan
  • Following Sea
  • Guido Gallenkamp
  • YJ
  • Raffy
  • Snow Creative
  • Nick Clark
  • Guest
  • Helen
  • krisznet
  • Yanni
  • Richard

Budget

$204 per month—let's make that $500!

Learn more