FlatPress.info

Information & blog

ブログは、最新記事(最新エントリー)を日付の浅い順に一覧表示する機能があります。FlatPress にも同様にある訳ですが、二つの使いづらい部分を感じます。

  1. 表示数が10個に限定されていて、その設定変更項目が「管理エリア」にない。(設定可能に改良する)
  2. 表示数が10個を超えると、スクロール機能を付加しないと表示面積を潰してしまう。(スクロール可能に改良する)

「管理エリア」で最新記事の表示数を設定可能にする

まず、オリジナルの表示を確認しておきます。このように10個表示の固定になっています。

LE-1-lastentries-before

この表示数を自由に設定するためには、もとより管理画面に入力項目を付けなくてはなりません。「管理エリア」の「設定」で現時点での「一般項目の設定」を見ると、下のようですから、これを真似して付け加えればよいと思います。

この画面で設定動作を引き受けているところを改良してみます。(maxcontents が設定パラメータの変数名です)

/fp-interface/lang/en-us/lang.admin.config.php (array('maxcontents', 'maxcontents', 'isInt', false, false, 'trim'),)の追加です。これは設定データを引っ張ってくる部分ですね。

    class admin_config_default extends AdminPanelActionValidated {

        var $validators = array(
            // not needed anymore !
            // array('blog_root', 'blog_root', 'notEmpty', false, false, 'trim'),
            array('www', 'www', 'notEmpty', false, false, 'trim'),
            // ...
            array('title', 'title', 'notEmpty', false, false, 'trim'),
            //array('subtitle', 'subtitle', 'notEmpty', false, false, 'trim'),
            //array('blogfooter', 'blogfooter', 'notEmpty', false, false, 'trim'),
            array('email', 'email', 'isEmail', false, false, 'trim'),
            array('maxentries', 'maxentries', 'isInt', false, false, 'trim'),
            // FlatPress 2014-8-18
            array('maxcontents', 'maxcontents', 'isInt', false, false, 'trim'),

            array('timeoffset', 'timeoffset', 'isNumber', false, false, 'trim'),
            array('timeformat', 'timeformat', 'notEmpty', false, false, 'trim'),
            array('dateformat', 'dateformat', 'notEmpty', false, false, 'trim'),

 それともう一つ、設定データを格納する部分です。('maxcontents' => $_POST['maxcontents'],)

                'email' => $_POST['email'],
                'startpage' => ($_POST['startpage'] == ':NULL:')? null : $_POST['startpage'],
                'maxentries' => $_POST['maxentries'],
                // FlatPress.info 2014-8-18
                'maxcontents' => $_POST['maxcontents'],
                // 'voting' => $_POST['voting'],

 それと、初期設定を準備しておくところも対応が必要です。

 

/flatpress.world/fp-defaults/settings-defaults.php

/flatpress.world/fp-content/config/settings.conf.php

 の二つあるのですが、その明確な違いは把握していないのですが、設定値を用意しておけばいいのではないでしょうかね。

<?php

$fp_config = array (
  'general' =>
  array (
    'www' => 'http://localhost',
    'title' => 'FlatPress',
    'subtitle' => 'My FlatPress blog',
    'footer' => '',
    'author' => 'FlatPress Team',
    'email' => 'このメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。',
    'startpage' => NULL,
    'maxentries' => '5',
    'maxcontents' => '15',
    'notify' => true,
    'theme' => 'leggero',
    'style' => 'leggero',
    'blogid' => 'fpdefid',
    'charset' => 'utf-8',
  ),

 

<?php

$fp_config = array (
  'general' =>
  array (
    'www' => 'http://www.flatpress.world/',
    'title' => 'FlatPress',
    'subtitle' => 'My FlatPress blog',
    'footer' => '',
    'author' => 'flatpress',
    'email' => 'このメールアドレスはスパムボットから保護されています。閲覧するにはJavaScriptを有効にする必要があります。',
    'startpage' => NULL,
    'maxentries' => '5',
    'maxcontents' => '50',
    'notify' => true,
    'theme' => 'leggero',
    'style' => 'leggero',
    'blogid' => 'fp-bde8f0e2',
    'charset' => 'utf-8',
  ),

 テンプレート部分はこのようにしてみました。

/flatpress.world/admin/panels/config/admin.config.tpl

<!-- FlatPress.info 2014-8-18 -->
    <dt><label for="maxcontents"> {$panelstrings.blogmaxcontents} </label></dt>
    <dd><input type="text" name="maxcontents" id="maxcontents"
    class="smalltextinput{$error.maxcontents|notempty:" field-error"}" value="{$flatpress.maxcontents}" /></dd>

それと表示するときに動作するプログラム部分も加筆しておきます。
/fp-plugins/plugin.lastentries.php ( global $fp_config; global $smarty; を書き忘れないようにしてくださいね。)

 
 /* FlatPress.info 2014-8-18 */
    /*  $num = 10; */
    $num = intval($fp_config['general']['maxcontents']);

function plugin_lastentries_widget() {

    global $fpdb;
    // FlatPress.info 2014-8-18
    global $fp_config;
    global $smarty;

 

 以上の変更によって、下の二つで比較すると分かるように「表示する最近の記事数」が自由に設定できるようになりました。

LE-2-setting-1

LE-4-setting-3


 

 使われているテンプレートを探したのですがこれは無いようでした。プログラムのみで吐き出していて、この改造直後のテストでは、まさに例えば50記事を指定すると、笑っちゃう表示になりましたね。

LE-5-lastentries-middle

最新エントリーをスクロール表示されるようにする

プログラムのみで吐き出している状況なので、HTMLタグに スクロール表示をさせるような class を追加してあげればいいでしょうから、1行の "id=scroll_lastentry"のみを追加してスタイルファイルも対応させておきました。

/fp-plugins/plugin.lastentries.php

    /* FlatPress.info 2014-8-18 */
    /*  $string = '<ul>'; */
    $string = '<dl id=scroll_lastentry><ul>';

 /fp-interface/themes/leggero/flatmaas-rev/res/common.css

dl#scroll_lastentry {
    width: 18em;
    padding: 2px;
    margin-top: -0.7em;
    margin-left: -0.5em;
    height: 10em;
    border: 1px solid #eee;
    overflow: auto;
}

 完成した任意の最新エントリー数を表示できる画面の様子

さてさて、完成しました。この様子をお見せいたします。

LE-6-lastentries-after

FlatPess 記事

Copyright c  flatpress.info 2015. All Rights Reserved.