webアプリ



2013年 5月 5

ソーシャルボタンをブログに設置するのにいちいち各ソーシャルサービスのdevサイトから作るのは意外と面倒。WordPressのプラグインでいいのがないか探していたらこれが中々よいので導入してみました。

WP Social Bookmarking Light

ソーシャルボタンを好きな位置に表示する

なぜかスクリーンショットで紹介されていますが、写経するとこんな感じ。

<?php
if(function_exists("wp_social_bookmarking_light_output_e")){
  // Using your setting the service in admin page.
  wp_social_bookmarking_light_output_e();
  // Using the service written here.
  wp_social_bookmarking_light_output_e('hatena, facebook_like, evernote');
}
?>

プラグインのソースを見ると、

function wp_social_bookmarking_light_output_e( $services=null, $link=null, $title=null )
{
....
}

となっており、引数に wp_social_bookmarking_light_output_e(services, link, title)とすればindexページでも各エントリー用のソーシャルボタンが設置できそう。設定画面でindexページにも表示することが可能なのですが、表示する場所が固定されてしまうので、引数を指定してtemplateをカスタマイズする。

外観 → テーマの編集から対応するtemplate(index.phpやsingle.php、archive.php、search.php等)に下記コードを挿入する。

挿入するコード
<?php
if(function_exists("wp_social_bookmarking_light_output_e")){
  wp_social_bookmarking_light_output_e('', get_permalink( $id ) , $post->post_title);
}
?>

WP Social Bookmarking Lightの設定

設定 → WP Social Bookmarking Lightの設定で位置の項目をNoneにする。

注意点

テーマをアップデートするとカスタマイズした内容は消えるので注意。


Filed under: WordPress

Trackback Uri






2011年 10月 13

規格を利用していて、ある規格(長いものや重いものなど)の場合は別途送料となる場合の処理を書いてみる。
ただし無理やり実装。

動作

該当する規格分類の場合は送料を通常より1000円プラスする。

環境

EC-CUBE 2.4
PostgreSQL

段取り

各規格の分類は dtb_classcategory に格納されていて、classcategory_id というユニークな通し番号が振られている。
カートのセッションにもこの通し番号が格納されているようなので、こいつを使って判別することとする。
なので、適用する規格の分類を登録した後に、classcategory_id を調べなくてはならない。

工程

[eccube]/data/class/SC_CartSession.php

function chkClassCategory という関数を追加する.
一番最終行の

}
?>

の前に追加.

    /** カート中の商品をチェックして別送料対象かチェックする
     * 1つでも対象商品があればTrueを返す.
     * True:対象商品あり False:対象商品なし
     * $_SESSION[$this->key][$i]['id'][0]...プロダクトid;
     * $_SESSION[$this->key][$i]['id'][1]...規格1;
     * $_SESSION[$this->key][$i]['id'][2]...規格2;
     */
    function chkClassCategory() {
        $max = $this->getMax();
        for($i = 0; $i <= $max; $i++) {
            $classcategory1 = $_SESSION[$this->key][$i]['id'][1];
            $classcategory2 = $_SESSION[$this->key][$i]['id'][2];
            
            // マッチする条件を設定(以下は例)
            if(
                ($classcategory1 >= 208 AND $classcategory1 <= 211)
                OR ($classcategory2 >= 208 AND $classcategory2 <= 211)
                OR ($classcategory1 >= 11 AND $classcategory1 <= 16)
                OR ($classcategory2 >= 11 AND $classcategory2 <= 16)
            ) return true;
        }
        // マッチしなかったらfalseを返す
        return false;
    }

[eccube]/data/class/helper/SC_Helper_DB.php
function sfTotalConfirm

修正前

        // 合計送料の取得
        $arrData['deliv_fee'] = 0;

修正後

        // 合計送料の取得
        $arrData['deliv_fee'] = 0;

        // 規格分類チェック(送料オプション)
        $classcategory_flag = $objCartSess->chkClassCategory();
        if($classcategory_flag){
            $arrData['deliv_fee'] += 1000;
        }

例では該当規格分類の場合は1000円プラスするようになっている。
決め打ちの場合ここまでで出来てしまう。

テンプレートに注釈をつけるなら下記のように tpl_classcategory_flag をつけて、テンプレートを修正する。

修正前

        // 合計送料の取得
        $arrData['deliv_fee'] = 0;

修正後

        // 合計送料の取得
        $arrData['deliv_fee'] = 0;

        // 長尺商品チェック
        $classcategory_flag = $objCartSess->chkClassCategory();
        if($classcategory_flag){
            $arrData['deliv_fee'] += 1000;
            $objPage->tpl_classcategory_flag = 1;
        }

[eccube]/data/Smarty/templates/defaultKai/shopping/confirm.tpl
修正前

        <tr>
          <th colspan="4" class="resulttd">送料</th>
          <td class="pricetd"><!--{$arrData.deliv_fee|number_format}-->円</td>
        </tr>

修正後

        <tr>
          <th colspan="4" class="resulttd">送料
          <!--{if $tpl_classcategory_flag}-->
		  <br />
		  <span class="price">(内 大判送料:1,000円)</span>
          <!--{/if}-->
		  </th>
          <td class="pricetd"><!--{$arrData.deliv_fee|number_format}-->円</td>
        </tr>

[eccube]/data/class/pages/shopping/LC_Page_Shopping_Confirm.php
変更なしでおk


Filed under: EC-CUBE

Trackback Uri






2011年 9月 15

参考:EC-CUBEカスタマイズ – 商品詳細ページにテキスト入力欄を追加|ネットショップ構築&運営サポート – ビー・フレンド

例えば、ハンコの名前部分を入力してもらうとか、規格で管理できないほどの多量のサイズとかを入力してもらうようにできる。

参考ページの手順で導入してみたけれど、テキスト入力欄設定されていない商品をカートに入れることができない不具合があるみたい。あと、PostgreSQLの場合は、Viewを再生成する必要がある。

環境

  • EC-CUEB 2.4.4
  • PostgreSQL
  • データベース編集

    • テキスト入力欄を表示するか否かを判別するフラグ
      • 対象テーブル:dtb_products
      • 追加カラム:add_flg (データ型: integer)
    • テキスト入力欄(テキストボックス)
      • 対象テーブル:dtb_order_detail
      • 追加カラム:add_field (データ型: text)
    ALTER TABLE dtb_products ADD COLUMN add_flg integer;
    ALTER TABLE dtb_order_detail ADD COLUMN add_field text;

    ポイント

    pgsqlの場合はdtb_productsにカラムを追加したらviewの再生成が必要になる。

  • [EC-CUBE カスタマイズ日誌] 第 5 回 商品のサブ画像の数を増やしたい! | バシャログ。
  • EC-CUBE インストールディレクトリにある install/sql/create_view.sql を適宜変更して実行する。 .. continue reading ..


    Filed under: EC-CUBE

    Trackback Uri






    2011年 6月 1

    EC-CUBE 2.4の時はかなり手を加えないと使えない感があったのだけれど、久しぶりに触ってみた感じではなかなかの好感触。

    簡単に気づいた点は

    ポイント周りの不具合

    ポイントを付加するタイミングが「対応状況」を「発送済み」にした時になった。

    クレジットカードでの決済未完了時(失敗など)

    「決済処理中」という対応状況が増えて、入金待ちと区別が付きやすくなった。

    ウェブペイメントプラスでの確認だったけど、悪くないかも。決済フローも簡潔で、これなら3000円出しても価値があると思う。

    決済フローのスクリーンキャプチャ

    決済フロー
    注文確認画面。「次へ」で決済ページへ移行。

    決済フロー2
    PayPal ウェブペイメントプラスの決済ページ。iframeで表示されるので違和感もない。入力画面も簡潔でいい感じ。

    決済フロー3
    クレジットカード情報を送信した時もAjaxで処理されて、ページ移行がない。

    決済フロー4
    決済処理完了。ここまでスムーズに出来る。

    PayPalユーザーなら「PayPalで支払い」を選べばPayPalサイトへ移行して決済手続きをしてくれる。このフローが利用出来るだけでも価値がありそう。

    EC-CUBEでPayPalのsandbox(テスト環境)してみる

    PayPalウェブペイメントプラスの概要

    テストだけなら https://developer.paypal.com/ でアカウントを作成すれば出来るはず。

    「ウェブ ペイメント プラス インテグレーションガイド」 に詳しく書かれているけど、テストアカウントは売り手と買い手、それぞれ作成する事。

    また、受取人の「Payment Review」という項目は「Disabled」にしておく事。Enabled(レビューが必要)になっている場合は注意。

    PayPalテストアカウント

    EC-CUBE側はPayPal決済モジュールの設定画面で「決済サイトURL」を
    https://securepayments.sandbox.paypal.com/acquiringweb
    にする必要がある。
    メールアドレスは、テストアカウントの売り手のものを使う。

     

    Sign up for PayPal and start accepting credit card payments instantly.
    PayPal アカウントを作成して、あなたのサイトにカード決済を導入!


    Filed under: EC-CUBE,PayPal

    Trackback Uri






    2011年 3月 24

    PHP5.3にしたらOpenPNEでエラーが発生。
    このようなエラー。

    Deprecated: Assigning the return value of new by reference is deprecated in /var/www/html/OpenPNE/lib/include/PEAR.php on line 569
    
    Deprecated: Assigning the return value of new by reference is deprecated in /var/www/html/OpenPNE/lib/include/PEAR.php on line 572
    
    以下(ry

    PEAR使ってる状態でPHPのバージョンを上げると、PEARから上記エラーが出てくる場合がありますが・・・
    これは、PHP5では、newすると参照になるのに、それを =& でさらに参照で受け取ろうとしてエラーが出ている模様。
    消す方法はいくつかあります。
    1. error_reportingで表示しないようにする。
    error_reporting(E_ALL & ~E_DEPRECATED);

    2. エラーの出ている場所を修正する。
    エラー箇所のソースを読むと、 =& になっているので = に変更。

    参照:為せば成る・・・かもしれない

    と言うことなので、OpenPNEのconfig.phpを修正する。
    PHPの仕様が変更されたので出る警告らしい。
    エラーは消えるけど、将来的にはソースを変更した方がいいのかも。

    OpenPNE_DIR/config.php 236行目付近(バージョンによって違うかも)

    ///
    // デバッグ、エラーハンドリング、ログ設定
    ///
    
    //error_reporting(E_ALL ^ E_NOTICE); ←コメントアウト
    error_reporting(E_ALL & ~E_DEPRECATED & ~E_NOTICE); ←追記

    OpenPNEの不具合

    get@hoge.com (空メールで登録用URLを送信するアドレス)へ送ってもメールが帰ってこない。
    オープン制の場合はスクリプトの修正が必要かも。
    日記のメール投稿やコミュニティの投稿などは出来るようだ。


    Filed under: OpenPNE

    Trackback Uri