Geeklog実験室 Geeklogのテストや改良のためのサイトです    

2010-09-08 00:55
 記事を友人にメールする 印刷用画面 

本文がある場合に「続きを読む」リンクを表示する

lib-story.php 313行目付近に以下のコードを追加する

    else
    {
      //@@@@@ 2007/06/25 added by maruyo -->
      if( !empty( $bodytext )) {
        if( $bodytext != "<br>" && $bodytext !='<br type="_moz" />' && $bodytext != "<br />" ) {
          if( !empty( $_USER['language'] )) {
            $using_language = $_USER['language'];
          } else {
            $using_language = $_CONF['language'];
          }
          $readmore = ( substr($using_language,0,2) == "ja" ) ? "続きを読む..." : "read more...";          $introtext .= "<p style='text-align:left'>"
            . "<a href='" . $articleUrl . "'> >> "
            . $readmore . "</a></p>";
        }
      }
      //@@@@@ 2007/06/25 added by maruyo <--  

        $article->set_var( 'story_introtext', $introtext );
        $article->set_var( 'story_introtext_only', $introtext );
        $article->set_var( 'story_text_no_br', $introtext );

          //@@@@@ 2007/06/25 added by maruyo -->
          if( $bodytext != "<br>" && $bodytext !='<br type="_moz" />' && $bodytext != "<br />" ) {
          //@@@@@ 2007/06/25 added by maruyo <--

            $article->set_var( 'lang_readmore', $LANG01[2] );
            $article->set_var( 'lang_readmore_words', $LANG01[62] );
            $numwords = COM_NumberFormat (sizeof( explode( ' ', strip_tags( $bodytext ))));
            $article->set_var( 'readmore_words', $numwords );

            $article->set_var( 'readmore_link', '<a href="' . $articleUrl
                    . '" class="story-read-more-link">' . $LANG01[2] . '</a> ('
                    . $numwords . ' ' . $LANG01[62] . ') ' );
            $article->set_var( 'start_readmore_anchortag', '<a href="'
                    . $articleUrl . '" class="story-read-more-link">' );            $article->set_var( 'end_readmore_anchortag', '</a>' );
            $article->set_var( 'read_more_class', 'class="story-read-more"' );
          //@@@@@ 2007/06/25 added by maruyo -->
          }
          //@@@@@ 2007/06/25 added by maruyo <--

        }

ちょっと改良。どうやらfckeditor2.5から保存されるコードが違っているらしい。
さらにちょこっと条件を修正。2008-01-24

さらにさらにちょこっと条件を修正。2008-01-25
fckeditorを使った編集の場合<br>タグが追加されるので「全文表示」についても予期せぬ動作をしていることが判明。そしてゲストユーザーなどの場合$_USER['language']が設定されないままになるのでそのあたりにも対応。これで完璧か?!欲を言えばもう少しコードをシンプルにしたい・・・
 記事を友人にメールする 印刷用画面 

ナビゲーションメニューでログインしていない場合は非表示にする(カスタムメニュー編)

Geeklogは仕様でログインしているときのメニューとしていないときのメニューを選択して表示できません。そのためそういう動作をさせようとすると本体の改造が必要になります。以下にその手順を説明します。

標準の状態だと「ログイン/ログアウト」と記事リスト、サイトマップに相当します。これらをログインしている状態のときのみ表示したい場合の改造です。

lib-common.phpを編集します。function COM_renderMenu( &$header, $plugin_menu )内部にある601行目あたりにある
    if( in_array( 'custom', $_CONF['menu_elements'] ))
    {
        $custom_entries = array();
        if(!$anon){
        if( function_exists( 'CUSTOM_menuEntries' ))
        {
            $custom_entries = CUSTOM_menuEntries();        }
        if( sizeof( $custom_entries ) == 0 )
        {
            $key = array_search( 'custom', $_CONF['menu_elements'] );
            unset( $_CONF['menu_elements'][$key] );
        }
        }
    }

赤字部分が追加項目です。これでログインしていない場合は表示されなくなります。この方法だと個別にON/OFFできないので注意してください。

 記事を友人にメールする 印刷用画面 

ナビゲーションメニューでログインしていない場合は非表示にする(プラグイン編)

Geeklogは仕様でログインしているときのメニューとしていないときのメニューを選択して表示できません。そのためそういう動作をさせようとすると本体の改造が必要になります。以下にその手順を説明します。

こちらはログインが必要かどうかに関わらずプラグインのメニューをログインしていない場合に非表示にしてしまう方法です。

標準で提供されるメニューと同じくfunction COM_renderMenu( &$header, $plugin_menu )、lib-common.phpの692行目あたりにあるcase 'plugins':内部を編集します
                    if( !$anon ){
                    if( $last_entry && ( $i == $num_plugins ))
                    {
                        $header->parse( 'menu_elements', 'menuitem_last',
                                        true );
                    }
                    else
                    {
                        $header->parse( 'menu_elements', 'menuitem', true );
                    }
                    $menuCounter++;
                    }
赤字が付け足した箇所。これでログインしていないとプラグインのメニューは「ナビゲーションメニュー」には現れなくなります。ただ、この場合ナビゲーションメニューには表示されなくなりますがブロックメニューまで抑制することはできません。