Files
tcms/bl-themes/dark-neon/php/home.php
T
Ty Clifford d149a0bf8f - Fixed the cross-theme blank search issue in [plugin.php](/Users/tyemeclifford/Documents/GH/blog/bl-plugins/search/plugin.php).
The important change: search still intercepts the route early, but 
before themes render it now feeds results through the normal 
home/listing state. That avoids themes going blank when they do not know 
how to render a custom search state.
I also made search safer:
Indexes raw page text instead of fully rendered content.
Uses raw content for excerpts.
Guards the search call so exceptions do not white-screen the page.
Updated Dark Neon so it still detects search pages correctly after this 
compatibility change.
2026-07-03 09:34:49 -04:00

153 lines
6.4 KiB
PHP

<?php
$searchPlugin = pluginActivated('pluginSearch') ? getPlugin('pluginSearch') : false;
$isSearchPage = $searchPlugin && $searchPlugin->getSearchTerm() !== '';
$sidebarHtml = '';
ob_start();
Theme::plugins('siteSidebar');
$sidebarHtml = trim(ob_get_clean());
$socialNetworks = Theme::socialNetworks();
$socialIconMap = array(
'github' => 'github',
'gitlab' => 'gitlab',
'twitter' => 'twitter-x',
'facebook' => 'facebook',
'instagram' => 'instagram',
'codepen' => 'codepen',
'linkedin' => 'linkedin',
'telegram' => 'telegram',
'youtube' => 'youtube',
'dribbble' => 'dribbble'
);
?>
<?php if (!$isSearchPage) : ?>
<section class="neon-hero">
<div class="container">
<div class="hero-panel">
<div class="accent-strip" aria-hidden="true">
<span></span><span></span><span></span><span></span><span></span>
</div>
<div class="hero-copy">
<p class="hero-kicker"><?php echo htmlspecialchars($site->title(), ENT_QUOTES, 'UTF-8'); ?></p>
<h1><?php echo htmlspecialchars($site->slogan() ? $site->slogan() : $site->title(), ENT_QUOTES, 'UTF-8'); ?></h1>
<?php if ($site->description()) : ?>
<p><?php echo htmlspecialchars($site->description(), ENT_QUOTES, 'UTF-8'); ?></p>
<?php endif; ?>
</div>
<?php if ($searchPlugin) : ?>
<form class="hero-search" role="search" onsubmit="return darkNeonSearch('dark-neon-hero-search');">
<label class="sr-only" for="dark-neon-hero-search"><?php echo $L->get('Search'); ?></label>
<i class="bi bi-search" aria-hidden="true"></i>
<input id="dark-neon-hero-search" type="search" placeholder="<?php echo htmlspecialchars($L->get('Search'), ENT_QUOTES, 'UTF-8'); ?>" autocomplete="off">
<button type="submit"><i class="bi bi-arrow-right" aria-hidden="true"></i><span><?php echo $L->get('Search'); ?></span></button>
</form>
<?php endif; ?>
</div>
</div>
</section>
<?php endif; ?>
<section class="content-band">
<div class="container">
<div class="row">
<div class="<?php echo (!empty($sidebarHtml) || !empty($socialNetworks)) ? 'col-lg-8' : 'col-lg-9 mx-auto'; ?>">
<?php if (empty($content)) : ?>
<div class="empty-state">
<i class="bi bi-stars" aria-hidden="true"></i>
<h2><?php $language->p('No pages found'); ?></h2>
</div>
<?php endif; ?>
<div class="post-list">
<?php foreach ($content as $page) : ?>
<article class="neon-post">
<?php Theme::plugins('pageBegin'); ?>
<?php if ($page->coverImage()) : ?>
<a class="post-cover" href="<?php echo $page->permalink(); ?>" aria-label="<?php echo htmlspecialchars($page->title(), ENT_QUOTES, 'UTF-8'); ?>">
<img src="<?php echo $page->coverImage(); ?>" alt="<?php echo htmlspecialchars($page->title(), ENT_QUOTES, 'UTF-8'); ?>" loading="lazy">
</a>
<?php endif; ?>
<div class="post-body">
<div class="post-meta">
<span><i class="bi bi-calendar3" aria-hidden="true"></i><?php echo $page->date(); ?></span>
<span><i class="bi bi-stopwatch" aria-hidden="true"></i><?php echo $page->readingTime(); ?></span>
<?php if ($page->categoryKey()) : ?>
<a href="<?php echo $page->categoryPermalink(); ?>"><i class="bi bi-folder2-open" aria-hidden="true"></i><?php echo htmlspecialchars($page->category(), ENT_QUOTES, 'UTF-8'); ?></a>
<?php endif; ?>
</div>
<h2 class="post-title">
<a href="<?php echo $page->permalink(); ?>"><?php echo htmlspecialchars($page->title(), ENT_QUOTES, 'UTF-8'); ?></a>
</h2>
<?php if ($page->description() && !$isSearchPage) : ?>
<p class="post-description"><?php echo htmlspecialchars($page->description(), ENT_QUOTES, 'UTF-8'); ?></p>
<?php endif; ?>
<div class="post-excerpt">
<?php echo $page->contentBreak(); ?>
</div>
<?php $tagsList = $page->tags(true); ?>
<?php if (!empty($tagsList)) : ?>
<div class="taxonomy-list">
<?php foreach ($tagsList as $tagKey => $tagName) : ?>
<a href="<?php echo DOMAIN_TAGS . $tagKey; ?>"><i class="bi bi-tag" aria-hidden="true"></i><?php echo htmlspecialchars($tagName, ENT_QUOTES, 'UTF-8'); ?></a>
<?php endforeach; ?>
</div>
<?php endif; ?>
<?php if ($page->readMore() || $isSearchPage) : ?>
<a class="read-link" href="<?php echo $page->permalink(); ?>">
<span><?php echo $isSearchPage ? $L->get('Open result') : $L->get('Read more'); ?></span>
<i class="bi bi-arrow-right" aria-hidden="true"></i>
</a>
<?php endif; ?>
</div>
<?php Theme::plugins('pageEnd'); ?>
</article>
<?php endforeach; ?>
</div>
<?php if (Paginator::numberOfPages() > 1) : ?>
<nav class="neon-pagination" aria-label="<?php echo htmlspecialchars($L->get('Page navigation'), ENT_QUOTES, 'UTF-8'); ?>">
<?php if (Paginator::showPrev()) : ?>
<a href="<?php echo htmlspecialchars(Paginator::previousPageUrl(), ENT_QUOTES, 'UTF-8'); ?>"><i class="bi bi-chevron-left" aria-hidden="true"></i><?php echo $L->get('Previous'); ?></a>
<?php endif; ?>
<a href="<?php echo Theme::siteUrl(); ?>"><i class="bi bi-house" aria-hidden="true"></i><?php echo $L->get('Home'); ?></a>
<?php if (Paginator::showNext()) : ?>
<a href="<?php echo htmlspecialchars(Paginator::nextPageUrl(), ENT_QUOTES, 'UTF-8'); ?>"><?php echo $L->get('Next'); ?><i class="bi bi-chevron-right" aria-hidden="true"></i></a>
<?php endif; ?>
</nav>
<?php endif; ?>
</div>
<?php if (!empty($sidebarHtml) || !empty($socialNetworks)) : ?>
<aside class="col-lg-4">
<div class="neon-sidebar">
<?php echo $sidebarHtml; ?>
<?php if (!empty($socialNetworks)) : ?>
<div class="plugin social-panel">
<h2 class="plugin-label"><?php echo $L->get('Connect'); ?></h2>
<div class="plugin-content social-links">
<?php foreach ($socialNetworks as $key => $label) : ?>
<?php $icon = isset($socialIconMap[$key]) ? $socialIconMap[$key] : 'link-45deg'; ?>
<a href="<?php echo htmlspecialchars($site->{$key}(), ENT_QUOTES, 'UTF-8'); ?>" target="_blank" rel="noopener" aria-label="<?php echo htmlspecialchars($label, ENT_QUOTES, 'UTF-8'); ?>">
<i class="bi bi-<?php echo $icon; ?>" aria-hidden="true"></i>
</a>
<?php endforeach; ?>
</div>
</div>
<?php endif; ?>
</div>
</aside>
<?php endif; ?>
</div>
</div>
</section>