Home > Yomi-Search(PHP)modified改造 > Yomi-Search(PHP)modified サイトピックアップ

Yomi-Search(PHP)modified サイトピックアップ

本家Yomi-Searchのサイトピックアップみたいなプラグインを作ってみました。
基本的にトップページで使う様々な用途に対応できるようにしてます。
Yomi-Search(PHP)modifiedを略して「YSPMサイトピックアップ」と名づけました。
内容的には以前紹介した下記記事を使いやすくまとめた物になってます。

トップページにランキングを表示する」で紹介した「get_rank_logs」関数を追加されてる方は、今回配布するファイルに組み込まれているので以前の関数は削除してください。

YSPMサイトピックアップの特徴

  • モードを指定して、ランダム、指定数表示
  • 表示するリストタグにつけるCSSクラスを指定できる
  • データのみ取得してオリジナルの表示ができる
  • SQL文Where句の付足しで特殊な条件もOK

site_pickup関数の仕様

書式:site_pickup($mode,$print,$limit,$rand,$option);

$mode
モード指定

new
新着
renew
更新
m1~m10
おすすめ(m1)、相互(m2)など特殊マーク

※スペースで区切るとAND条件になります
※new or renew は、ランダム時のみ期間適用

ランキング指定

rank
現在の人気ランキング
rank_bf
前回の人気ランキング
rank_rui
人気ランキング累計
rev
現在のアクセスランキング
rev_bf
前回のアクセスランキング
rev_rui
アクセスランキング累計

※いずれか1つのモードのみ指定
※ランキングの場合、$rand$optionは無効

上記以外の場合は、全てのログ
$print
CSSのクラスを指定する
指定しない場合は表示しません
$limit
表示数
$rand
ランダム表示(0 or 1)
$option
SQL文Where句の付足し
※$modeを指定した場合は、「AND」又は、「OR」 から
除外ID指定
$mode:ランキング以外のモード
$option:AND id<>サイトID
特定のIDのみ
$mode:""
$option:id IN(ID1,ID2...)
特定のカテゴリのみ
$mode:""
$option:category LIKE '%&[path]%&%'

使い方

yspm_sitepickup.phpをインクルードする

[設置例]
yspm_sitepickup.phpを /php に保存
/template/top.htmlの先頭に下記を追記
ダウンロード

PHP:
require_once("php/yspm_sitepickup.php");

CSSクラスの準備

/css/main.cssに以下のようなクラスを追加しておく

CSS:
ul.site_pickup{
    background-color:#eee;
    list-style:none;
}
ul.site_pickup li{
    padding:0.4em 0px 0.4em 0.5em;
    border-top:1px solid #fff;
}

関数の呼び出し

/template/top.htmlで関数を呼び出す。

PHP:
//新着サイト ランダム 10件表示
site_pickup("new","site_pickup",10,1);

応用例

全体から指定したサイトのみ10件表示(例:idは1~10)

PHP:
site_pickup("","site_pickup",10,0,"id IN(1,2,3,4,5,6,7,8,9,10)");

おすすめで相互リンクの新着 10件表示

PHP:
site_pickup("m1 m2 new","site_pickup",10);

相互リンクの新着ランダム 10件表示

PHP:
site_pickup("m2 new","site_pickup",10,1);

相互リンクでバナーがあるサイトを10件ランダムでバナー表示

PHP:
$log_lines = site_pickup("m2","",10,1,"AND char_length(banner)>0");
echo "<ul>\n";
foreach($log_lines as $log_data){
    echo "<li><a href=\"{$log_data['url']}\" target=\"_blank\">";
    echo "<img src=\"{$log_data['banner']}\" border=\"0\" width=\"{$cfg_reg['Mbana_w']}\" height=\"{$cfg_reg['Mbana_h']}\" alt=\"{$log_data['title']}\" title=\"{$log_data['title']}\"/>";
    echo "</a></li>";
}
echo "</ul>\n";

現在の人気ランキングをテーブルで5件表示

PHP:
$log_lines = site_pickup("rank","",5);
echo "<table>\n";
echo "<tr><td>順位</td><td>ポイント</td><td>サイト</td></tr>\n";
foreach($log_lines as $log_data){
    echo "<tr><td>{$log_data['rank']}位</td><td>{$log_data['pt']}</td><td><a href=\"{$log_data['url']}\">{$log_data['title']}</a></td></tr>\n";
}
echo "</table>\n";

人気ランキングにバナーを使う応用 10件表示

バナー登録が無い場合は「no_banner.gif」を表示する(別途用意してください)

PHP:
$log_lines = get_rank_logs('rank',10,"id,title,url,banner");
echo "<ul>\n";
foreach($log_lines as $log_data){
    $log_data['banner'] = ($log_data['banner'])? $log_data['banner']:"{$cfg['img_path_url']}no_banner.gif";
    echo "<li><a href=\"{$log_data['url']}\" target=\"_blank\">";
    echo "<img src=\"{$log_data['banner']}\" border=\"0\" width=\"{$cfg_reg['Mbana_w']}\" height=\"{$cfg_reg['Mbana_h']}\" alt=\"{$log_data['title']}\" title=\"{$log_data['title']}\"/>";
    echo "</a></li>";
}
echo "</ul>\n";

ダウンロード

ダウンロード:yspm_sitepickup.zip


関連記事

Comments:18

すずき 08-02-25 (月) 22:00

はじめまして。
PHP版のサイトピックアップがあると聞いて
伺わせていただきました。
早速設置させていただいたのですが、バナーを表示~を読み込ませると
Parse error: syntax error, unexpected T_ECHO, expecting ',' or ';' in /**/**/public_html/template/top.html on line 158
とエラーになります。
なにが原因なのでしょう?
,と;が足りないのか多いのか、そんなところしかわかりませんでした。
そもそも見当違いかもしれませんし、わかりましたらどうぞ教えてやってください。
よろしくお願いします。

SO 08-02-25 (月) 23:32

すみません。
バナー表示サンプルの記述ミスです。
echo の行の最後にセミコロン( ; )付け忘れてました。
3行ある内の上2行です。

すずき 08-02-26 (火) 20:10

ありがとうございます。
ちゃんと表示されました。
一応セミコロンを予想したところにつけたり
してみたのですが、やはり予想ではいけませんでしたね。
ありがとうございました!

researcher 08-04-29 (火) 17:33

SOさん、いつもお世話になっています、また、改造しやすいパックを作ってくださり、いつも有り難うございます!

ランキングでバナー表示をしようと、「相互リンクでバナーがあるサイトを10件ランダムでバナー表示」のm2をrankにして色々と試してみたのですが、何故かバナー画像が表示されません(リンクは表示されますが、バナーの表示されているURLが、サーチのアドレスになっておりました)どうすれば、ランキングでもバナー表示が出来るのかお教えいただけると幸いです。

また、全サイトからランダムで表示するには、m2の部分に何を入れれば良いのでしょうか?
空白にしてみたのですが、えらーとなってしまいましたので、こちらもお教えいただけると幸いです。

色々と申し訳ございませんが、SOさんの改造スクリプトにいつも助けられております、宜しければご回答頂けると幸いです。
いつも本当に有り難うございます!

SO 08-05-01 (木) 0:17

researcherさんこんばんわ
ランキングは、バナー登録の有無がはっきりしないので、考えていませんでした。
一応、応用例を追加しておきましたので、参考にして下さい。
注意点としては、バナー登録がなくても順位にしたがってバナーを表示しなければならないので、no_banner.gifを用意して下さい。

「相互リンクでバナーがあるサイトを10件ランダムでバナー表示」を全体からにするのは以下のように指定します。

PHP:
site_pickup("","",10,1,"char_length(banner)>0");

うまくいかなかったら、また質問してください。

researcher 08-05-02 (金) 14:28

SOさん、本当に有難うございました!
SOさんの助言のおかげで、満足の行くサーチエンジンが出来上がりました!
今後も応援しておりますので、頑張ってください!本当に有難うございました。

SO 08-05-02 (金) 23:24

満足の行くサイトができてよかったですね!
researcherさんも運営、頑張ってください。

researcher 08-05-03 (土) 14:49

SOさん、本当に有難うございました!
いつも素晴らしい助言をして頂き、本当に感謝しております。

それで、利用していく上で出て来た要望なのですが、トップページにピックアップされたサイトをクリックすると、人気ランキングに集計されるようにする方法はございますか?
色々と自力で変更してみようと思ったのですが、やはり何の変化も見られず・・・SOさんに頼ってばかりで申し訳ございませんが、お力を貸していただけると幸いです。

本当に何度も申し訳ございません、宜しくお願い致します。

SO 08-05-03 (土) 20:13

人気ランキングに反映させるには、「foreach」の次の行に以下の2行を追加してください。

PHP:
$log_data['url'] = urlencode(unhtmlentities($log_data['url']));
$log_data['url'] = "{$cfg['rank']}?mode=link&amp;id={$log_data['id']}&amp;url={$log_data['url']}";

researcher 08-05-04 (日) 1:13

SOさん、無事に出来ました!
本当に有難うございました。お世話になりました!感謝しています。
今後も運営頑張ってください!応援しています。

せな 08-05-17 (土) 22:41

はじめまして。
PHP版のサイトピックアップを設置したのですが
ソースが すべて そのまま文字がでます。
なにが原因なのでしょう?
TOPページへのインクルードでしょうか?
デバックモードで
require_once("php/yspm_sitepickup.php"); と表示されていますが。
よろしくお願いします。

SO 08-05-17 (土) 23:08

はじめまして せなさん

ここで紹介してるサンプルコードは<?php ?>を省略しています。
<?php require_once("php/yspm_sitepickup.php"); ?>
のようにスクリプトタグで括っていますか?

せな 08-05-18 (日) 13:04

ありがとうございました。
多分 を省略してるのだろうと思ったのですが
表示できました。
ありがとうございました。

せな 08-05-18 (日) 15:15

特定のカテゴリのみ 1つを バナーで表示させるソースを
教えていただけますか?
よろしくお願いします。

SO 08-05-21 (水) 2:50

カテゴリの指定はオプション指定ですバナー表示サンプルを流用して
「相互リンクでバナーがあるサイトを10件ランダムでバナー表示」のオプションを変更してください。

PHP:
$log_lines = site_pickup("m2","",10,1,"AND char_length(banner)>0");

PHP:
$log_lines = site_pickup("","",10,1,"category LIKE '%&[path]%&%' AND char_length(banner)>0");

[path]の所にカテゴリパスを入れてください。
下層カテゴリを含まない様にしたければ「'%&[path]&%'」のように「%」を1つ無くせばいいです。
表示件数、ランダム表示は説明を見てください。

せな 08-05-23 (金) 22:07

データーのあるカテゴリパスを入れて 「%」を1つ無くしたりなど
してみましたが 表示できませんでした。
0");
echo "\n";
foreach($log_lines as $log_data){
echo "";
echo "";
echo "
";
}
echo "\n";
?>
ページソースをみると   しかありません。
同ページに相互リンクのソースをのせているからでしょうか?

せな 08-05-23 (金) 22:15

ソースが…
コピペでは だめなのですね。 失礼しました。

エラーログをみると
PHP Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource in ~class/db.php on line 95
とあったのですが これは関係ありますか?

SO 08-05-23 (金) 22:25

関係あります。
条件つけたした時全角スペースになってました。
すみません。
もう直したのでコピペで大丈夫なはずです。
あと、この関数は、同じページで何回でも使えます。

Comment Form
Remember personal info

Trackback+Pingback:0

TrackBack URL for this entry
http://blog.seo-so.com/archives/25/trackback
Listed below are links to weblogs that reference
Yomi-Search(PHP)modified サイトピックアップ from SEO-SO blog

Home > Yomi-Search(PHP)modified改造 > Yomi-Search(PHP)modified サイトピックアップ

Feeds
メタ情報

Page Top