ああ!年末がー今年がーー

なんやかんやで、もう11月。

前回のエントリーから1カ月以上も空けてしまった・・

取引先企業様方のおかげさまで、忙しくしてました。

今回は、暴露ネタ。
年内の予定について

  • ケータイポイントラリー企画
    加盟店に掲示されているQRコードを読み取って、ポイントラリーしちゃう企画
    モバイル向けだけど、willcomにもちゃっかり対応。
    QRコード生成、iモードIDの利用、携帯端末情報の利用、とかとか。
    完全スクラッチ開発。12月リリース予定。
  • アクセスカウンター、アクセスランキングASPサービス企画
    忍者ツールズとか、ゼロツールズみたいな企画。
    統合的なサービスを提供する上で、フレームワークはとても大切って感じた。
    時すでに遅し、こちらもフルスクラッチ開発。(一部、旧ソースの使いまわしあり)
  • ウェブサイトリニューアル
    現在改装中であるクライアント様店舗のホームページリニューアル。
    12月1日オープンなのに、いまだ全く情報なし。あせる・・・
  • ウェブサイトリニューアルその2
    以前にWordPressで作ったクライアント企業様のホームページリニューアル。
    特に不満を言われてるわけではないですが、これといって成果が出ていないようなので、システムも合わせてリニューアルする予定。
    着手は、上の開発リリース後の12月中旬ごろからかな?クリスマス前くらいに納品できたらOK。
  • 自社ウェブサイト制作
    ええ、自社ホームページの制作です。
    IT企業でありながら、自社のホームページがindex.htmlの1枚だけなんです。
    過去には、Zen Cart でホームページを作ったり、WordPressにしてみたり、MODxを使ったりして何度かのリニューアルを行っていたのですが、今は、このような有様。
    キチンとつくろう。

一人会社って、気軽だけど、プレッシャーもあって大変。
特に手数の多い作業が詰まってくると、息抜きのタイミングを失う・・

しかし、社員を雇うには、もうちょっと資金繰りに余裕が無いとできないな。

やっぱ、なにかB2Cビジネスを立ち上げないと、今の不安定なキャッシュフローから抜け出せない気がする。

WordPressでゴニョゴニョ

最近は、MovableTypeから、WordPressに乗り換える方が多いみたいで、WordPressで作られたサイトが増えてきましたね。

今回は、取引先の社長から直々に依頼を請けて、「既存サイトのWordPress化」を手伝ってきました。

取引先の社長さんには、WordPressのテンプレートを用意して頂き、私は、コンテンツ(Contents)部分のコーディングを担当させて頂いて、1日で3サイト制作。

手本となるデザインは、現状のサイトをそのまま引き継ぐという事で、割とスムーズにできたと思います。

まあ、これも社長と私が、お互いのコーディングの「癖」をよく知ってるからだと思った。多分、全然知らないチームで作業を進めるなら、コーディングに関する打合せにも一日使ってやる必要があったかな。

━━━ここからメモ━━━━━━━━━━

ページごとにヘッダーイメージを変更するテンプレートの記述

<?php if ( is_front_page() ) { ?>
フロントページの時に表示するHTML
<?php } else if ( is_page(profile) ) { ?>
ページスラッグ(profile)のページに表示するHTML
<?php } else if ( is_page(contactus) ) { ?>
ページスラッグ(contactus)のページに表示するHTML
<?php } else { ?>
そのほかのページで表示するHTML
<?php } ?>

サイトによっては、ページによって、使用しているAjaxがPrototype.jsだったり、mootools.jsだったりすることがあるので、そんな場合にも、上記の振り分けで読み込むAjaxライブラリを変更したりするといいですな。

ページごと(カテゴリごと)に読み込むテンプレートを切り替える方法がよくウェブに掲載されてますが、この方法なら、一つのテンプレートに記述できるので、ケースバイケースで利用してみるといいかも。

WordPress On Zencart

WordPress On Zencart を使ってて、パンくずリスト(Breadcrumbs)とページタイトル(title)がどうも、うまく変化していなくて、いつもブログのタイトルだけになってしまっていたので、修正。

includes/languages/japanese/wordpress.php

修正前

if($woz_install){
    $cat_id = htmlspecialchars($_GET[‘cat’],ENT_QUOTES);
    if ( !empty($cat_id) ) {
            // category exclusion
            if ( !stristr($cat,’-‘) )
                $zen_heading_title[] = get_the_category_by_ID($cat_id);
    }

    $p_id = htmlspecialchars($_GET[‘p’],ENT_QUOTES);
    if ( !empty($p_id) ) {
            $zen_heading_title[] = $wpdb->get_var("SELECT post_title FROM $wpdb->posts  WHERE ID = $p_id");
    }

    define(‘NAVBAR_TITLE’, implode(BREAD_CRUMBS_SEPARATOR, $zen_heading_title));
    define(‘WOZ_HOME_ADDRESS’, ‘/?’);
}else{
    define(‘NAVBAR_TITLE’, ‘Error:not found [ABSPATH]’.ABSPATH);
}

修正後

if($woz_install){
    if(isset($_GET[‘cat’])){
    $cat_id = htmlspecialchars($_GET[‘cat’],ENT_QUOTES);
    if ( !empty($cat_id) ) {
            // category exclusion
            if ( !stristr($cat,’-‘) )
                $zen_heading_title[] = get_the_category_by_ID($cat_id);
    }
    }
    if(isset($_GET[‘p’])){
    $p_id = htmlspecialchars($_GET[‘p’],ENT_QUOTES);
    if ( !empty($p_id) ) {
            $zen_heading_title[] = $wpdb->get_var("SELECT post_title FROM $wpdb->posts  WHERE ID = $p_id");
    }
    }
    if(isset($_GET[‘page_id’])){
    $p_id = htmlspecialchars($_GET[‘page_id’],ENT_QUOTES);
    if ( !empty($p_id) ) {
            $zen_heading_title[] = $wpdb->get_var("SELECT post_title FROM $wpdb->posts  WHERE ID = $p_id");
    }
    }

    define(‘NAVBAR_TITLE’, implode(BREAD_CRUMBS_SEPARATOR, $zen_heading_title));
    define(‘WOZ_HOME_ADDRESS’, ‘/?’);
}else{
    define(‘NAVBAR_TITLE’, ‘Error:not found [ABSPATH]’.ABSPATH);
}

タイポくさい気もするんですが、$_GET[‘p’] のところ。
実際のサイトでは、?page_id=*** というふうに $_GET[‘page_id’] を使って、ページIDを表示しているんで、修正前のコードだと、ページタイトルが取得できずに、ブログタイトルだけが、パンくずや、タイトルに送られていたんですね。

そこで、 $_GET[‘page_id’] があった場合は、それをページIDとしてページタイトルを取得するように修正しました。

[解決]時々出る「Syntax error」on KAGOYAサーバー

KAGOYAサーバー(専用サーバー50)で、Zen Cart のテストサイトをアップしているんですが、しばらく何ともなかったのに、突然アクセスしづらくなってしまったんですね。

何か新しいモジュールを入れて、それが原因であれば、そこを取り除くのですが、今回の場合、セットアップ済みの複数サイトが同時に同じ現象に見舞われてしまい、標準インストールのままのサイト(zc_installすら削除してない)までアクセスしづらい状況になってしまったんですね。

アクセスしづらいというのは、更新ボタンを押せば、なんとか表示するけど、次のページへリンクするとまたエラーが出るといった感じです。

Zen Cart ではないんですが、同様のPHPを使ったCMSで同じ現象に悩んでいた方がいたみたいです。

KAGOYAでOpenPNEの設定にハマル

自分は SAKURA なんですが、相棒が KAGOYA でして、OpenPNE の設定でかなり長期間悩んでいました。一緒になってネット検索などをしているとここに当たりました。
酔生夢死: KAGOYAでOPENPNEその後
http://blogs.dion.ne.jp/php/archives/6159089.html
ここによると、ちゃんと「OpenPNE セットアップガイド」通りにやっても管理画面でエラーが出るとのこと。
たしかに、Syntax error が出ました。このエラーから文字コードか OpenPNE のバグかといろいろ探っていたのですが、KAGOYA そのものの問題でした。

KAGOYAでOPENPNEその後

ちなみに環境としてはカゴヤの共用プランに独自ドメインという仕様。
インストールというかセットアップに関しては前回述べた通り、session.auto_startとmbstring.encoding_translationのデフォルト設定によりうまくいかないので、こいつをhtaccessでポチッとな、とするだけ。

結果、KAGOYAのデフォルトPHP設定で「mbstring.encoding_translation」と「session.auto_start」がONになっているのが、問題だったというわけ。

kagoya_php_setting

  • mbstring.encoding_translation = OFF
  • session.auto_start = OFF
  • register_globals = OFF

WordPress 2.6 アップデートしてみた

結果から言うと、上手くいったみたいです。

あと、タグ名に日本語(マルチバイト文字列)を使った場合にタグ名が表示されないと言った報告があるようです。

WordPress.ORG フォーラム≫バグ報告と提案
WP 2.6 でタグ名が表示されない(2バイト文字を含む場合)

アップデートメモ

  1. バックアップを取っておく。
    WordPressフォルダ、およびデータベースのバックアップ。
    ※DBの更新が入ると思ってなかった(追加だけかと思ってた)ので、DBバックアップしてなかったので、ビビリました。
    (「やっちまったかぁ・・」って気分)
  2. 2.6のWordPressを上書きする。
    上書き終了後、WordPressフォルダにアクセスすると「データベースが古いので更新します」とかそんなこと言われるので、更新ボタンをポチ。
    次の瞬間、DBの更新が完了します。
    (何が更新されたのかは謎。phpMyAdminなどで確認してみましょう)
  3. wp-setting.php の修正。
    上書きインストールなので、WordPressIntegrator の動作に必要な「"=&"」を「"="」に修正する作業が必要になります。
  4. global変数の追加修正。
    今回のアップデートで、相当数のglobal変数が追加、削除されています。
    以下に今回設定したglobal変数を記述しておきます。

WordPress 2.6 で使う global 変数

global $allowedposttags, $allowedtags, $cache_categories, $cache_lastcommentmodified, $category_name, $comment, $comment_count_cache, $commentdata, $current_user, $day, $id, $m, $month, $month_abbrev, $monthnum, $paged, $pagenow, $post, $post_default_category, $post_meta_cache, $postc, $posts, $posts_per_page, $preview, $previousweekday, $table_prefix, $timedifference, $timestart, $user_ID, $user_identity, $user_login, $weekday, $weekday_abbrev, $weekday_initial, $withcomments, $wp, $wp_did_header, $wp_locale, $wp_query, $wp_rewrite, $wp_roles, $wp_smiliesreplace, $wp_smiliessearch, $wp_taxonomies, $wp_the_query, $wp_version, $wpcommentsjavascript, $wpcommentspopupfile, $wpdb, $wpmp_conf, $wpsmiliestrans, $xmlrpc_logging, $year, $$var, $_kses_allowed_protocols, $_wp_admin_css_colors, $_wp_menu_nopriv, $_wp_real_parent_file, $_wp_submenu_nopriv, $action, $admin_page_hooks, $akismet_api_host, $akismet_api_port, $akismet_caught, $akismet_nonce, $all_links, $always_authenticate, $app_logging, $authordata, $blog_id, $cache_lastpostdate, $cache_lastpostmodified, $cat, $chosen, $class, $comments, $current_site, $currentcat, $currentmonth, $debug, $descriptions, $edit_widget, $entry, $error, $EZSQL_ERROR, $feeds, $importer_started, $importer_users, $importing_blog, $is_apache, $is_IIS, $is_macIE, $is_winIE, $l10n, $language, $link, $link_id, $locale, $man, $map, $mcLogger, $menu, $merged_filters, $more, $multipage, $names, $numpages, $page, $pages, $parent_file, $phpmailer, $plugin_page, $post_default_title, $post_ID, $post_mime_types, $previouscat, $previousday, $redir_tab, $shortcode_tags, $sidebars_widgets, $submenu, $tab, $targets, $temp_ID, $testing, $timeend, $title, $type, $updated_timestamp, $urls, $user_email, $user_level, $user_pass_md5, $user_url, $userdata, $wp_actions, $wp_broken_themes, $wp_cockneyreplace, $wp_current_db_version, $wp_current_filter, $wp_dashboard_sidebars, $wp_db_version, $wp_default_secret_key, $wp_did_template_redirect, $wp_file_descriptions, $wp_filesystem, $wp_filter, $wp_hasher, $wp_header_to_desc, $wp_importers, $wp_meta_boxes, $wp_object_cache, $wp_queries, $wp_registered_sidebars, $wp_registered_widget_controls, $wp_registered_widgets, $wp_rich_edit, $wp_rich_edit_exists, $wp_scripts, $wp_styles, $wp_themes, $wp_user_roles, $wpcom_api_key;