Yomi-Search メモ Yomi-SearchのDBクラスを利用して特定のカテゴリを表示

忘れないための備忘録として

ローカル環境で試すため、あらかじめclass>db.phpにローカルのデータベース設定。Yomi-Searchの中でテンプレート無しで実行できるsitemap.phpを利用。
sitemap2.phpとかで保存。
function_reg.phpの内容を確認する場合もあるので
// インクルードの設定に

require './functions_reg.php';

も加えておく。
カテゴリpath 「50/01/」のタイトルを表示したい時、sitemap2.phpに

$Cate_key = "50/01/";

$query = "SELECT title,path, regist FROM {$db->db_pre}category WHERE path='{$Cate_key}'";

		$row = $db->single_assoc($query);
		$Cate_title= $row['title'];
echo $Cate_title;

とするとカテゴリpath「50/01/」のタイトルが表示される。
カテゴリ登録関係の仕組みを変えたかったので試してみました。


Yomi-search お薦めサイトと相互リンクをRSS化 メモ

忘れないためのメモです。
お薦めサイトとか相互リンクはYomi-searchのデータベースの「テーブル: yomi_log」の「mark」という項目に’1_0_0_0_0_0_0_0_0_0′というように登録されている。相互リンクは’0_1_0_0_0_0_0_0_0_0′となり、両方の場合は’1_1_0_0_0_0_0_0_0_0′となる。

Yomi-SearchのYomi-Search(PHP)modifiedにはRSSディレレクトリにrss.phpがあるのでそれを利用。

rss.phpの新着サイト、更新サイトは「テーブル: yomi_log」の「stamp」を読み込んで判定しているのでそれを「mark」に変えてピックアップ。
rss.phpの65行辺りにある

// 各モードへ分岐
//================
if (@$_GET['mode'] == 'new') {

	// 新着サイト
	//============
	$title = $cfg['search_name'] . ' (新着サイト一覧)';
	$sql = ' WHERE stamp > ' . $ntime . ' AND renew != 1 ORDER BY id DESC';
	$description = '新しく登録されたサイトの一覧です。';

} elseif(@$_GET['mode'] == 'update') {

	// 更新サイト
	//============
	$title = $cfg['search_name'] . ' (更新サイト一覧)';
	$sql = ' WHERE stamp > ' . $ntime . ' AND renew = 1 ORDER BY stamp DESC';
	$description = '登録内容が更新されたサイトの一覧です。';

} else {

	// 引数が不正な場合は処理を中断
	//==============================
	echo '引数が不正です。処理を中止します。';
	exit;

}

のところを、次のように変更。
出力する条件として、ランダムに10件選んで表示とした。

if (@$_GET['mode'] == 'm1') {

	// おすすめサイト
	//============
	$title = $cfg['search_name'] . ' (おすすめサイトピックアップ)';
	$sql = " WHERE mark LIKE '1___0_0_0_0_0_0_0_0' order by rand() limit 10";
	$description = 'おすすめサイトのピックアップです。';
} elseif(@$_GET['mode'] == 'm2') {

	// 相互リンク
	//============
		$title = $cfg['search_name'] . ' (相互リンクサイトピックアップ)';
	$sql = " WHERE mark LIKE '__1_0_0_0_0_0_0_0_0' order by rand() limit 10";
	$description = '相互リンクサイトのピックアップです。';

} else {

	// 引数が不正な場合は処理を中断
	//==============================
	echo '引数が不正です。処理を中止します。';
	exit;
}

のように変えて別名で保存。
特殊マークをつけた場合はマークの0をアンダースコア_に変える。


Yomi-searchにwordpressデザインと関数を呼び込む (覚書)

今まで気になっていてなかなかできていなかったYomi-searchのデザイン変更。
Yomi-searchのtemplateファイルは、拡張子htmlなんだけど実はphpファイルということを確認してから、3カラムのCSSを使ったデザインに変更していました。
ローカル環境でテストしてうまくいったのですが、今度はどうせ変えるなら、ブログで使っているwordpressのデザインをYomi-searchのデザインに使えないかと思いさらに試行錯誤。

1、まず、wordpressには、外部PHPからWordPress関数を利用する方法がある。
 「http://emylo0.com/」さんのサイトの2011/12/09 の記事に書いてあったのでローカル環境で試してみた。
wordpress以外のphpファイルに

require('/[wordpressをインストールしたディレクトリー]/wp-blog-header.php');

とすると、wordpressの関数が実行できる。
2、wordpressのテーマを決めて、yomisearch用のheadrファイル、side-bar-rightファイル、footerファイルを作成しそれぞれheader-yomi.php,sidebar-right-yomi.php,footer-yomi.phpを作成する。leftメニューは、wordpressとのメニューと共通にするのでデフォルトで使うことにする。
3、yomi-serchのテンプレートファイルをヘッダー、左サイド、本文、右サイド、フッターに分けて
作成。元のファイルは残しておいてエラーが出た時の復旧に使う。
4、top.htmlは次のような構成になる。

<?php
get_header(yomi);
   get_sidebar();
?>
<div id="content">
本文
<div>
<?php
get_template_part('sidebar-right_yomi');
get_footer(yomi);
?>

5、これでとりあえずtop.htmlとcategory.htmlを組み替えて実験してみた。
6、データベースエラー。wordpressのデータベース内にありませんというエラー。
7、調べると、データベースの競合から起きるエラー。本文のデータベースを呼び出す部分では、

mysql_connect("[yomi-searchデータベース名]", "[ユーザー名]", "[パスワード]") or die("DB接続エラー");
mysql_select_db("[yomi-searchデータベース名]") or die("DB接続エラー");

として、Yomi-searchのデータベースに接続する必要がある。
8、右サイドからもう一度wordpressの環境を取り入れるので再度wp-blog-header.phpを記述。

<?php
require('/[wordpressをインストールしたディレクトリー]/wp-blog-header.php');
get_template_part('sidebar-right_yomi');
get_footer(yomi);
?>

9、外部ファイルなので、wordpress内でプラグインを導入しないと使えないphpコードが本文に使用できる。


yomi-search php版 メモ

Yomi-search php版をこのサイトに導入したものの時間がなくあまり手がかけられなかったのですが、最近少し時間が出来たので色々と試行錯誤しています。
Yomi-search php版も、CGI版と同じくtemplateファイルを利用する。
しかし、CGI版と違うところは、templateファイルが拡張子htmlなのに中身はphpファイルというところです。したがって、Yomi-search php版のtemplateファイルはパーツに分けてインクルードが効くことが試してみて分かりました。周知のことだったのかも知れませんが私にとっては大発見。
まず基本になるcssのデザインを決め、2カラムの場合だと、共通になりうるheader.phpと左サイドにleft_side.php、下部にfooter.phpを作り、各templateファイルの本文をその間に記入することでyomi-serchの出力結果がブログ風になります。
top.htmlのヘッダー部分header.phpをtemplateデレクトリにpartsホルダーを作って置いた場合は次のようなインクルードです。yomi.phpからtemplateファイルを読み込むように設定すればいいようです。

[php]
<?php "template/parts/header.php"); ?>
[/php]


yomi-searchのカテゴリーを他のディレクトリーに表示-メモ2

その2
2、yomi-searchのスクリプトを活用してデータベースを読み出して表示

Mysqlを利用することに変わりはないけどせっかくのyomi-search phpのプログラムを活用するほうが合理的。
最初、うまく行かなかったから1の方法を試したのだけれど。
まず参考になったのがhoge256さんの
PHP の include, require で相対パスを指定して読み込む場合のメモ」という記事。
以下引用
この問題は、実行ファイルのディレクトリではなく、参照しているファイルのディレクトリを基にパスを取得することで回避することができます。具体的には dirname(__FILE__) を使って次のように書きます。

www/func/function.php ファイル

1
2
 
include(dirname(__FILE__) . &quot;/../class/class.php&quot;);

これで、問題無く実行されたかと思います。

__FILE__ は PHP の定数で、現在参照中のファイルのフルパスとファイル名を表します。dirname はパス中のディレクトリを取得する関数です。なお、dirname の結果は最後に / が付かないので、上記の例のように / を付け忘れないようにしましょう。

引用終わり

とあります。

そこで唯一templateを通じて結果を書き出していないsitemap.phpをyomi-searchの上部のルートデレクトリーにコピーして

1
2
3
4
// インクルード
require 'class/db.php';
require 'functions.php';
require 'ads.php';

1
2
3
4
// インクルード
require dirname(__FILE__).'/yomi/class/db.php';
require dirname(__FILE__).'/yomi/functions.php';
require dirname(__FILE__).'/yomi/ads.php';

に変更。
これでルートディレクトリーからyomiディレクトリのインクルードファイルを読み込んで、mysqlを通じてサイトマップが表示されます。
長い間できないと思って放置していたのですがよかったです。
また、総登録数は、sitemap.phpの
// textテーブルから設定情報を配列($text)へ読込
の後ろくらいに

$total_num = $db-&gt;log_count($db-&gt;db_pre.'log');

を加えると取得できました。
ちなみにローカルのxamppの環境でもこの方法は有効です。もっと早く理解していれば無駄な時間を使わずにすんだかもしれません。hoge256さんの記事は2007年8月のものでした。すばらしい情報に感謝です。


yomi-searchのカテゴリーを他のディレクトリーに表示-メモ1

今更ですが、最近yomi-search php版でいろいろ試しています。
その第一がyomi-searchのカテゴリーを他のディレクトリーに表示させるというものです。
考え方としては、
1、mysqlのデータベースをphpで読み出して表示
2、yomi-searchのスクリプトを活用してデータベースを読み出して表示

今回は1のメモ

表示のサンプルになるのが
sitemap.phpかtemplateディレクトリーにあるtop.htmlの81行目あたりの// 最上層カテゴリからのコード。
1の場合、

<div>
$mysql_con = mysql_connect("localhost","[ユーザ名]","[PASSWORD]") or die("error");
mysql_query("SET NAMES utf8",$mysql_con);//ローカルの環境で文字化けになったので
mysql_select_db("yomi");//MySQLのデータベース名
$sql= "SELECT * FROM yomi_category";
$select_db = mysql_query($sql,$mysql_con);
while($row = mysql_fetch_array($select_db)){
$rowset[]=$row;
}
</div>

rowsetの配列はyomi_categoryテーブルをつぎのように格納している。
[0] => Array
(
[0] => 1
[id] => 1
[1] => ホームページ作成
[title] => ホームページ作成
[2] => 0
[up_id] => 0
[3] => 01/
[path] => 01/
[4] => 1
[top_list] => 1
[5] => 1
[etc_list] => 1
[6] =>
[regist] =>
[7] =>
[reffer] =>
[8] => ほーむぺーじさくせい
[sort_name] => ほーむぺーじさくせい
[9] => ホームページ作成に関するサイト
[comment] => ホームページ作成に関するサイト
)
ここまでくればあとは配列を活用して表示する。