XPressME Integration Kit Forum

フォーラム

最近の記事内容ブロックの日付による抽出について (11件の投稿)

  1. ky982339
    メンバー
    6ヶ月前の投稿 #

    toemon様

    いつもお世話になります。

    最近の記事ブロックに、日付による記事の抽出機能が付加されましたが、
    こちらの設定による抽出がどうもうまくできません。

    本日(今日だけ)の記事だけを抽出したく、
    まずは、「本日の投稿から0日前までの間」で設定し、
    一度モジュールにアクセスしましたが、
    設定通りの表示にならず、数の指定のみ反映されてしまいます。

    試しに、「本日の投稿から1日前までの間」で設定しましたが、
    やはり記事数のみが効いているようで、日付の指定での抽出が
    できませんでした。

    xpressMEで、「最近の記事内容ブロック」の表示以外に、
    拡張ブロックで「アクセスランキング表示」やカテゴリ指定での
    「サムネイル付記事一覧」などを表示させております。

    よくあることなのですが、
    モジュールのキャッシュの問題かと思い、
    何度かモジュールにアクセスしたり更新したりするのですが、
    なかなか設定が変わらないということがあります。

    しかし、時間が経つと、「アレ?直っている」という
    場面にもよく出くわします。

    今回の「最近の記事内容」の日付指定表示がこのような現象と
    同じかどうかわかりませんが、このように表示されるのに
    時差が生じるということはあるのでしょうか。

    「記事のアクセスランキング」については、
    toemon様より以前ご教授いただきました方法で表示させております。

    ---------------------
    現在のバージョン
    xcl_hd_1.04
    xpressME2.23
    ---------------------

    お気づきの点がございましたら、
    ご指摘願えますでしょうか。

    お手数おかけし誠に恐縮ですが、
    どうぞよろしくお願いいたします。

  2. toemon
    キーマスター
    6ヶ月前の投稿 #

    モジュール外にブロックを配置した場合、ブロックはキャッシュを利用して表示されます。(詳細については「ブロックのキャッシュ」を参照ください。)
    このキャッシュはXPressMEモジュールのトップにアクセスした場合と、投稿の変更、追加、が行われた場合に更新されます。

    従って、抽出範囲を「本日」に設定した場合、このキャッシュ更新が行われた時点の日時をdate()関数で取りだし、その時点から、24時間以内を本日と仮定しています。(カレンダーでの日付という意味ではないということに留意ください。)
    また、比較日付がキャッシュ更新時であることから、リアルタイム性も期待できないことになります。
    極端な話、10日間記事の更新、追加がなく、10日間XPressMEモジュールトップへのアクセスがない場合は、本日というのは10日前のことになってしまいます。

    そういった意味では、本日の投稿というのはあまり意味がなくなってしまうかもしれません。

    リアルタイムに表示したい場合は、XOOPSのカスタムブロックで「カスタム (PHP eval())」タイプのブロックを新規追加して、PHPコードでXOOPS側から直接DB参照するしかなさそうです。
    カスタムブロックへの記述例

    global $xoopsDB,$xoopsUser;
    
    $post_db = 'xdb_xp_trunk_posts';
    $base_url = 'http://localhost/cube/modules/xp_trunk/';
    $post_num =10;
    $disp_day_num = 1;
    
    $myts =& MyTextSanitizer::getInstance();
    $where = "post_status ='publish' AND post_type='post'";
    $date_where = "AND post_date > date_add(now(), interval -$disp_day_num day)";
    
    $sql = "SELECT ID, post_title FROM  $post_db WHERE $where $date_where ORDER BY post_date DESC";
    
    $result = $xoopsDB->query($sql, $post_num, 0);
    while ( $myrow = $xoopsDB->fetcharray($result) ) {
    echo '<a href="' . $base_url . '?p=' . $myrow["ID"] . '">' . $myrow["post_title"] . '</a><br />';
    }

    ($post_dbや$base_urlは環境に合わせて書き換えてください。)

  3. ky982339
    メンバー
    6ヶ月前の投稿 #

    toemon様

    毎度お世話になります。
    カスタムブロックでの記述例も拝見させていただき感謝いたします。

    このキャッシュはXPressMEモジュールのトップにアクセスした場合と、
    投稿の変更、追加、が行われた場合に更新されます。

    「最近の記事内容」ブロックなどについては、
    一度xpressME(WP)のindexにアクセスするか、
    記事更新などを行うことでトップページのブロックも更新されます。

    拡張ブロック(以前ご教授いただきました「記事アクセスランキング」と
    「サムネイル&記事タイトル」の表示
    については、WPのプラグインから抽出している
    ためか、モジュール表示(xpressM)Eとxoopsトップページの表示に時差が生じるようです。

    時差と言っても10分~20分くらいのようです。

    実はこのたび、慣れもしないのにバカなことをやってしまい、
    これらブロック(拡張ブロック)の挙動と、投稿記事内の画像のリンク切れを
    起こしてしまいました。

    どうにも修正できず、こちらのスレッドにて相談させていただくことを
    お許しください。

    何をやってしまったのかと言いますと・・・

    1.xoops特有のURL、“modules"の表示を無くしたいと思う。

    2..htaccessの追加とmainfile.phpのコード追記で、modulesの非表示を試みました。

    ※WPの「パーマリンクの設定」が、http://ドメイン/modules/news/?p=123になっていたので、これをhttp://ドメイン/news/?p=123に。
    (モジュール名はnewsとしております。)

    ※しばらく記事を追加。

    3.うまくいったかなと思ったら、投稿記事内の画像のリンク切れなどが
      見つかったのでもとに戻しました。

    ※.htaccessを削除し、mainfile.phpを元に戻しました

    4.元に戻ったと思ったら、拡張ブロックで表示させている
      「記事アクセスランキング」と「サムネイル&記事タイトル」の表示に不具合が。

    ※「記事アクセスランキング」については、順位を画像で表示させていたのがテキストに。

    ※「サムネイル&記事タイトル」については、サムネイルを引っ張ってこなくなる。(サムネイルが生成されないようです)

    なんとなくではありますが、.htaccessの削除とmainfile.phpについては、
    そのものを削除または以前の状態に戻せば、元の設定に戻ったのだと思います。

    「パーマリンクの設定」を弄ってしまったことによって、
    何かがおかしくなってしまったのではと考えております。
    ※現在はhttp://ドメイン/modules/news/?p=123に戻っております。

    一度、拡張ブロックを削除、「拡張ブロック」にリンクさえているWPのプラグインを
    再インストールしましたが、元に戻りません。

    非常に面倒なご相談で恐縮です。

    何かお気づきの点がございましたら、ご指摘いただけませんでしょうか。

    何卒よろしくお願いいたします。

  4. toemon
    キーマスター
    6ヶ月前の投稿 #

    3.うまくいったかなと思ったら、投稿記事内の画像のリンク切れなどが
      見つかったのでもとに戻しました。

    画像のリンクは
    http://ドメイン/modules/news/wp-content/uploads/**にあるのでしょうか?
    http://ドメイン/uploads/wp-content/uploads/**にあるのでしょうか?

    もし、画像のリンクがhttp://ドメイン/modules/news/下にあるようでしたら

    2..htaccessの追加とmainfile.phpのコード追記で、modulesの非表示を試みました。

    でのRewriteに直接影響を受けているので、
    Rewriteを行えばRewrite前に投稿した記事の画像リンクは切れてしまい、
    また、Rewrite中に投稿した画像のはRewriteを戻したときには、リンク切れになってしまうのではないでしょうか?

  5. ky982339
    メンバー
    6ヶ月前の投稿 #

    toemon様

    大変お世話になります。
    度重なるご相談で申し訳ございません。

    もし、画像のリンクがhttp://ドメイン/modules/news/下にあるようでしたら

    2..htaccessの追加とmainfile.phpのコード追記で、modulesの非表示を試みました。

    でのRewriteに直接影響を受けているので、
    Rewriteを行えばRewrite前に投稿した記事の画像リンクは切れてしまい、
    また、Rewrite中に投稿した画像のはRewriteを戻したときには、
    リンク切れになってしまうのではないでしょうか?

    Rewrite前と削除した後では、
    アップされた画像の保存先が変わってしまっていたので、
    その箇所は修正を行いました。

    今はデフォルトの状態なので投稿記事内での画像表示は
    問題なく行えております。

    ただ、拡張ブロックでの「記事アクセスランキング」と
    「サムネイル&記事タイトル」の表示については一向に修正が効かず、
    (記事タイトルは引っ張ってくるのですが)
    画像(ランキング数字画像の表示・記事画像サムネイル)の表示が
    されなくなってしまいました。

    ちょっと気になった点としましては、
    以下のようなPHPエラーを吐き出しています。
    Notice [PHP]: Undefined variable: form in file modules/news/blocks/enhanced_block.php line 21

    ちなみに、拡張ブロックとして指定しているファイルの内容は以下の通りです。

    ●「記事アクセスランキング」
    wp-content/themes/xpress_default/blocks/my_rank_block.php

    <?php

    if (function_exists('counterize_renderstats_vertical')){

    $number = 5;
    $onedayago = date("Y-m-d", time()-86400);
    $wpdb =& $GLOBALS['wpdb'];

    $sql = "SELECT p.count as amount, p.url as url, p.url as label, p.postID as post_id , COUNT(m.id) as day_count"
    . " FROM " .counterize_logTable(). " m, " . counterize_pageTable(). " p "
    . " WHERE m.pageID = p.pageID and p.postID IS NOT NULL and "
    . " m.timestamp >= '$onedayago'"
    . " GROUP BY p.url "
    . " ORDER BY day_count DESC LIMIT $number";

    $rows = $wpdb->get_results($sql);
    $ranking = 1;
    foreach($rows as $row){
    $ranking_text = $ranking . '位';
    $image_url = 'http://***.com/uploads/ranking_' . $ranking . '.gif';
    $postid = $row->post_id;
    $post_data = get_post($postid);
    $title = $post_data->post_title;
    if (@fclose(@fopen($image_url, "r"))){
    echo '<img src="' . $image_url . '" alt="' . $ranking_text . '"/>';
    }else{
    echo $ranking_text . '' ;
    }
    echo 'url . '" title="'. $title . '">'. $title . '


    ';
    $ranking++;
    }

    } else {
    echo 'not installd Counterize II plugin';
    }
    ?>

    ランキング表示させるための画像(ranking_1.gif・・・ranking_5.gif)は
    http://***.com/uploads/の中に入れております。

    ●「サムネイル&記事タイトル」
    wp-content/themes/xpress_default/blocks/my_thumb_block.php

    <?php
    global $wpdb;
    $show_posts =5;
    $cat_id = '11';
    if (!is_null($wpdb)){
    $wp_query->in_the_loop = true;
    $r = new WP_Query("cat=$cat_id&showposts=$show_posts&what_to_show=posts&nopaging=0&post_status=publish");
    while($r->have_posts()){
    $r->the_post();
    if(function_exists('the_qf_get_thumb_one')){
    echo the_qf_get_thumb_one("num=0&width=60");
    }
    echo '' . the_title('<p style="font-size:10pt">','</p>',false) . '


    ';
    }
    }
    ?>

    プラグインQF-GetThumbの設定は以下のようになっております。

    ・ドメイン名 ***.com
    ・フルドメイン名 http://***.com/
    ・ドキュメントルート /home/***/www/gb2/(←xoopsインストールディレクトリ)
    ・デフォルト画像 http://***.com/modules/news/wp-content/plugins/qf-getthumb/default_image.png
    ・保存フォルダ名 qfgt
    ・接頭句 qfgt

    いかがでしょうか。

  6. ky982339
    メンバー
    6ヶ月前の投稿 #

    追記です。

    新たにサイトを作り、サムネイル表示させるプラグイン「QF-GetThumb」を
    導入してみたところ、リンク切れ以前に、どうもサムネイルの生成が
    されなくなってしまったような感じがします(汗)

    作者さんのサイトも現在見れないようです。

  7. toemon
    キーマスター
    6ヶ月前の投稿 #

    ちょっと気になった点としましては、
    以下のようなPHPエラーを吐き出しています。
    Notice [PHP]: Undefined variable: form in file modules/news/blocks/enhanced_block.php line 21

    の」部分はバグで orz
    /blocks/enhanced_block.phpの21行目

    $form .= _MB_XP2_THISTEMPLATE . "<input type='text' size='50' name='options[1]' id='this_template' value='".htmlspecialchars($this_template,ENT_QUOTES)."' /><br />";

    の部分を削除してください。(チェンジセット521 にて修正させていただきました。)

    ●「記事アクセスランキング」
    http://***.com/uploads/(ranking_1.gif・・・ranking_5.gifとかで直接アクセスしたとき画像が表示されますでしょうか?

    ●「サムネイル&記事タイトル」
    WordPressのバージョンと、QF-GetThumbプラグインのバージョンを教えてください。
    あと、サーバーのsafe modeについても情報お願いいたします。

  8. ky982339
    メンバー
    6ヶ月前の投稿 #

    toemon様

    ●「記事アクセスランキング」
    http://***.com/uploads/(ranking_1.gif・・・ranking_5.gifとかで直接アクセスしたとき画像が表示されますでしょうか?

    http://***.com/uploads/ranking_1.gif…5.gifというように
    直接アクセスした場合は画像は表示されます。

    ●「サムネイル&記事タイトル」
    WordPressのバージョンと、QF-GetThumbプラグインのバージョンを教えてください。
    あと、サーバーのsafe modeについても情報お願いいたします。

    QF-GetThumbプラグインのバージョンは1.1.3です。

    サーバーのsafe modeについては、php.iniの設定かと理解しておりますが、
    php.iniにはまったく設定はありません。

    ちなみにサーバーは、さくらインターネットです。

    あと、IEでページを表示させると、
    サムネイルを引っ張ってくるはずの場所が“四角×”となります。

    たとえばある記事のサムネイルリンクをたどると
    以下の場所にサムネイルを生成しているようなのですが、
    実際には画像が存在しません。

    /home/***/www/gb2/uploads/wp-content/uploads/qfgt/***.com/modules/news/wp-content/uploads/qfgt/60-0x0-0/qfgt__051561654.jpg

    また、新規にサイトを作成し、
    同様に「ランキング」・「サムネイル+タイトル一覧」が
    表示されるか検証してみました。

    http://news-site.from.tv/

    やはりこちらでも、「ランキング」の画像と、
    「サムネイル」画像を引っ張ってこないようです。

    前まではちゃんと表示されていたのですが…(涙)

  9. toemon
    キーマスター
    6ヶ月前の投稿 #

    セーフモードであるかどうかは、
    XPressMEのシステム情報画面で確認できます。

    少なくとも「記事アクセスランキング」の

    if (@fclose(@fopen($image_url, "r"))){
    echo '<img src="' . $image_url . '" alt="' . $ranking_text . '"/>';
    }else{
    echo $ranking_text . '' ;
    }

    の部分はセーフモードの影響を受けます。
    イメージが確実に存在しているのなら、

    echo '<img src="' . $image_url . '" alt="' . $ranking_text . '"/>';

    だけでも良いでしょう。

    QF-GetThumbのほうは
    safe mode が有効になっている場合は、
    php.ini でsafe_mode=Offにするとか(さくらサーバーならphp.ini編集できたと思います)
    だめなら
    fnc_image.php(もしかするとqf-getthumb.php)をCGIで動作させてみるとか

    参考
    セーフモードにより制限を受けるか無効となる関数

  10. ky982339
    メンバー
    6ヶ月前の投稿 #

    toemon様

    php.ini でsafe_mode=Offの設定をしましたところ、
    QF-GetThumb(拡張ブロック)の方で、記事ごとに以下のようなエラーが
    表示されるようになりました。

    Warning: get_headers(http://***.com/modules/news/wp-content/uploads/051561654.jpg) [function.get-headers]: failed to open stream: HTTP request failed! in /home/***/www/gb2/modules/news/wp-content/plugins/qf-getthumb/qf-getthumb.php on line 391

    Warning: array_key_exists() [function.array-key-exists]: The second argument should be either an array or an object in /home/***/www/gb2/modules/news/wp-content/plugins/qf-getthumb/qf-getthumb.php on line 393

    記事タイトル

    「ランキング」の方は、変化ありませんでした。

    ちょっと前までは問題なく表示されていたので、原因として考えられるのは
    modulesを非表示させるために.htaccessやmainfile.phpの設定をしたくらい
    ではありますが…。

    新規サイトでテストしても再現できなくなってしまったのは不思議です。

  11. ky982339
    メンバー
    6ヶ月前の投稿 #

    toemon様

    昨夜、PHP.iniにsafe_mode=Offを設定しましたが、
    なんの変化もなく断念しておりました。

    しかし、なぜか先ほど確認しましたところ、
    当スレッドの問題がすべて解決しているではありませんか!!

    ...なんでなんでしょう。

    1週間くらい悩みましたが、
    まあ無事に修正できてよかったです。

    原因がイマイチわからないのが気持ち悪いですが。

    このたびは、お付き合いくださいまして
    誠にありがとうございました!!

返信

ログイン しなければ投稿できません。

About this Topic

Tags

まだタグがありません。