Phpblock sitemapmenu()

提供: GeeklogJpWiki

[3]管理方法 > 管理者が導入後すぐ試せる簡単カスタマイズ > PHPブロックでブロックをカスタマイズする > サイトマップメニューPHPブロック

サイトマップメニュー表示PHPブロック phpblock_sitemapmenu()

  • 作者:Ivy
  • ダウンロード:日本語版標準パッケージ(20061121版)に組み込み済み

話題と記事一覧へのリンクを表示して、サイトマップ形式でのメニューを表示します。

利用方法

  1. 管理者ログインしてブロック管理画面を表示します。
  2. ブロックを新規作成します。
  3. ブロックのモードを「PHPブロック」にします。
  4. 「関数」のフォームに、phpblock_sitemapmenuを指定します。
話題と記事一覧PHPブロック


インストール方法

この機能は日本語版標準パッケージ(20061121版)で組み込み済みですが、それ以前のバージョンの場合には、/system/custom/phpblock_sitemapmenu.phpを/system/lib-custom.phpに組み込みます。

/system/lib-custom.php

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

// ディレクトリPHPブロック関数を組み込む
require_once( 'custom/phpblock_sitemapmenu.php' );

/system/custom/phpblock_sitemapmenu.php

<?php

/***
*
* Directory()
*
* Php function to list menu.
* 
* modified 2006/10/19 ivy AT geeklog DOT jp
* modified 2006/10/20 mystral-kk - geeklog AT mystral-kk DOT net
*
**/

function phpblock_sitemapmenu($tid = '', $lst = '') {

	$retval = '<div class="directory">';

	if ($lst == 'topics') {
	    $retval .= phpblock_sitemapmenu_listtopics('all', $tid);
	    $retval .= phpblock_sitemapmenu_navBar($tid);
	} else if ($lst == 'topicsonly') {
	    $retval .= phpblock_sitemapmenu_listtopics('', '');
	} else {
	    $retval .= phpblock_sitemapmenu_listtopics('all', '');
	}
	$retval .= '</div>';

	return $retval;
}

/**
* Displays a list of topics
*
* Lists all the topics and their icons.
*
* @return   string      HTML for the topic list
*
*/

function phpblock_sitemapmenu_listtopics($lst, $tid) {
    global $_CONF, $_TABLES, $_USER;

    $sql = "SELECT tid,topic,imageurl FROM {$_TABLES['topics']}";

    if ($tid != ''){
        $sql .= " WHERE (tid = '{$tid}')";
    }
	
    if(! empty($_USER['uid']) && ($_USER['uid'] > 1)) {
        $tids = DB_getItem($_TABLES['userindex'], 'tids', "uid = '{$_USER['uid']}'" );
        if(! empty($tids)) {
            if ($tid == '') {
                 $sql .= ' WHERE ';
            } else {
				$sql .= ' AND ';
			}
            $sql .= " (tid NOT IN ('" . str_replace(' ', "','", $tids )
                 . "'))" . COM_getPermSQL('AND');
        } else {
            if ($tid != '') {
				$sql .= COM_getPermSQL('AND');
			} else {
				$sql .= COM_getPermSQL();
			}
        }
    } else {
        if ($tid != ''){
			$sql .= COM_getPermSQL('AND');
		} else {
			$sql .= COM_getPermSQL();
		}
    }
    
    if($_CONF['sortmethod'] == 'alpha') {
        $sql .= ' ORDER BY topic ASC';
    } else {
        $sql .= ' ORDER BY sortnum';
    }
    $result = DB_query( $sql );

    $retval = '';
    $sections = new Template($_CONF['path_layout']);

    $sql = "SELECT tid, count(*) AS count FROM {$_TABLES['stories']} "
         . 'WHERE (draft_flag = 0) AND (date <= NOW()) '
         . COM_getPermSQL('AND')
         . ' GROUP BY tid';
    $rcount = DB_query($sql);
    while($C = DB_fetchArray($rcount)) {
        $storycount[$C['tid']] = $C['count'];
    }

    while($A = DB_fetchArray($result)) {
        $topicname = stripslashes($A['topic']);
    	
        $retval .='<div class="nav-title">';
        if (empty($storycount[$A['tid']])) {
			$retval .=$topicname;
        } else {
            $url = $_CONF['site_url'] . '/index.php?topic=' . $A['tid'];
            $retval .= '<a href="' . $url . '">';
            $retval .= $topicname;
//          $retval .=  ' (' . COM_numberFormat ($storycount[$A['tid']]) . ')';
            $retval .=  '</a>';
        }
        $retval .= '</div>';
        
        if ($lst== 'all') {
            $retval .= phpblock_sitemapmenu_liststory($A['tid']);
        }

    }

    return $retval;
}

function phpblock_sitemapmenu_liststory ($tid) {
    global $_CONF, $_TABLES, $LANG_DIR;

    $retval = '';

    $sql = "SELECT sid, title, UNIX_TIMESTAMP(date) AS day" ;
    $sql .= " FROM {$_TABLES['stories']} WHERE (draft_flag = 0) AND (date <= NOW())";
    if ($tid != 'all') {
        $sql .= " AND (tid = '$tid')";
    }
    $sql .= COM_getTopicSql('AND') . COM_getPermSql('AND') ;
    $sql .=  " ORDER BY date DESC";

    $result = DB_query($sql);
    $numrows = DB_numRows($result);

    if ($numrows > 0) {
        $entries = array ();

        for ($i = 0; $i < $numrows; $i ++) {
            $A = DB_fetchArray ($result);
            $url = COM_buildUrl($_CONF['site_url'] . '/article.php?story=' . $A['sid']);
            $entries[] = '<a class="nav-link" href="' . $url . '">'
					   . stripslashes($A['title']) . '</a>';
        }

        if (sizeof($entries) > 0) {
            $retval .= COM_makeList($entries);
        }

    } else {
        $retval .= '<p>' . $LANG_DIR['no_articles'] . '</p>';
    }

    $retval .= LB;
    return $retval;
}

function phpblock_sitemapmenu_navBar($tid) {
    global $_CONF, $_TABLES, $LANG05, $LANG_DIR;

    $retval = '<div class="pagenav">';

    $url = $_CONF['site_url'] . '/index.php';
    $retval .= '<a href="' . $url . '">' . $LANG_DIR['nav_top'] . '</a>';
    $retval .= '</div>' . LB;

    return $retval;
}

?>
個人用ツール