码桶

发现社区成员的开源项目

飞扬 / LB_Down 公开
main
LB_Down/links.php
links.php3 KB
<?php
/**
 * 友链
 *
 * 
 *
 * @package custom
 */

if (!defined('__TYPECHO_ROOT_DIR__')) exit; $this->need('header.php'); ?>
<div class="content-area">
    <article class="page-content">
        <h1 class="page-title links-title"><?php $this->title(); ?></h1>
        <div class="page-content-inner">
                <?php

                

                $raw = strval($this->text);
                $lines = preg_split('/\r\n|\r|\n/', $raw);
                $introLines = [];
                $listLines = [];
                foreach ($lines as $line) {
                    $line = trim($line);
                    if ($line === '' || strpos($line, '#') === 0) continue;
                    if (strpos($line, ',') !== false || strpos($line, '|') !== false) {
                        $listLines[] = $line;
                    } else {
                        $introLines[] = $line;
                    }
                }
                if ($introLines):
                ?>
                <div class="links-intro">
                    <?php foreach ($introLines as $intro): ?>
                    <p><?php echo strpos($intro, '<') === false ? htmlspecialchars($intro) : $intro; ?></p>
                    <?php endforeach; ?>
                </div>
                <?php endif; ?>

                <?php if ($listLines): ?>
                <div class="links-grid">
                <?php foreach ($listLines as $line):
                    $parts = preg_split('/[,|]/u', $line, 3);
                    $name = trim($parts[0] ?? '');
                    $url = trim($parts[1] ?? '');
                    $icon = trim($parts[2] ?? '');
                    if ($name === '' || $url === '') continue;
                    if (!preg_match('#^https?://#i', $url)) $url = 'http://' . $url;
                    $host = parse_url($url, PHP_URL_HOST);
                    if ($icon === '' && $host) {
                        $icon = 'https://' . $host . '/favicon.ico';
                    }
                    $letter = mb_substr($name, 0, 1, 'UTF-8');
                ?>
                    <a class="links-item" href="<?php echo htmlspecialchars($url); ?>" target="_blank" rel="noopener nofollow">
                        <span class="links-item-icon">
                            <?php if ($icon): ?><img src="<?php echo htmlspecialchars($icon); ?>" alt="<?php echo htmlspecialchars($name); ?>" loading="lazy" onerror="this.parentNode.innerHTML='<span class=&quot;links-item-letter&quot;><?php echo htmlspecialchars($letter); ?></span>'"><?php else: ?><span class="links-item-letter"><?php echo htmlspecialchars($letter); ?></span><?php endif; ?>
                        </span>
                        <span class="links-item-name"><?php echo htmlspecialchars($name); ?></span>
                    </a>
                <?php endforeach; ?>
                </div>
                <?php else: ?>
                <div class="links-empty"><?php $this->content(); ?></div>
                <?php endif; ?>
        </div>
    </article>
</div>
<?php $this->need('footer.php'); ?>