Phpblock newinfo()
提供: GeeklogJpWiki
[3]管理方法 > 管理者が導入後すぐ試せる簡単カスタマイズ > PHPブロックでブロックをカスタマイズする > 最新情報PHPブロック
最新情報PHPブロック phpblock_newinfo()
- 作者:hiro
- ダウンロード:Geeklog日本公式サイト http://www.geeklog.jp/filemgmt/index.php?id=154
phpblock_newinfoは静的ページPHPの最新記事リストを表示するをPHPブロックとして提供するものです。ブロックに表示させるためタイトル文字を指定文字数(デフォルト24文字)にて丸めます。丸めた場合は末尾が".."となるようになっています。
利用方法
- 管理者ログインしてブロック管理画面を表示します。
- ブロックを新規作成します。
- ブロックのモードを「PHPブロック」にします。
- 「関数」のフォームに、phpblock_newinfoを指定します。
インストール方法
この機能を使う場合には、以下のように/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」を表示しないよう変更
