update sidebar & themes

This commit is contained in:
spleenftw committed 2026-05-29 16:16:12 +02:00
1 parent 25dad8631e
commit 09e003f88a
3 files changed
+58 -17

No files matched your search

+46 -10
View File
@@ -17,23 +17,59 @@
// (Popeye-style) while keeping the other plugins in the right sidebar.
// Mirrors Bludit's own Theme::plugins() loop, but captures the output.
global $plugins;
$sidebarSearchHtml = '';
$sidebarOtherHtml = '';
$sidebarSearchHtml = ''; // search box, rendered under the hero on the homepage
$sidebarItems = array(); // every sidebar plugin, to be sorted into a fixed order
$sidebarIndex = 0;
if (isset($plugins['siteSidebar'])) {
foreach ($plugins['siteSidebar'] as $plugin) {
$out = $plugin->siteSidebar();
if (strpos($out, 'plugin-search') !== false) {
$isSearch = (strpos($out, 'plugin-search') !== false);
$isNav = (strpos($out, 'plugin-navigation') !== false || strpos($out, 'plugin-pages') !== false);
// Fixed sidebar order (lower = higher up). Unknown plugins such as
// the Hit Counter default to 90, i.e. pinned to the bottom.
$priority = 90;
if (strpos($out, 'plugin-about') !== false) $priority = 10; // Blog / About
elseif ($isSearch) $priority = 20; // Search
elseif ($isNav) $priority = 30; // Navigation
elseif (strpos($out, 'plugin-categories') !== false) $priority = 40; // Category
if ($isSearch) {
$sidebarSearchHtml .= $out;
} else {
// Mark the navigation / pages plugin so its list can be
// shuffled client-side (see the script near the body end).
if (strpos($out, 'plugin-navigation') !== false || strpos($out, 'plugin-pages') !== false) {
$out = '<div class="js-random-nav">' . $out . '</div>';
}
$sidebarOtherHtml .= $out;
}
// Mark the navigation / pages plugin so its list can be shuffled
// client-side (see the script near the body end).
if ($isNav) {
$out = '<div class="js-random-nav">' . $out . '</div>';
}
$sidebarItems[] = array(
'priority' => $priority,
'index' => $sidebarIndex++,
'search' => $isSearch,
'html' => $out,
);
}
}
// Stable sort by priority, then original order (PHP < 8 usort isn't stable).
usort($sidebarItems, function ($a, $b) {
if ($a['priority'] === $b['priority']) {
return $a['index'] - $b['index'];
}
return $a['priority'] - $b['priority'];
});
$sidebarFullHtml = ''; // all plugins, ordered (used off the homepage)
$sidebarNoSearchHtml = ''; // same, minus search (used on the homepage)
foreach ($sidebarItems as $item) {
$sidebarFullHtml .= $item['html'];
if (!$item['search']) {
$sidebarNoSearchHtml .= $item['html'];
}
}
// The hero (and the relocated search) only appear on the blog front page.
$heroVisible = ($WHERE_AM_I === 'home' && Paginator::currentPage() == 1);
?>
+6 -2
View File
@@ -36,8 +36,12 @@
<!-- Include CSS Bootstrap ICONS file from Bludit Core -->
<?php echo Theme::cssBootstrapIcons(); ?>
<!-- Include CSS Styles from this theme -->
<?php echo Theme::css('css/style.css'); ?>
<!-- Include CSS Styles from this theme (cache-busted by file mtime) -->
<?php
$styleVersion = @filemtime(THEME_DIR_CSS . 'style.css');
$styleHref = DOMAIN_THEME . 'css/style.css' . ($styleVersion ? '?v=' . $styleVersion : '');
?>
<link rel="stylesheet" type="text/css" href="<?php echo $styleHref; ?>">
<!-- Load Bludit Plugins: Site head -->
<?php Theme::plugins('siteHead'); ?>
+6 -5
View File
@@ -18,13 +18,14 @@
<?php endif ?>
<?php
// On the homepage front page the search box is shown under the hero,
// so only render the remaining sidebar plugins here. Everywhere else
// the sidebar shows the full set (search included).
// Plugins are rendered in a fixed order (see index.php):
// Blog/About > Search > Navigation > Category > … > Hit Counter (bottom)
// On the homepage front page the search box is shown under the hero, so
// it is omitted from the sidebar there.
if ($heroVisible) {
echo $sidebarOtherHtml;
echo $sidebarNoSearchHtml;
} else {
echo $sidebarSearchHtml . $sidebarOtherHtml;
echo $sidebarFullHtml;
}
?>
</aside>