Home » ブログ
検索・リンク
ブログ  ブログ以外
最近の記事
Amazon

‘MODx’ カテゴリーのアーカイブ

2008 年 10 月 30 日

検索エンジン経由からのアクセス時に検索キーワードでAjaxSearchを起動させ、mini検索結果を表示させる。

当サイトのアクセスをログをみると検索エンジンから遷移してきた場合にキーワードと検索ページがアンマッチになっている場合があることを気づいた。
検索エンジンというのはmetaのキーワード以外にページ全体のワードも拾ってくる。サイドバーの最近の記事だとかトラックバックもキーワードになってしまう。
ページを開いて、本文が探していた情報と違う場合は、そのページ以外を探すということは滅多にしないことだ。
そこで、検索エンジンから遷移してきた場合に検索キーワードを抽出し、AjaxSearchを起動し、検索結果をポップアップさせることにした。以下がその画面

右のサイドバーの水色の部分が検索結果、左のサイドバーのが閉じる。
仕掛けは簡単。
検索キーワードはjavascriptのdocument.referrer(参照元)で拾ってきて、?以下のキーワードを抽出し、デコードする。キーワードをAjaxSearchのformに貼り付け、submitさせる。
当初、MODxのスニペットでキーワードの抽出を実現しようと思ったのだが、スニペットに例外がおきるとhtml本体作成まで影響がでるので、javascriptの方法を採用した。
それに「150.70.84.xxx」のIPアドレスの不明な訪問者URLフィルタ野郎。
こいつは依頼元のクライアントのGETパケットそのままIPアドレスだけ変えて、そのままアクセスする。
クライアント側のブラウザで手順をふんで動的に作成されたGET用のパラメータを無造作に送付してくる。
それでサーバ処理をおかしくしている。
この訪問者がいつおかしなパラメータを送付してくるか分からないため、余計なサーバ側の処理は中止だ。
時々、ルータがこける。この訪問者が原因か要調査だ。
最後に、キーワードには全角空白が含まれているのでカットが必要である。

2008 年 10 月 28 日

WordPressIntegrator経由でWordPressとMODxのsitemapを作成する。

当サイトはWordPressIntegratorを使用して、MODxにWordPressのブログを表示させている。
MODxでMODx本体の記事のsitemapを作成していたが、WordPressのsitemapもマージするように修正した。
WordPressのsitemapはプラグイン「google-sitemap-generator」を使用している。
簡単な対応概要は以下

  1. google-sitemap-generator
    sitemap.phpに以下を追加する。

    function CallMODxSitemap() {
        if(GoogleSitemapGeneratorLoader::LoadPlugin()) {
        $gs = GoogleSitemapGenerator::GetInstance();
        $gs->MODxSitemap();
        }
    }
    if(defined('ABSPATH') && defined('WPINC')) {
         add_action("modxsitemap",
         array("GoogleSitemapGeneratorLoader","CallMODxSitemap"),1000,0);
    }

    sitemap-core.phpに以下を追加する

    function MODxSitemap() {
        BuildSitemap()でsitemapを作成している処理を真似て、sitemap出力をechoする処理
    を編集する
    }
  2. wordpressintegrator修正
    以下をwordpressintegratorのスニペットに以下を追加する

    if ($block=='sitemap') {
        do_action('modxsitemap');
        return;
    }
  3. sitemaps作成ドキュメント
    [[Ditto? &parents=`0` &showInMenuOnly=`1` &depth=`10` &display=`all` &sortBy=`menuindex` &sortDir=`ASC` &format=`html` &tpl=`Sitemapc` &language=`english`]]
    [!WordPressIntegrator?block=sitemap!]
    
    Sitemapc(チャンク)
    <url>
        <loc>[+url+]</loc>
        <lastmod>[+editedon:date=`%Y-%m-%dT%H:%M:%S+09:00`+]</lastmod>
        <changefreq>daily</changefreq>
        <priority>1.0</priority>
      </url>

尚、上記は簡単な概要だが、以下の対応が別途必要

  • wordpressのブログのトップページとMODxのブログドキュメントのページが重複する。どちらかひとつしか出力しないようにする。
  • google-sitemap-generatorでpinを飛ばす処理がある。MODx側のアドレスに変換する等の処置をいれたほうが良い。
  • wordpress側とMODxではURLが違う。
    例えば、
    wordpress:wp_blog/?p=49
    MODx:test.html?p=49
    どちらでもアクセスは可能だが、リダイレクトされないMODx側に合わせたほうが良い。
2008 年 10 月 24 日

MODxでAjaxSearch(1.80)を使用して検索結果を画像とともにポップアップさせる

MODxのAjaxSearchのversion 1.8.1bが最近UPされたらしい。
恥ずかしい話なのだが、AjaxSearchの検索結果で画像も検索結果として表示することが可能だということが、最近わかった。
試してみたのは前世代のAjaxSearchのversion1.8.0である。
このページを参考してみた。
AjaxSearchのパラメータに「&config=`image`」
を設定すればよいらしい。
当サイトもこの方法で、検索結果に画像を表示することができるようになった。
今のところjavascriptでポップアップ表示するところだけしか、画像を表示できないのが残念だ。
AjaxSearchの呼び出し等を改良して、ドキュメントのポップアップ表示を実現してみた。
以下がその例である。
元の画面

Previewにカーソルを当てるとjavascriptでAjaxSearchを呼び出し、ドキュメントのポップアップ表示をさせる。

「デスク」で検索した画面

文字セットについてはUTF-8を使用しているが、修正しなくても今のところOKのようだ。

2008 年 10 月 7 日

MODxを違うURLでアクセスし表示するような場合(外部、内部ドメイン)は、キャッシュクリアに注意を

外部公開用MODxを内部からメンテナンスしているのだが、以下のようにデータをひっぱってこれないことがある。
内部のドメインが「localdomain」、外部が「linux.enegai.jp」

  1. サイトのurlは「http://localdomain/〜」で表示OK。
  2. url「http://linux.enegai.jp/〜」でアクセスする
    下記のようにデータをもってこれない。

    最初は、原因がわからなったが、キャッシュのせいだと原因をつきとめた。
    特定のアドレスを「http://linux.enegai.jp/〜」でアクセスし「http://localdomain/〜」で表示されるのでわかった。
    今まで外部からどれだけ表示されていなかったのだろう思うと恥ずかしい。(基本ですね)
    表示されなかった方申し訳ありませんでした。
    URLを変更するようなアクセスをした場合は、キャッシュをクリアすること。
    当サイトのルータは外部ドメインでのアクセスができるので、外部ドメインでのアクセスもできるのだが...。Apacheのアクセスログに出力されるので少し考えないと...
2008 年 10 月 4 日

MODxの0962をインストールしてみた。

MODxのバージョン0962が挙がってきたので、インストールしてみた。
今までと違い、インストール時のパーミッションの対応方法が分かり易くなっている。

UTF8環境で日本語を入力すると以下のように文字化けをする。
(UTF8以外でも文字化けをするのかも)
MODxのフォーラムに対応方法が載っていたので実施してみたらOKだった。
きちんとしたパッチがでるまでは、使うのを控えたいと思っている。
インストールについては本文にまとめてみた。

2008 年 10 月 2 日

WordPressintegrator経由のブログのサイトマップがリダイレクトされる

当サイトはMODxでWordPressintegrator経由でWordPressのブログを表示している。
WordPressのsitemapはWordPressのプラグインを使用して作成していた。
できたsitemap.xmlをそのままサイト登録に使用していたのだが、NGらしい。
理由は、全部リダイレクトされるからだ。

Wordpressのリンクは
http://linux.enegai.jp/modx/wp_blog/?p=8
MODxでは
http://linux.enegai.jp/modx/wp_blog.html?p=8
でリダイレクトされる。

※Wordpressのurlは「wp_blog」で登録。MODxではフレンドリで「wp_blog.html」がドキュメントエイリアス。
盲点であった。
sitemap.xmlだけでなく、feedも同様だ。
同じく、WordPress経由で表示しているブログリンクはすべて対象だ。
最悪のやり方だけど、worpressの
link-template.php
category-template.php
にパッチをかけて対応した。
MODxで変換をかけるもの作らないといけない。課題だ!

2008 年 10 月 1 日

WordPressIntegratorでWordPressのブログタイトルをだす

当サイトはMODxを本文のベースとし、WordPressIntegratorでWordPressのブログを表示しているが大きな失敗に気づいた。
どのブログもタイトル文が同じなのだ。
WordPressIntegratorを使用するとsidebarやブログ本文、一部の変数を利用することができる。
WordPressIntegratorからそのままに利用できる関数は、
get_header()
get_footer()
get_sidebar()
である。
この関数の呼び出しもとのthemesはMODx用に作成してある。
get_header()を以下のように修正した。

<?php wp_title(); ?>

また、WordPressIntegratorのスニペットに以下を追加

if ($block=='title') {
get_header();
return;
}

MODxのテンプレートのタイトルの箇所を

<title>e願い | [∗pagetitle∗] [∗WordpressTitle∗]</title>

とし、Wordpresを呼び出す時のみ
[∗WordpressTitle∗]に

[!WordPressIntegrator?block=title!]

を設定した。
これで、ブログそれぞれにタイトルがつくようになった。
※追記
今まで何回もtryしても表示されなかった[+wp_pagetitle+]が、上やってから表示されるようになった。
ぐすん!
これが、最適なやり方です。[+wp_pagetitle+]をヘッダーにいれます。

2008 年 9 月 24 日

MODx+WordPressでLinuxの環境設定簡易メモを公開します

MODxとWordPressでホームページを作成してみました。
ホームページの内容は、fedoraとubuntuの環境構築を手順に関しての簡易説明です。

△ページトップ

Google
ページ
最近のブログ
アーカイブ
カテゴリー
最近のコメント
最近のトラックバック
    No Responses.