人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

「こちらの質問でワードプレスの記事をインデックスページのサイドメニューに表示させてほしいという質問をさせて頂きました。(URL:http://q.hatena.ne.jp/1287850757)

今回トップページのみに表示していた内容を下層の地域ページ(http://longtail-japan.com/ihinseiri/1/index.html )に全ての記事の中から地域名+指定キーワードの内容にあったものだけを表示させたいと思っています。
方法としてはタイトル、もしくは設定タグに地域名と指定キーワードフィルターをかけて表示できればと考えています。

現状の不具合としては下層のページにおいても同様にCGI(http://longtail-japan.com/cgi/whats-new.cgi)の内容を読み込んではいるのですが下層ページでは文字化けしてしまいます。

当方の仕様としては サーバーについてはロリポップを使用しています。
表示形式は基本的には静的ページに表示させます。

また、タグの打ちかえ程度しかできませんので的確にどの部分をこのような直すといった回答をいただけますようお願いします。

●質問者: yokosima_nhp
●カテゴリ:ウェブ制作
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● rouge_2008
●100ポイント ベストアンサー

地域名と指定キーワードは、記事にタグとして設定している前提になります。
※まずは例示された下層ページ(http://longtail-japan.com/ihinseiri/1/index.html)で表示する為の手順になります。


1.まずHTMLファイルでPHPを動作させる為に、以下の内容の「.htaccess」ファイルを作成して「ihinseiri」ディレクトリ内にアップロードしてパーミッションを「604」に設定します。(※ファイル名が「index.html」のHTMLファイルのみ対象にします。)
※Windowsのエクスプローラからでは作成できないと思いましたので、テキストエディタで保存する時に「.htaccess」と名前を付けるか、一旦適当な名前で作成しておいてFTPでアップロード時に変更するようにしてください。

<FilesMatch "^index\.html$">
# For lolipop
#AddHandler php5.2-script .html
AddHandler php5.3-script .html
#AddHandler php5.4-script .html
</FilesMatch>


※行頭に「#」を付けるとコメントアウトされて無効になり、「#」を外すと有効になります。
※独自ドメインなのでPHPバージョン5.3を利用する書き方にしていますが、ロリポップでは5.2、5.3、5.4のバージョンのPHPが用意されています。
動作しない場合は、どのバージョンを利用する設定になっているか確認してみてください。
ユーザー専用ページから確認・設定変更が可能です。

・PHP設定
http://lolipop.jp/manual/user/php-setting/

・CGI・SSI・PHP・SENDMAILについて
http://lolipop.jp/manual/hp/cgi/

・.htaccessでhtmlでphpを読み込めるようにしてい
http://lolipoking.lolipop.jp/php/patio.cgi?mode=view&no=3822

・ロリポップのレンタルサーバーhtmlのままphp
http://www.fogburden.com/?p=227

・拡張子.htmlでphpを動かす。ロリポップサーバー最新情報
http://www.aveit.biz/column/detail1357458517.html


2.新規ファイル「newentrylist.php」を次の内容で作成します。(文字コードは何でも大丈夫です。)

<?php
$args = array(
'posts_per_page' => $num,
'tax_query' => array(
'relation' => 'AND',
array(
'taxonomy' => 'post_tag',
'field' => 'slug',
'terms' => $area
//'operator' => 'AND' // ※※指定した地域すべてが含まれている記事を取得したい場合は、この行頭の「//」を外して有効にします。※※デフォルトでは指定した地域の何れかが含まれる記事を取得します。※※
),
array(
'taxonomy' => 'post_tag',
'field' => 'slug',
'terms' => $keyword,
//'operator' => 'AND' // ※※指定したキーワードすべてが含まれている記事を取得したい場合は、この行頭の「//」を外して有効にします。※※デフォルトでは指定したキーワードの何れかが含まれる記事を取得します。※※
)
),
);
$the_query = new WP_Query( $args );
if( $the_query->post_count >= 1 ) : 
echo "<h4>" . $title . "</h4>\n";
echo "<ul>\n";

while ( $the_query->have_posts() ) : $the_query->the_post();
echo "<li>";
echo "<a href=\"" . get_permalink() . "\">" .get_the_title() . " [" . get_the_date() . "]</a>";
echo "</li>\n";
endwhile;
echo "</ul>\n";
endif;
wp_reset_postdata();
?>



3.先ほど作成した「newentrylist.php」をサーバーにアップロードしてパーミッションを設定します。
WordPressを設置したディレクトリ「blog」内にアップロードし、パーミッションを「index.php」と同じに設定してください。おそらく「700」です。

・サイト改ざんへの対策をお願いいたします - ロリポップ!レンタルサーバー
http://lolipop.jp/security/


4.対象の下層ページの各HTMLファイルに次の記述を追加します。
※まずは「/ihinseiri/1/」内の「index.html」をダウンロードして追記後、同じ場所にアップロードし直します。
※ファイルの文字コードはUTF-8(BOMなし)のまま変更しないで保存します。

<?php
require '../../blog/wp-load.php'; //編集中のHTMLファイルの2階層上(※「ihinseiri」と同じ階層)にWordPressを設置したディレクトリ「blog」がある場合
$title = "ブログ更新情報"; //更新情報のリストのタイトル
$num = 10; //記事の取得件数
$area = array('地域名1'); //対象地域の指定※複数の地域を対象にする場合は、カンマ「,」で区切って「array('地域名1', '地域名2', '地域名3')」のように続けます。
$keyword = array('キーワード1'); //キーワード指定※複数指定する場合は、地域名と同じようにカンマで区切って続けます。
require '../../blog/newentrylist.php'; //編集中のHTMLファイルの2階層上(※「ihinseiri」と同じ階層)にWordPressを設置したディレクトリ「blog」がある場合
?>



※今回新しく作成したファイルと記述は下層ページ用です。
下層ページで正常に動作する事を確認したら、サイトトップページもPHPによる更新情報表示に変更します。(※「ihinseiri」など対象の下層ディレクトリの数が少なく、対象ディレクトリ(※「ihinseiri」内の「1」や「2」等のディレクトリは除く)すべてに「.htaccess」の設置が可能な場合は、そのまま「whats-new.cgi」を利用しても大丈夫です。)


【追記】

地域名とキーワード指定を別々に指定できるようにコードを変更しました。
※修正前のコードは「地域名および指定したキーワードすべて」が含まれる(※「地域名」AND「キーワード1」AND「キーワード2」AND 「キーワード3」...)あるいは「地域名あるいは指定したキーワードの何れか」が含まれる(※「地域名」OR「キーワード1」OR「キーワード2」OR 「キーワード3」...)記事のどちらかのパターンで記事を取得する設定でした。

※変更後のコードは次の2パターンの好きな方で記事を取得できます。(デフォルトでは「1」のパターンで取得します。)

1.「地域名および指定したキーワードの何れか」が含まれる(※「地域名」AND「[キーワード1] OR [キーワード2] OR [キーワード3]」...)記事

2.「地域名および指定したキーワードすべて」が含まれる(※「地域名」AND「キーワード1」AND「キーワード2」AND 「キーワード3」...)記事

※対象地域についても複数対象にする事ができ、キーワードと同様にすべての地域あるいは何れかの地域に設定で変更可能です。(※デフォルトで何れかの地域にしてあります。)


rouge_2008さんのコメント
「追記】にあるようにコードを変更してあります。 1.対象地域何れか+指定キーワード何れか 2.対象地域何れか+指定キーワードすべて 3.対象地域すべて+指定キーワード何れか 4.対象地域すべて+指定キーワードすべて ※2パターンと記載しましたが、地域を複数指定した場合を含めると全部で4パターンです。 ※デフォルトでは「1」のパターンで取得します。
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ