「Dashicons」はWordPress 3.8から導入された公式のアイコンだそうです。
プラグインとかでもSVGアイコンを導入出来るけど〜公式のほうが自分は好き。
こんな奴なんですが〜以下のサイトでコードを入手可能なので早速使ってたのですが…
試しにContactform7を入れてみた(追記版)
以前「ECCUBEのお問い合わせフォームの複製/別作成 増やし方」で紹介もしましたが。
WordPressも実装しているのであればコチラのContactform7を入れたいくらいです。
主な機能は下記。
基本的なお問い合わせフォーム機能はもちろんのこと。
メール形式チェック
入力必須項目の実装
CAPTCHA(画像認証)
ファイル添付機能
などなど、カスタマイズ性には特化しているかと思います。
なのですが・・・ファーストサーバーで文字化けする・・・orz
不動産プラグイン:サイドバーに新着物件を表示させる。
サイドバーに物件を表示させようと「トップ物件表示」を弄っていましたが挫折。
面倒なので以前使っていたポストタイプを指定して表示させるコードを改変。
色んな所からコードを寄せ集め直して作りましたとさ。。。
(まぁ不動産系に係らずサイドバーに新着表示させられるんだけどねw)
[php]
<div class="newentry">
<?php $loop = new WP_Query( array( ‘post_type’ => ‘fudo’, ‘posts_per_page’ => 1 ) ); ?>
<?php query_posts( array( ‘post_type’ => ‘fudo’, ‘posts_per_page’ => 1 ) ); ?>
<?php if (have_posts()) : ?>
<?php while (have_posts()) : the_post(); ?>
<a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>">
<?php the_post_thumbnail(array(180,180), array(‘class’ => ‘left’)); ?>
</a>
<div class="title">
<a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>">
<?php echo mb_substr(get_the_title(),0, 1); ?>
</a><br />
<?php echo mb_substr(get_the_excerpt(),0, 50); ?><br />
<a href="<?php the_permalink();?>">
…続きを読む
</a>
</div>
<?php endwhile; wp_reset_query();?>
<?php endif; wp_reset_query();?>
</div>
[/php]
以下備忘録。
EC-CUBE 商品詳細に在庫数表示
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
; html-script: false ] <table border="0" cellpadding="0" cellspacing="0"> <tr><td> 在庫: <!--{if $arrProduct.stock_unlimited_min == 1}--> 有り <!--{else}--> <!--{if $arrProduct.stock_min != $arrProduct.stock_max}--> 残りあと<!--{$arrProduct.stock_min|escape}-->~<!--{$arrProduct.stock_max|escape}--> <!--{else}--> 残りあと<!--{$arrProduct.stock_min|escape}--> <!--{/if}--> <!--{/if}--> </td></tr></table> |
上記コードを表示させたいところに表示。
商品詳細ページのファイルは下記。
1 2 3 |
; html-script: false ] root/Smarty/templates/my_temp/ ┗products/detail.php |
eccube2.11 インストール時の文字化け対策
新規DBを下記のように設定します。
MySQL の文字セット: UTF-8 Unicode (utf8)
MySQL 接続照合順序: UTF-8 Unicode_ci
作成後に変更しても直らないので再インストールになります。
■PHP MyAdminで文字コードを utf8_general_ci に変更
※PHP MyAdminでデータベースを選択後、操作タブ→照合順序 で変更可能
↓
■文字化けが直っていればOK
ですが、もしその手順でインストールしていた、やってみたが直っていなければ下記の手順も試してみましょう。
■.htaccessに、
AddHandler .php
suPHP_ConfigPath
■php.iniを、.htaccessと一緒に指定した階層に置く。
参考サイト↓
http://xoops.ec-cube.net/modules/newbb/viewtopic.php?viewmode=flat&order=ASC&topic_id=9044&forum=10
もう一つの方法が
■下記のUTF-8の部分が別の物になっていれば、修正してからインストール
/data/class/SC_Query.php の79行目、
//$this->conn->setCharset(CHAR_CODE);
$this->conn->setCharset(‘utf8′);
/data/module\MDB2/Driver/mysql.php の539行目、
//if (!empty($this->dsn[‘charset’])) {
//$result = $this->setCharset($this->dsn[‘charset’], $connection);
$result = $this->setCharset(‘utf8′, $connection);
if (PEAR::isError($result)) {
$this->disconnect(false);
return $result;
}
//}
参考サイト↓
http://xoops.ec-cube.net/modules/newbb/viewtopic.php?topic_id=7678&forum=2&post_id=37349
WordPress 管理画面のレイアウト崩れ
管理画面のレイアウト崩れが。。
define( ‘CONCATENATE_SCRIPTS’, false );
ただしこれは根本的な解決策ではありません。
define( ‘CONCATENATE_SCRIPTS’, false ); というコードを wp-config.php の最初に追加する。
WordPress のスピードは遅くなるので、数日後に削除してまたテストしてみること。
(これを行うことで古いネットワークキャッシュを削除できます)
ということなので、一定期間経過後コードを削除してレイアウトの状態を見てみることにしました。
が、1週間強経過しているにもかかわらず、状態は変わらずです。
もうしばらく様子を見ようとも思ったのですが、原因が分からないのも気持ちが悪いので、
再度ぐーぐる先生に聞いてみました。
WordPressをCORESERVERに設置する|pc.casey.jp
今まで色々いじくっているので、.htaccessの内容がおかしくなっていることでしょう。
まずはこちらの記事の「.htaccessファイルを設置」する項目を実践しました。
WordPressルートフォルダの.htaccessには
AddHandler application/x-httpd-phpcgi .php
wp-contentフォルダの.htaccessには
AddHandler application/x-httpd-phpcgi .php
wp-adminフォルダの.htaccessには
AddHandler application/x-httpd-phpcgi .php
AddHandler application/x-httpd-phpcgi .php
AddHandler application/x-httpd-phpcgi .php
AddHandler application/x-httpd-phpcgi .php
AddHandler application/x-httpd-phpcgi .php
AddHandler application/x-httpd-phpcgi .php
AddHandler application/x-httpd-phpcgi .php
AddHandler application/x-httpd-phpcgi .php
それから「管理画面のレイアウトが崩れる=CSSが読み込まれていない」ということで、
納得のいく説明をされていた以下のブログも参考にさせてもらいました。
WordPress 2.9.1 自動アップデート後に管理画面表示がおかしくなった時の対処法|guttyo blog
上記ブログの管理者さんが調べたことによると、原因はこういうことらしい。
この現象の原因は下記のような.htaccessファイルでPHPをCGIモードで動かしているときに、
load-style.phpが吐き出す content-type=text/htmlだからだそうだ。
text/cssではないのでFirefoxではcssと認識しないということらしい。
AddHandler application/x-httpd-php5cgi .php
なるほど、text/cssになればいいって訳なのね。
でも、部分的にCGIとして動かしてはいてもPHP全体をCGIとして動かしてはいないし、
やっぱ、なんかおかしくなってるのかなぁ?
まぁ、要はこれが重要な訳で。
# こいつだけモジュール版で動作させる
AddHandler application/x-httpd-php .php
このコードをwp-adminファイルの.htaccessに記載すると、
今まで悩んでいたレイアウト崩れは嘘のように解決しました。
define( ‘CONCATENATE_SCRIPTS’, false );
ともおさらばしました。
レビュー一覧ページ作成 ec-cube2.11以降
まず管理画面にログインして、デザイン管理>PC>レイアウト設定 から、ページを新規入力します。
URLは review_list.php として、以下のコードを貼り付けて保存します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
<div id="customervoice_area"> <h2><img src="<!--{$TPL_URLPATH}-->img/title/tit_product_voice.jpg" alt="この商品に対するお客様の声" /></h2> <!--{if count($arrReview) > 0}--> <ul> <!--{section name=cnt loop=$arrReview}--> <li> <!--{$arrReview[cnt].title|h}--> <!--{$arrReview[cnt].create_date|sfDispDBDate:false}--> 投稿者:<!--{if $arrReview[cnt].reviewer_url}--><a href="<!--{$arrReview[cnt].reviewer_url}-->" target="_blank"><!--{$arrReview[cnt].reviewer_name|h}--></a><!--{else}--><!--{$arrReview[cnt].reviewer_name|h}--><!--{/if}--> おすすめレベル:<span class="recommend_level"><!--{assign var=level value=$arrReview[cnt].recommend_level}--><!--{$arrRECOMMEND[$level]|h}--></span> <!--{$arrReview[cnt].comment|h|nl2br}--> </li> <!--{/section}--></ul> <!--{/if}--></div> |
次に、html/user_data/review_list.php を開いて、次のように修正します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 |
<!--?php require_once '../require.php'; require_once CLASS_EX_REALDIR . 'page_extends/LC_Page_Ex.php'; /** * ユーザーカスタマイズ用のページクラス * * 管理画面から自動生成される * * @package Page */ class LC_Page_User extends LC_Page_Ex { /** * Page を初期化する. * * @return void */ function init() { parent::init(); $masterData = new SC_DB_MasterData_Ex(); $this--->arrRECOMMEND = $masterData->getMasterData("mtb_recommend"); } /** * Page のプロセス. * * @return void */ function process() { parent::process(); $this->action(); $this->sendResponse(); } /** * Page のアクション. * * @return void */ function action() { //レビュー情報の取得 $this->arrReview = $this->lfGetReviewData(); } /** * デストラクタ. * * @return void */ function destroy() { parent::destroy(); } //商品ごとのレビュー情報を取得する function lfGetReviewData() { $objQuery =& SC_Query_Ex::getSingletonInstance(); //商品ごとのレビュー情報を取得する $col = "t1.create_date, t1.reviewer_url, t1.reviewer_name, t1.recommend_level, t1.title, t1.comment, t2.product_id, t2.name, t2.main_list_image"; $from = "dtb_review as t1 left join dtb_products as t2 using (product_id)"; $where = "t1.del_flg = 0 AND t1.status = 1 ORDER BY t1.create_date DESC"; $arrReview = $objQuery->select($col, $from, $where, $arrval); return $arrReview; } } $objPage = new LC_Page_User(); register_shutdown_function(array($objPage, 'destroy')); $objPage->init(); $objPage->process(); |
data/Smarty/templates/default/user_data/review_list.tpl を以下のように変更します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
<h2><img src="<!--{$TPL_URLPATH}-->img/title/tit_product_voice.jpg" alt="この商品に対するお客様の声" /></h2> <!--{if count($arrReview) > 0}--> <ul> <!--{section name=cnt loop=$arrReview}--> <li> <a href="<!--{$smarty.const.P_DETAIL_URLPATH}--><!--{$arrReview[cnt].product_id|u}-->"> <img src="{$smarty.const.ROOT_URLPATH}resize_image.php?image={$arrReview[cnt].main_list_image|sfNoImageMainList|h}&width=40&height=40" alt="<!--{$arrReview[cnt].name|h}-->" /></a> <a href="<!--{$smarty.const.HTTP_URL}-->products/detail.php?product_id=<!--{$arrReview[cnt].product_id|u}-->"><!--{$arrReview[cnt].name|h}--></a> <!--{$arrReview[cnt].title|h}--> <!--{$arrReview[cnt].create_date|sfDispDBDate:false}--> 投稿者:<!--{if $arrReview[cnt].reviewer_url}--><a href="<!--{$arrReview[cnt].reviewer_url}-->" target="_blank"><!--{$arrReview[cnt].reviewer_name|h}--></a><!--{else}--><!--{$arrReview[cnt].reviewer_name|h}--><!--{/if}--> おすすめレベル:<span class="recommend_level"><!--{assign var=level value=$arrReview[cnt].recommend_level}--><!--{$arrRECOMMEND[$level]|h}--></span> <!--{$arrReview[cnt].comment|h|nl2br}--> </li> <!--{/section}--></ul> <!--{/if}--> |
以上。
ブロック化は以下。
デザイン管理>PC>ブロックの設定新規ブロックで下記を作成。
ブロック名:お客様の声一覧
ファイル名:review_list_bloc
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
<div id="customervoice_area"> <h2><img src="<!--{$TPL_URLPATH}-->img/title/tit_product_voice.jpg" alt="お客様の声一覧" /></h2> <!--{if count($arrReview) > 0}--> <ul> <!--{section name=cnt loop=$arrReview}--> <li> <a href="<!--{$smarty.const.P_DETAIL_URLPATH}--><!--{$arrReview[cnt].product_id|u}-->"> <img src="{$smarty.const.ROOT_URLPATH}resize_image.php?image={$arrReview[cnt].main_list_image|sfNoImageMainList|h}&width=40&height=40" alt="<!--{$arrReview[cnt].name|h}-->" /></a> <a href="<!--{$smarty.const.HTTP_URL}-->products/detail.php?product_id=<!--{$arrReview[cnt].product_id|u}-->"><!--{$arrReview[cnt].name|h}--></a> <!--{$arrReview[cnt].title|h}--> <!--{$arrReview[cnt].create_date|sfDispDBDate:false}--> 投稿者:<!--{if $arrReview[cnt].reviewer_url}--><a href="<!--{$arrReview[cnt].reviewer_url}-->" target="_blank"><!--{$arrReview[cnt].reviewer_name|h}--></a><!--{else}--><!--{$arrReview[cnt].reviewer_name|h}--><!--{/if}--> おすすめレベル:<span class="recommend_level"><!--{assign var=level value=$arrReview[cnt].recommend_level}--><!--{$arrRECOMMEND[$level]|h}--></span> <!--{$arrReview[cnt].comment|h|nl2br}--> </li> <!--{/section}--></ul> <!--{/if}--></div> |
トップページのブロックで表示する場合、html直下のindex.php下記のような感じで書き換え。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 |
require_once './require.php'; require_once CLASS_EX_REALDIR . 'page_extends/LC_Page_Index_Ex.php'; // }}} // {{{ generate page //$objPage = new LC_Page_Index_Ex(); //register_shutdown_function(array($objPage, "destroy")); //$objPage->init(); //$objPage->process(); /** * ユーザーカスタマイズ用のページクラス * * 管理画面から自動生成される * * @package Page */ class LC_Page_User extends LC_Page_Ex { /** * Page を初期化する. * * @return void */ function init() { parent::init(); $masterData = new SC_DB_MasterData_Ex(); $this->arrRECOMMEND = $masterData->getMasterData("mtb_recommend"); } /** * Page のプロセス. * * @return void */ function process() { parent::process(); $this->action(); $this->sendResponse(); } /** * Page のアクション. * * @return void */ function action() { //レビュー情報の取得 $this->arrReview = $this->lfGetReviewData(); } /** * デストラクタ. * * @return void */ function destroy() { parent::destroy(); } //商品ごとのレビュー情報を取得する function lfGetReviewData() { $objQuery =& SC_Query_Ex::getSingletonInstance(); //商品ごとのレビュー情報を取得する $col = "t1.create_date, t1.reviewer_url, t1.reviewer_name, t1.recommend_level, t1.title, t1.comment, t2.product_id, t2.name, t2.main_list_image"; $from = "dtb_review as t1 left join dtb_products as t2 using (product_id)"; $where = "t1.del_flg = 0 AND t1.status = 1 ORDER BY t1.create_date DESC"; $arrReview = $objQuery->select($col, $from, $where, $arrval); return $arrReview; } } $objPage = new LC_Page_User(); register_shutdown_function(array($objPage, 'destroy')); $objPage->init(); $objPage->process(); |
基本的には同じ作業。
画像とかは適当にかえましょう。
(レビュー自体未投稿だと空欄なので適当に用意しておきましょう。)
tpl(ページ詳細等)からphpを呼び出す方法。
下記のコード追加でPHPをインクルード可能。
1 2 3 |
<!--{php}--> include('/XXXXpath/index.php'); <!--{/php}--> |
またはSmartyからPHPを実行することが出来ます。
パスは開いたときのURLからの相対パスorサーバーの絶対パス。
ファイルパスは下記で調べる。
1 2 3 |
// 1つ上のディレクトリにある index.php のサーバー上の絶対パスを取得し表示します。 $path = realpath("../index.php"); echo $path; |
コレで別のPHPアプリも起動可能。掲示板/Blogなど。
「特定商取引法」項目のカスタマイズ
特定商取引法の項目追加の件 古物系(オークション)や中古家電販売をされている方は許可番号をどうしたって入力しないとなりません。
(場合によっては数県分入力せねばいけないときもありマスが。)
参考例として、項目「運営責任者」の下に項目「許可番号等」を追加する例を記載します。
今回の追加作業にはDBの操作が必要になるので、自己責任でバックアップとりましょう。
追加分カラム名を「law_no1」としました。
増やす場合は重複しなければあとは任意で好きなだけ増やしましょう。
基本MySQLしかいじったことないので以下はMySQL中心です。
1.\data\class\pages\admin\basis\LC_Page_Admin_Basis_Tradelaw.php 管理画面用の追加。
・「パラメータ情報の初期化」の「運営責任者」の下に下記を追加する。
1 |
objFormParam->addParam("古物商許可証番号", "law_no1", MTEXT_LEN, "KVa", array("EXIST_CHECK", "MAX_LENGTH_CHECK")); |
2.\data\Smarty\templates\admin\basis\tradelaw.tpl 管理画面用テンプレ変更 ・「運営責任者」のデータ部分の下に下記を追加する。
1 2 3 4 |
許可番号等<span> *</span> <!--–{assign var=key value=”law_no1″}–--> <span><!--–{$arrErr[$key]}–--></span> <textarea name="”<!–{$arrForm[$key].keyname}–">” maxlength=”<!–{$arrForm[$key].length}–>” cols=”60″ rows=”8″ style=”<!–{$arrErr[$key]|sfGetErrorColor}–>” ><!–{$arrForm[$key].value|escape}–></textarea><span> (上限<!--–{$arrForm[$key].length}–-->文字)</span> |
\data\Smarty\templates\default\order\index.tpl (「利用ガイド」での「特定商取引法」ボタン押下後の表示テンプレート) ・「運営責任者」のデータ部分の下に下記を追加する。
1 2 |
古物商許可証番号 <!--–{$arrRet.law_no1|escape|nl2br}–--> |
携帯スマフォも同様に追加。 \data\Smarty\templates\sphone\order\index.tpl \data\Smarty\templates\mobile\order\index.tpl 携帯
1 2 |
[emoji:39]<span>古物商許可証番号</span> <!--–{$arrRet.law_no1|escape|nl2br}–--><hr /> |
絵文字は好きなの使いましょう。 (ネットで「絵文字コード」とかググれば一覧表が出てくるはずなので。) スマフォ
1 2 |
<dt>古物商許可番号</dt> <dd><!--{$arrOrder.law_no1_company|h}--></dd> |
最後にデータベース追記 dtb_baseinfo の中にカラム追加。 カラム「law_no1」を追加。 (カラム形式はtext)
特定商取引法の文字数制限アップについて/data/mtb_constants_init.php
今日、特商法の部分を記入していたら文字数制限に到達w
なのでいじりましたw
/data/mtb_constants_init.php
/data/class/pages/admin/basis/LC_Page_Admin_Basis_Tradelaw.php
/data/Smarty/template/admin/basis/tradelaw.tpl
この3つを主にいじります。
手順は二段階。
1.もともとの入力制限数を解除
2.文字数チェック自体要らないので削除
3.入力時に文字をカウントしてるので解除
1./data/mtb_constants_init.phpの変更点
1 2 3 4 |
/** 長い項目の文字数 (住所など) */ define('MTEXT_LEN', 200); /** 長中文の文字数 (問い合わせなど) */ define('MLTEXT_LEN', 1000); |
下記に変更。多分250行から260行付近です。
1 2 3 4 |
/** 長い項目の文字数 (住所など) */ define('MTEXT_LEN', 6000); /** 長中文の文字数 (問い合わせなど) */ define('MLTEXT_LEN', 2000); |
MTEXT_LEN が特商法の入力で一番文字数の必要なところ。
配送や返品に関してだと思います。
なのでありったけの文字数突っ込みましたw
2./data/class/pages/admin/basis/LC_Page_Admin_Basis_Tradelaw.php
入力して多かったらまた入力してくれ!みたいなことを行っている部分を削除します。
125から145行目あたりで解除したい項目の下記のコードを削除
「,」も削除してください。じゃないとエラーになるはず。
,”MAX_LENGTH_CHECK”
となりの「”EXIST_CHECK”」は未入力チェックっぽいのでいじらずw
3./data/Smarty/template/admin/basis/tradelaw.tpl
入力時のフォームで文字数をカウントしてるのでいっそのこと解除。
Smartyの都合か1.で変更してもなぜかすぐに反映されなくて、じれったかったので文字カウントごと消してやりました。
maxlength=””
この文が書いてあるような箇所で文字数増やしたいところを片っ端から削除。
これ消せばOKですが、あとはお好みで下記の文章も消しましょう。
(上限文字)
今日、もらった文章をそのままコピペで行こうかと思って突っ込んだら文字数制限で、ちょっとイラっとしながらも、どうせDBで制御してんだろ!とか思いながらDBのぞいてましたが見当たらず。
なので、ググりながらいじりながらようやく正解が出ましたよw
代引きとか配達方法の文言入れるの考えたらどうやったって200文字以上いくw
あとできれば古物商とか許可番号とかいろいろ増やせれば楽なのにねw
一応、特定商取引法の項目の追加も一度やっているのであとで書きます・・・・記憶のあるうちにw