get('MarkupPagerNav'); * #pw-summary-options-methods Specific to setting certain options that are typically set automatically. Not necessary to use these unless for a specific purpose. * * #pw-body = * This module can create pagination for a `PageArray` or any other kind of `PaginatedArray` type. * Below is an example of creating pagination for a PageArray returned from `$pages->find()`. * ~~~~~ * // $items can be PageArray or any other kind of PaginatedArray type * $items = $pages->find("id>0, limit=10"); // replace id>0 with your selector * if($items->count()) { * $pager = $modules->get("MarkupPagerNav"); * echo ""; * echo $pager->render($items); // render the pagination navigation * } else { * echo "

Sorry there were no items found

"; * } * ~~~~~ * Here’s a shortcut alternative that you can use for PageArray types (thanks to the `MarkupPageArray` module). * Note that in this case, it’s not necessary to load the MarkupPagerNav module yourself: * ~~~~~ * $items = $pages->find("id>0, limit=10"); // replace id>0 with your selector * if($items->count()) { * echo ""; * echo $items->renderPager(); // render the pagination navigation * } else { * echo "

Sorry there were no items found

"; * } * ~~~~~ * It’s common to specify different markup and/or classes specific to the need when rendering * pagination. This is done by providing an `$options` array to the `MarkupPagerNav::render()` call. * In the example below, we'll specify Uikit markup rather then the default markup: * ~~~~~ * // Change options for Uikit "uk-pagination" navigation * $options = array( * 'numPageLinks' => 5, * 'listClass' => 'uk-pagination', * 'linkMarkup' => "{out}", * 'currentItemClass' => 'uk-active', * 'separatorItemLabel' => '', * 'separatorItemClass' => 'uk-disabled', * 'currentLinkMarkup' => "{out}" * 'nextItemLabel' => '', * 'previousItemLabel' => '', * 'nextItemClass' => '', // blank out classes irrelevant to Uikit * 'previousItemClass' => '', * 'lastItemClass' => '', * ); * * $items = $pages->find("id>0, limit=10"); // replace id>0 with your selector * * if($items->count()) { * $pager = $modules->get('MarkupPagerNav'); * echo ""; * echo $pager->render($items, $options); // provide the $options array * } else { * echo "

Sorry there were no items found

"; * } * ~~~~~ * The full list of options can be seen below. Please note that most options are set automatically since this module can * determine most of the needed information directly from the WireArray that it’s given. As a result, it’s often * not necessary to change any of the default options unless you want to change the markup and/or classes used in output. * #pw-body * * @property int $numPageLinks The number of links that the pagination navigation should have, minimum 5 (default=10). #pw-group-general-options * @property array $getVars GET vars that should appear in the pagination, or leave empty and populate $input->whitelist (recommended). #pw-group-general-options * @property string $baseUrl The base URL from which the navigation item links will start (default=''). #pw-group-general-options * @property null|Page $page The current Page, or leave NULL to autodetect. #pw-group-general-options * @property string $listMarkup List container markup. Place {out} where you want the individual items rendered and {class} where you want the list class (default=""). #pw-group-markup-options * @property string $listClass The class name to use in the $listMarkup (default='MarkupPageNav'). #pw-group-class-options * @property string $itemMarkup List item markup. Place {class} for item class (required), and {out} for item content. (default="
  • {out}
  • "). #pw-group-markup-options * @property string $linkMarkup Link markup. Place {url} for href attribute, and {out} for label content. (default="{out}"). #pw-group-markup-options * @property string $currentLinkMarkup Link markup for current page. Place {url} for href attribute and {out} for label content. (default="{out}"). #pw-group-markup-options * @property string $nextItemLabel label used for the 'Next' button (default='Next'). #pw-group-label-options * @property string $previousItemLabel label used for the 'Previous' button (default='Prev'). #pw-group-label-options * @property string $separatorItemMarkup Markup to use for the "..." separator item, or NULL to use $itemMarkup (default=NULL). #pw-group-markup-options * @property string $separatorItemLabel label used in the separator item (default='…'). #pw-group-label-options * @property string $separatorItemClass Class for separator item (default='MarkupPagerNavSeparator'). #pw-group-class-options * @property string $firstItemClass Class for first item (default='MarkupPagerNavFirst'). #pw-group-class-options * @property string $firstNumberItemClass Class for first numbered item (default='MarkupPagerNavFirstNum'). #pw-group-class-options * @property string $nextItemClass Class for next item (default='MarkupPagerNavNext'). #pw-group-class-options * @property string $previousItemClass Class for previous item (default='MarkupPagerNavPrevious'). #pw-group-class-options * @property string $lastItemClass Class for last item (default='MarkupPagerNavLast'). #pw-group-class-options * @property string $lastNumberItemClass Class for last numbered item (default='MarkupPagerNavLastNum'). #pw-group-class-options * @property string $currentItemClass Class for current item (default='MarkupPagerNavOn'). #pw-group-class-options * @property string $listAriaLabel Label announcing pagination to screen readers (default='Pagination links'). #pw-group-label-options * @property string $itemAriaLabel Label announcing page number to screen readers (default='Page {n}'). #pw-group-label-options * @property string $currentItemAriaLabel Label announcing current page to screen readers (default='Page {n}, current page'). #pw-group-label-options * @property-write bool $arrayToCSV When arrays are present in getVars, they will be translated to CSV strings in the queryString "?var=a,b,c". If set to false, then arrays will be kept in traditional format: "?var[]=a&var[]=b&var=c". (default=true) #pw-group-other-options * @property int $totalItems Get total number of items to paginate (set automatically). #pw-group-other-options * @property-read int $itemsPerPage Get number of items to display per page (set automatically, pulled from limit=n). #pw-group-other-options * @property int $pageNum Get or set the current page number (1-based, set automatically). #pw-group-other-options * @property string $queryString Get or set query string used in links (set automatically, based on $input->whitelist or getVars array). #pw-group-other-options * @property-read bool $isLastPage Is the current pagination the last? Set automatically after a render() call. #pw-internal * * @method string render(WirePaginatable $items, $options = array()) * */ class MarkupPagerNav extends Wire implements Module { public static function getModuleInfo() { return array( 'title' => 'Pager (Pagination) Navigation', 'summary' => 'Generates markup for pagination navigation', 'version' => 105, 'permanent' => false, 'singular' => false, 'autoload' => false, ); } /** * Options to modify the behavior and output of MarkupPagerNav * * Many of these are set automatically. * */ protected $options = array( // number of links that the pagination navigation should have, minimum 5 (typically 10) 'numPageLinks' => 10, // get vars that should appear in the pagination, or leave empty and populate $input->whitelist (preferred) 'getVars' => array(), // the baseUrl from which the navigiation item links will start 'baseUrl' => '', // the current Page, or leave NULL to autodetect 'page' => null, // List container markup. Place {out} where you want the individual items rendered. 'listMarkup' => "\n", // class attribute for