Phpblock newinfo()

提供: GeeklogJpWiki

[3]管理方法 > 管理者が導入後すぐ試せる簡単カスタマイズ > PHPブロックでブロックをカスタマイズする > 最新情報PHPブロック

最新情報PHPブロック phpblock_newinfo()

phpblock_newinfoは静的ページPHPの最新記事リストを表示するをPHPブロックとして提供するものです。ブロックに表示させるためタイトル文字を指定文字数(デフォルト24文字)にて丸めます。丸めた場合は末尾が".."となるようになっています。

利用方法

  1. 管理者ログインしてブロック管理画面を表示します。
  2. ブロックを新規作成します。
  3. ブロックのモードを「PHPブロック」にします。
  4. 「関数」のフォームに、phpblock_newinfoを指定します。
最新情報PHPブロック

インストール方法

この機能を使う場合には、以下のように/system/custom/phpblock_newinfo.phpを作成して、/system/lib-custom.phpに組み込みます。

/system/lib-custom.php

以下の行を追加してプログラムを組み込みます。

// 最新情報PHPブロック関数を組み込む
require_once( 'custom/phpblock_newinfo.php' );


/system/custom/phpblock_newinfo.php

インストールされているGeeklogと同じエンコードでファイルを保存してください。

<?php
// +---------------------------------------------------------------------------+
// | This phpblock NewInfo for Geeklog                                         |
// +---------------------------------------------------------------------------+
// | PHPブロックへ最新記事を表示   phpblock_newinfo.php   Version: 1.0.0       |
// +---------------------------------------------------------------------------+
// | Copyright (C) 2007 by the following authors:                              |
// |                                                                           |
// | Authors: Hiroshi Sakuramoto - hiro AT winkey DOT jp                       |
// |                                                                           |
// +---------------------------------------------------------------------------+
// | Reference: phpblock_lastarticles                                          |
// +---------------------------------------------------------------------------+
// | CSSを使って見た目を若干整える方法例                                       |
// | (custom.cssなどへ以下を追加)                                              |
// |                                                                           |
// | p.newinfo {                                                               |
// |  margin: 0 0 8px 0;                                                       |
// |  padding: 0;                                                              |
// |  font-size: 90%;                                                          |
// | }                                                                         |
// |                                                                           |
// +---------------------------------------------------------------------------+


//  $numrows: 表示件数 (デフォルト5件)
//  $length:  表示するタイトルの文字数 (デフォルト24文字)
//  $trimstr: タイトルを上記文字数で丸めた場合に末尾に付加する文字列(デフォルト"..")
//  $exclude: 表示しない話題 (デフォルトなし) 指定例: array('General','Geeklog'); 
function phpblock_newinfo($numrows=5, $length=24, $trimstr="..", $exclude=null)
{
    global $_CONF, $_TABLES;
    $retval = '';
    
    // SQL
    $exc = count($exclude)>0 ? implode('',preg_replace('/^(.*)$/'," AND s.tid!='$0'",$exclude)) : '';
    
    $sql = "SELECT STRAIGHT_JOIN s.sid, s.tid, s.title, s.date, s.group_id, s.owner_id, ";
    $sql .= "s.perm_owner, s.perm_group, s.perm_members, s.perm_anon, ";
    $sql .= "t.topic, ";
    $sql .= "s.introtext ";
    $sql .= "from {$_TABLES['stories']} as s, {$_TABLES['topics']} as t ";
    $sql .= "WHERE s.title<>'' AND (s.tid = t.tid) AND (s.draft_flag = 0) ". $exc;
    $sql .= " ORDER BY s.date DESC LIMIT " . $numrows;
    
    // Get DB
    $result = DB_query($sql);
    
    // Display title of stories.
    while($A = DB_fetchArray($result)) {
        
        $T_ACCESS=SEC_hasTopicAccess($A['tid']);
        $ACCESS=SEC_hasAccess($A['owner_id'], $A['group_id'] ,$A['perm_owner'] ,$A['perm_group'] ,$A['perm_members'] ,$A['perm_anon']);
        
        // title trim
        $title =  mb_strimwidth($A['title'], 0, $length, $trimstr);
        
        if ($ACCESS>0 AND $T_ACCESS>0) {
            $retval .= '<p class="newinfo"><a href="'.COM_buildUrl($_CONF['site_url'].'/article.php?story='.$A['sid']).'">'.$title."</a></p>\n";
        } else {
            $retval .= '<p class="newinfo">'.$title."</p>\n";
        }
    }
    return $retval;
}

?>

デフォルト動作からの変更方法

ファイル内の以下の部分の値を直接変更します。

function phpblock_newinfo($numrows=5, $length=24, $trimstr="..", $exclude=null)
  • $numrows=10: 表示件数を10件に変更
  • $length=50: 表示するタイトルの文字数を50文字に変更
  • $trimstr="...": 丸めたタイトルの末尾の文字列を"..."に変更
  • $exclude=array('General','Geeklog'): 話題、「General,Geeklog」を表示しないよう変更
個人用ツール