ユーザ用ツール

サイト用ツール


jarltokyo

差分

このページの2つのバージョン間の差分を表示します。

この比較画面へのリンク

両方とも前のリビジョン前のリビジョン
次のリビジョン
前のリビジョン
jarltokyo [2026/04/24 16:55] Tokyo Adminjarltokyo [2026/06/26 13:15] (現在) Tokyo Admin
行 1: 行 1:
-日本アマチュア無線連盟 JARL 東京都支部( jarltokyo.com です。\\+~~NOCACHE~~ 
 +{{keywords>JARL東京都支部,JARL Tokyo,JARL支部,JARL東京支部}} 
 + 
 + 
 +日本アマチュア無線連盟 JARL東京都支部のサイトです。\\ 
 +ブックマーク・お気に入りは「 JARLTokyo.com お願いします。\\
 最新情報・お知らせは以下よりご覧ください。 最新情報・お知らせは以下よりご覧ください。
  
-{{blog>blog?5&firstseconly&noeditbtn}}+ 
 + 
 +====== 最新情報・お知らせ ====== 
 + 
 + 
 +---- 
 + 
 +<php> 
 +date_default_timezone_set('Asia/Tokyo'); 
 + 
 +$baseDir = '/home/usausa2web/web/www_jarltokyo.com'; 
 +$blogDir = $baseDir . '/data/pages/blog'; 
 +$limit = 10; 
 + 
 +$items = []; 
 + 
 +foreach (glob($blogDir . '/*.txt') as $file) { 
 +    $basename = basename($file, '.txt'); 
 + 
 +    // 対象は YYYYMMDD_slug.txt の記事のみ 
 +    if (!preg_match('/^(\d{4})(\d{2})(\d{2})_(.+)$/', $basename, $m)) { 
 +        continue; 
 +    } 
 + 
 +    $year  = $m[1]; 
 +    $month = $m[2]; 
 +    $day   = $m[3]; 
 + 
 +    $content = file_get_contents($file); 
 +    if ($content === false) { 
 +        continue; 
 +    } 
 + 
 +    // 最初の H1 見出しをタイトルとして取得 
 +    $title = $basename; 
 +    if (preg_match('/^======\s*(.+?)\s*======\s*$/m', $content, $tm)) { 
 +        $title = trim($tm[1]); 
 +    } 
 + 
 +    // 本文抜粋用に不要な記法を除去 
 +    $body = $content; 
 + 
 +    // META 
 +    $body = preg_replace('/~~META:.*?~~/s', '', $body); 
 + 
 +    // 最初のH1タイトル 
 +    $body = preg_replace('/^======.*?======\s*$/m', '', $body); 
 + 
 +    // 既に入っている場合の掲載日行 
 +    $body = preg_replace('/^\/\/掲載:.*?\/\/\s*$/m', '', $body); 
 + 
 +    // その他見出し 
 +    $body = preg_replace('/^={2,6}.*?={2,6}\s*$/m', '', $body); 
 + 
 +    // WRAPブロックは中身ごと削除 
 +    $body = preg_replace('/<WRAP.*?>.*?<\/WRAP>/s', '', $body); 
 + 
 +    // 画像・メディア 
 +    $body = preg_replace('/\{\{.*?\}\}/s', '', $body); 
 + 
 +    // DokuWikiリンク [[url|label]] / [[page]] 
 +    $body = preg_replace('/\[\[(?:[^|\]]+\|)?([^\]]+)\]\]/', '$1', $body); 
 + 
 +    // 表 
 +    $body = preg_replace('/^\^.*$/m', '', $body); 
 +    $body = preg_replace('/^\|.*$/m', '', $body); 
 + 
 +    // 水平線 
 +    $body = preg_replace('/^-{4,}\s*$/m', '', $body); 
 + 
 +    $body = trim($body); 
 + 
 +    // 空行区切りで先頭2段落を抜粋 
 +    $paragraphs = preg_split('/\n\s*\n/', $body); 
 +    $excerptParts = []; 
 + 
 +    foreach ($paragraphs as $p) { 
 +        $p = trim(preg_replace('/\s+/', ' ', $p)); 
 +        if ($p !== '') { 
 +            $excerptParts[] = $p; 
 +        } 
 +        if (count($excerptParts) >= 2) { 
 +            break; 
 +        } 
 +    } 
 + 
 +    $excerpt = implode("\n\n", $excerptParts); 
 + 
 +    // 長すぎる場合は短縮 
 +    if (function_exists('mb_strlen'&& mb_strlen($excerpt, 'UTF-8') > 220) { 
 +        $excerpt = mb_substr($excerpt, 0, 220, 'UTF-8') . '…'; 
 +    } 
 + 
 +    $items[] = [ 
 +        'datekey' => $year . $month . $day, 
 +        'year'    => $year, 
 +        'month'   => $month, 
 +        'day'     => $day, 
 +        'id'      => $basename, 
 +        'title'   => $title, 
 +        'excerpt' => $excerpt, 
 +    ]; 
 +} 
 + 
 +// ファイル名の日付で新しい順 
 +usort($items, function ($a, $b) { 
 +    return strcmp($b['datekey'], $a['datekey']); 
 +}); 
 + 
 +// 最新10件 
 +$items = array_slice($items, 0, $limit); 
 + 
 +foreach ($items as $item) { 
 +    $dateLabel = (int)$item['year'] . '年' . (int)$item['month'] . '月' . (int)$item['day'] . '日'; 
 +    $url = '/blog/' . rawurlencode($item['id']); 
 + 
 +    echo '<article class="jarltokyo-blog-item">'; 
 + 
 +    echo '<div class="jarltokyo-blog-date">'; 
 +    echo htmlspecialchars($dateLabel, ENT_QUOTES, 'UTF-8'); 
 +    echo '</div>'; 
 + 
 +    echo '<h2 class="jarltokyo-blog-title">'; 
 +    echo '<a href="' . htmlspecialchars($url, ENT_QUOTES, 'UTF-8') . '">'; 
 +    echo htmlspecialchars($item['title'], ENT_QUOTES, 'UTF-8'); 
 +    echo '</a>'; 
 +    echo '</h2>'; 
 + 
 +    if ($item['excerpt'] !== '') { 
 +        $paras = explode("\n\n", $item['excerpt']); 
 +        foreach ($paras as $p) { 
 +            echo '<p>' . htmlspecialchars($p, ENT_QUOTES, 'UTF-8') . '</p>'; 
 +        } 
 +    } 
 + 
 +    echo '<p style="text-align:right;">'; 
 +    echo '<a href="' . htmlspecialchars($url, ENT_QUOTES, 'UTF-8') . '">→ 続き...</a>'; 
 +    echo '</p>'; 
 + 
 +    echo '</article>'; 
 +    echo '<hr>'; 
 +
 + 
 +if (empty($items)) { 
 +    echo '<p>記事はありません。</p>'; 
 +
 +</php> 
 + 
 + 
 + 
 + 
 +---- 
 + 
 +[[newblog|新しい記事の投稿]] 
jarltokyo.1777017306.txt.gz · 最終更新: by Tokyo Admin

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki