Вы можете хранить URL-адреса и заголовки в массиве (или получить его из базы данных). Затем вы можете выполнить итерацию по ней внутри функции и рассчитать предыдущую / следующую страницу внутри другой функции. Вы можете использовать, например, переменную $_SERVER['REQUEST_URI']
, чтобы выяснить, какая страница была запрошена.
<?php
function navigation() // just not to spam namespace with variables
{
$pages = // you can fetch this from database as well
[
[ 'url' => '/demo/some-page.php' , 'title' => 'some page' ],
[ 'url' => '/demo/another-page.php' , 'title' => 'another page' ],
[ 'url' => '/demo/yet-another-page.php', 'title' => 'yet another page' ],
[ 'url' => '/demo/last-page.php' , 'title' => 'last page' ],
];
$index = array_search($_SERVER['REQUEST_URI'], array_column($pages, 'url'));
$nav_list = function() use ($pages, $index)
{
?>
<ul>
<?php
foreach ($pages as $k => $v)
{
?>
<li> <a class="<?= $index === $k ? 'active':'' ?>" href="<?= $v['url']?>"><?= $v['title']?></a> </li>
<?php
}
?>
</ul>
<?php
};
$prev_next = function() use($pages, $index)
{
if(false !== $index)
{
if($index > 0)
{
$v = $pages[$index - 1];
?>
<a class="buttonprev" href="<?=$v['url']?>"><?=$v['title']?></a>
<?php
}
if($index < count($pages) - 1)
{
$v = $pages[$index + 1];
?>
<a class="buttonnext" href="<?=$v['url']?>"><?=$v['title']?></a>
<?php
}
}
};
return [$nav_list, $prev_next];
}
[$nav_list, $prev_next] = navigation();
В вашем жестко запрограммированном файле страницы вы просто включаете его и вызываете функции:
<?php
require_once 'nav.php';
$nav_list();
$prev_next();