設定ファイル
/data/config/config.php
以前は/data/install.php
投稿者: hashimoto
WordPress のデザインを EC-CUBE と同じにする
WordPress のヘッダー、サイドバー、フッターをEC-CUBEと同じように作っても良いが、変更があると、倍の作業になってしまう。
そこで、EC-CUBEのHTMLソースを自動で抽出して、Wordpress の該当部分に表示すると、合理的になる。
ソースの一例なので、任意に調整して利用する。
<body <?php body_class(); ?>> <div id="wrapper" class="hfeed"> <?php $data = 'http://'.$_SERVER[SERVER_NAME].'/'; $line = file($data); $i = 0; while($line[$i]!=""){ if(preg_match("/▼HEADER/", $line[$i])) $print = 'on'; if(preg_match("/▲HEADER/", $line[$i])) $print = ''; if($print == 'on') echo $line[$i]; $i ++; } ?> <div id="main">
※ 注意
EC-CUBEのCSSを読み込んだり、それぞれのCSSの衝突を回避したりという作業も必須です。
CSSで画像を背景に敷いているときは、パスのお読み変えも必要です。
その辺のノウハウは、皆さんがんばって挑戦してみて下さい。
MTで記事IDとカテゴリIDの関連付け
テーブル: mt_placement
placement_id
自動採番、このテーブルでのID
placement_blog_id
ブログID
placement_category_id
カテゴリID
placement_entry_id
記事ID(post_id)
placement_is_primary
表示フラグ
管理画面にログインしているユーザーID
<?php echo $user_ID; ?>
wordpress の管理画面でメニューを自由に操るヒント
/wp-admin/admin-header.php の190行目付近
require(ABSPATH . ‘wp-admin/menu-header.php’);
「menu-header.php」と書いてあるが、サイドメニューのことだ!
ファイル構成的にはヘッダーファイルに含まれるということらしいが、紛らわしい。
wordpressでカスタムフィールドを使いすぎると
カスタムフィールドテンプレートなど便利なプラグインもありますが、
項目(フィールド)を沢山設けると動作がおかしくなることがあります。
原因はデータベースに登録するSQL分が長くなり、サーバーが全てをうまく処理できなくなってしまいます。
ほとんどのサーバーでは、SQL文の長さには制限があります。
カスタムフィールドのDBテーブルは柔軟性のある構造になっています。
この柔軟性な構造のため、複雑な長い SQL を発行します。
一つのカスタムフィールドにつき一つの JOIN(結合)が必要です。
5つのフィールドを参照しようとすると、5つの JOIN(結合)が必要になります。
JOIN は著しくパフォーマンスを低下させます。
Codex関数で表示すると、上記のようなことになりますので、
生のPHPでデータベースから直接取り出すことで回避できます。
WordPress 製作に便利なプラグイン
Disable Revisions and Autosave
http://exper.3drecursions.com/2008/07/25/disable-revisions-and-autosave-plugin/
WordPressのリビジョンと自動保存を停止させる。
Delete-Revision
http://wordpress.org/extend/plugins/delete-revision/
既にたまっているリビジョンを削除するプラグインです。
Duplicate Post
http://wordpress.org/extend/plugins/duplicate-post/
記事の複製プラグインです。テスト投稿などに使います。投稿を楽に増やせます。
参考
WordPressで肥大し続けるリビジョンを管理してすっきりさせる方法
http://whitehatseo.jp/delete-revision-and-disable-revisions/
サーバ圧迫回避!WordPressのリビジョン機能の停止と過去分削除
http://05step.com/2012/08/06/disable-delete-revision/
運用に便利なプラグイン
all-in-one-seo-pack
db-cache-reloaded-fix
google-sitemap-generator
sniplets
wordpress-importer
syntax-highlighter
バージョン3よりもバージョン2が好みの方も多いです。
なぜかって?
lightbox + syntax-highlighterバージョン3
の場合、lightboxが動きません。
http://wordpress.org/extend/plugins/syntax-highlighter/developers/
EC-CUBEでサムネイルが表示されない
resize_image.php などのエラーが出る場合も同様。
原因は、httpヘッダーに、いらないものをはいてしまう場合です。
僕の場合は、httpヘッダーに、メッセージを吐く仕組みを活用していたので、それが原因でした。
imgタグで指定した画像の下にわずかな隙間(空白)が空いてしまう
CSSコード
img {
vertical-align:bottom
}
これで、画像の下から空白がなくなります。
EC-CUBE 2.11.0 データベースの文字化け対策
2.11では、ファイル構成やデザインなど大幅な変更が行われたようです。
しかしデータベースの文字化けに関しては、
「多くのレンタルサーバーで採用されている仕様」では、
残念ながら文字化けしてしまいます。
自己責任でインストールして使うには問題はありませんが、
カスタマイズなどを施す場合には必須になります。
/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; } //}
このように簡単なことですが、注意点があります。
※ 注意
インストールの特定のタイミングで行うこと。(タイミングが違うと、別な問題が発生します)
EC-CUBEで規格を増やす。動作が重くならない方法。
・web製作会社さま
・ディレクション専門会社さま
・広告代理店さま
・web転がし屋さま
・webピン跳ね業者さま
・個人業者さま(僕も個人事業です)
お仕事を下さる方は、歓迎いたします。
いつでも電話でお答えできる「技術サポート」月額5万円!
客先で、即答できれば、受注率がアップします。
もちろん制作費も激安です。
年払いは4割引(年間36万円)で、安心受注が可能になります。
※ 【注意】クライアントへのプレゼン資料作成は、含まれません。
ご希望の方は、has@mint410.com まで。
EC-CUBEで規格を3つに増やすと、当然ながら、「動作が重い」という問題が発生します。
これは「規格違いが商品数」として扱われる設計だから起きることです。
規格1の数 × 規格2の数 × 規格3の数 = 商品数
例) 規格1の数(10) × 規格2の数(2) × 規格3の数(5) = 商品数(100)
千個の商品データを読み込んでいるので、重くなって当然です。
商品数は1つのまま、規格を増やすことってできるのでしょうか?
やってみると、簡単でした。
このカスタマイズのお値段は、3万円です。
ご希望により更なるカスタマイズもできます。
【特徴】
項目の指定は、CSVファイルにしましたので、後からの変更はどなたでも簡単にできます。
【問題点】
規格ごとに商品コードを活用する場合は非対応です。
ご希望があれば製作いたします。
作るのは簡単ですが、使わない機能はないほうが操作しやすいです。
「簡単で高機能」を日ごろから心がけております。
最近のSEO対策
HTMLタグやMETAタグを適正に活用するのは当然のことですが、最近の流行についてご説明いたします。
サテライトサイト
より幅広いターゲット層のアクセスを獲得する為に、本サイトとは別に立ち上げられたウェブサイトのこと。
自社が提供する商品やサービスに関わる情報提供や、コミュニティサイトなど、自社の見込み客にとって有益なサテライトサイトを複数持つことで、自社サイトだけではとらえきれない見込み客のアクセスを獲得する効果がある。
ブログ
サテライトサイトと類似の活用方法で本サイトへのアクセスを増やすことを目的に運用する。
EC-CUBE、購入数量で価格変動
EC_CUBE 勝手にエスケープされる
CORE_SERVER の場合
.htaccess で ”php_flag magic_quotes_gpc 0” は有効だ
しかし、php.ini で ”magic_quotes_gpc = Off” すると
なぜか On になってしまう?
zencart のテンプレートと編集箇所
▽ HTMLの大枠
/includes/templates/template_default/common/tpl_main_page.php
▽ サイド各ボックスのデザイン
/indonesiago.orgs/templates/classic/common/tpl_box_default_left.php
▽ サイドボックスの中身
/includes/templates/template_default/sideboxes/*.php
▽ カテゴリ(商品一覧)ページ上部のサブカテゴリ
/indonesiago.orgs/templates/template_default/common/tpl_columnar_display.php
▽ フッターカテゴリ
/includes/templates/template_default/templates/tpl_modules_categories_tabs.php
▽ サイド・インフォメーション
/includes/templates/template_default/sideboxes/tpl_information.php
▽ 新着商品の外枠
/includes/templates/template_default/templates/tpl_modules_whats_new.php
▽ 新着商品の中身
/includes/templates/template_default/common/tpl_columnar_display.php
▽ 新着商品のもっと中身
/includes/modules/new_products.php
▽ 商品一覧の中身
/includes/modules/product_listing.php
▽商品一覧の並びレイアウト
/indonesiago.orgs/templates/template_default/common/tpl_tabular_display.php
▽ 商品一覧(カテゴリ一覧)
/indonesiago.orgs/templates/template_default/templates/tpl_index_product_list.php
▽ (サブカテゴリ一覧)
/indonesiago.orgs/templates/template_default/templates/tpl_index_categories.php
▽ 商品詳細
/includes/templates/template_default/templates/tpl_product_info_display.php
▽ 商品画像
/includes/templates/template_default/templates/tpl_modules_main_product_image.php
▽ submitボタンを画像からデフォルトにする(モバイル対応)
/includes/functions/html_output.php
▽ レフトカラム
/includes/modules/column_left.php
▽管理画面
/admin/*.*
/admin/includes/*.*
▽ TOPページとそれ以外の振り分け
if ( ($_GET[main_page] == “index”) && ($_GET[cPath] == ”) ){
}
EC-CUBEで静的URL
httpd.conf の確認
・LoadModule rewrite_module modules/mod_rewrite.so
・AllowOverride All
AllowOverride がAllになっていないことが多い
この2箇所に注意
”.htaccess”のサンプル
#mode_rewriteの設定 RewriteEngine on RewriteBase /demo/hogehoge.jp/ // EC-CUBEのルートディレクトリ RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^products/detail/([0-9]+)? products/detail.php?product_id=$1 [L] RewriteRule ^products/list/([0-9]+)? products/list.php?category_id=$1 [L] RewriteRule ^mobile/products/detail/([0-9]+)_([0-9]+)? mobile/products/detail.php?product_id=$1&page=$2 [L] RewriteRule ^mobile/products/list/([0-9]+)? mobile/products/list.php?category_id=$1 [L]
例(2)examle.com
#mode_rewriteの設定 RewriteEngine on RewriteBase /demo/examle.com/ RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^products/detail/([0-9]+)? products/detail.php?product_id=$1 [L] RewriteRule ^products/list/([0-9]+)? products/list.php?category_id=$1 [L] RewriteRule ^mobile/products/detail/([0-9]+).html? mobile/products/detail.php?product_id=$1 [L] RewriteRule ^mobile/products/list/([0-9]+).html? mobile/products/list.php?category_id=$1 [L]
ASINコードでアマゾンの商品画像を表示する
画像URLは、
http://images-jp.amazon.com/images/P/[ASINコード].[国コード].[画像の種類].jpg
で表記できるとのこと。
これは経験則で、公式なアナウンスではないはずだが、周知の事実のような感じになっている。
私も以前は利用していた。
国コードは、日本は09。
画像の種類は、小さい順に、THUMBZZZ,TZZZZZZZ,MZZZZZZZ,LZZZZZZZ
のだめ21巻は、asin=4063407128でこんな感じ
http://images-jp.amazon.com/images/P/4063407128.09.MZZZZZZZ.jpg
zencart で商品の一括登録
サイト製作時に大量の商品データをCSVなどから一括登録するときの注意点です。
products、products_description、products_to_categories にテーブルを生成すれば登録され表示されます。
ここで思わぬ落とし穴がありました。
products_description の language_id = 2 が存在しないと日本語サイトでは表示されません。
当然のことなのですが、はまってしまったので、覚書です。
CSSハック(IE各バージョン対応)
body {
color: red; /* all browsers, of course */
color: green¥9; /* IE8 and below */
*color: yellow; /* IE7 and below */
_color: orange; /* IE6 */
}
body:not(:target) {
color: black¥9; /* IE9 */
}
CSSハック(ブラウザによるずれの補正)
IE6以下
* html #help_me { color: red; }
IE7
*+html #help_me { color: red; }
EC-CUBEのPDF帳票右上ロゴ画像変更の注意点
EC-CUBEはPDF帳票周りはしょっちゅう変わっている。
ヴァージョン2.4.4 の例です。
PDF帳票に利用されるロゴ画像の場所は user_data 配下に変わったようです。
画像フォーマットが合わないとエラーになります。(これはPDFの仕様)
前回と同じ方法は次は通用しない。
そうおもっていて間違いはなさそうです。
毎回初心で望めば問題ないと思います。
wordpressのカテゴリ一覧で記事の画像を表示する
ありがた迷惑なことに、
wordpressのバージョン3.*くらいから、一覧にはサマリー表示されています。
スマートフォン対策なんでしょうかね?
ということで、記事の詳細表示と同じにする方法です。
loop.php
変更前
<?php if ( is_archive() || is_search() ) : // Only display excerpts for archives and search. ?> <div class="entry-summary"> <?php the_excerpt(); ?> </div><!-- .entry-summary --> <?php else : ?> <div class="entry-content"> <?php the_content( __( 'Continue reading <span class="meta-nav">&rarr;</span>', 'twentyten' ) ); ?> <?php wp_link_pages( array( 'before' => '<div class="page-link">' . __( 'Pages:', 'twentyten' ), 'after' => '</div>' ) ); ?> </div><!-- .entry-content --> <?php endif; ?>
変更後
<div class="entry-content"> <?php the_content(); ?> <?php wp_link_pages( array( 'before' => '<div class="page-link">' . __( 'Pages:', 'twentyten' ), 'after' => '</div>' ) ); ?> </div><!-- .entry-content -->
これならば、だれでも簡単にできると思います。
zencart のデータベースに接続する
// Config読込み include $_SERVER[DOCUMENT_ROOT]."/includes/configure.php"; //------------------------------------------------------ // MySQLに接続開始 $db = mysql_connect(DB_SERVER,DB_SERVER_USERNAME,DB_SERVER_PASSWORD); // mysql_query("SET NAMES utf8"); // DB指定(確認用) if(!mysql_select_db(DB_DATABASE, $db)){ // echo " <div style="\"color: red;">\nメインデータベースに接続できません。</div> "; }elseif(mysql_select_db(DB_DATABASE, $db)){ echo " <div style="\"color: green;">\nDB指定OK!(".DB_DATABASE.")</div> "; } //------------------------------------------------------ // SQL例 $sql="SELECT * FROM `dtb_products` WHERE `status` = '1'"; $rs = mysql_query($sql,$db); $item = mysql_fetch_assoc($rs);
↑ これではエラーになる。
config の読み込みは不要。
$db は zencart が使っているのでNG! 「 $dbcon 」 などに変更すると問題ない。
↓ これでOK!
$dbcon = mysql_connect(DB_SERVER,DB_SERVER_USERNAME,DB_SERVER_PASSWORD); $sql="SELECT * FROM `categories_description` WHERE `language_id` = '2'"; $rs = mysql_query($sql,$dbcon); while($item = mysql_fetch_assoc($rs)){ echo ' <li><a href="'.$hoge1.'/index.php? main_page=index&cPath='.$item[categories_id].'">'.$item[categories_name].'</a></li> '; }
zencart で商品一覧をカスタマイズする
▽ 商品一覧
/includes/modules/product_listing.php
▽ 商品詳細
/includes/templates/template_default/templates/tpl_product_info_display.php
・商品画像
/includes/templates/template_default/templates/tpl_modules_main_product_image.php
zencart で商品詳細ページをカスタマイズする
/includes/templates/template_default/templates/tpl_product_info_display.php
zencart で商品一覧をカスタマイズする
/includes/modules/product_listing.php
switch ($column_list[$col]) { case 'PRODUCT_LIST_MODEL': $lc_align = ''; $lc_text = $listing->fields['products_model']; break; case 'PRODUCT_LIST_NAME': $lc_align = ''; if (isset($_GET['manufacturers_id'])) { $lc_text = '<h3 class="itemTitle"><a href="' . zen_href_link(zen_get_info_page($listing->fields['products_id']), 'manufacturers_id=' . $_GET['manufacturers_id'] . '&products_id=' . $listing->fields['products_id']) . '">' . $listing->fields['products_name'] . '</a></h3><div class="listingDescription">' . zen_trunc_string(zen_clean_html(stripslashes(zen_get_products_description($listing->fields['products_id'], $_SESSION['languages_id']))), PRODUCT_LIST_DESCRIPTION) . '</div>' ; } else { $lc_text = '<h3 class="itemTitle"><a href="' . zen_href_link(zen_get_info_page($listing->fields['products_id']), ($cPath ? 'cPath=' . $cPath . '&' : '') . 'products_id=' . $listing->fields['products_id']) . '">' . $listing->fields['products_name'] . '</a></h3><div class="listingDescription">' . zen_trunc_string(zen_clean_html(stripslashes(zen_get_products_description($listing->fields['products_id'], $_SESSION['languages_id']))), PRODUCT_LIST_DESCRIPTION) . '</div>'; } break; case 'PRODUCT_LIST_MANUFACTURER':
.htaccess で特定のファイルだけにアクセス制限をかける
<Files index.php> order allow,deny allow from all Authname "For Members" Authtype Basic AuthUserFile /var/www/vhosts/apollon-apollon.com/httpdocs/mailmag/.htpasswd require valid-user </Files>
zencart で商品の項目を増やす
▽ 商品登録
/admin/includes/modules/product/collect_info.php
▽ プレビュー
/admin/includes/modules/product/preview_info.php
上記に項目を追加したら、お次は登録処理です。
product.php を経由して category.php へ飛んでいるので、
/admin/product.php の冒頭に
if($_GET[action] == 'insert_product'){ // Insert 処理を書く exit; }elseif($_GET[action] == 'update_product'){ // Update 処理を書く exit; }
こんなふうに力技で収めてしまいました。
動作試験中なので ”exit” してますが ”brak” にしないとだめでっせ!
zencart の文字コードをUTF-8にする
最近のレンタルサーバーの仕様では、zencartは文字コードの問題にぶつかります。
ファイルの文字コードがUTF-8なのにHTMLではEUC-JPが指定されています。
これは文字コード指定を「デフォルトで指定しない」という設定のサーバーでは色々問題が発生するので、これを回避します。
文字コード変換
文字コード変更ツールなどを使用して、「.php」「.sql」「.txt」のファイルの文字コードを、UTF-8に変更します。
僕は、簡単な変換スクリプトを書いて実施しました。
(参考 ZenCart UTF-8化してイントール、の巻。)
まず、ファイル全てをUTF-8にします。
[lam@centos]# vi cnv2utf8.sh
#!/bin/sh
nkf -w $1 > TEMP
mv -f TEMP $1
[lam@centos]# find zen-cart -name ‘*.php’ -exec ./cnv2utf8.sh \{\} \;
[lam@centos]# find zen-cart -name ‘*.sql’ -exec ./cnv2utf8.sh \{\} \;
[lam@centos]# find zen-cart -name ‘*.txt’ -exec ./cnv2utf8.sh \{\} \;
設定変更
以下のファイルの「EUC-JP」の部分を「UTF-8」に書き換え
[lam@centos]# vi zen-cart/admin/includes/languages/japanese.php
[lam@centos]# vi zen-cart/includes/languages/japanese.php
[lam@centos]# vi zen-cart/zc_install/includes/languages/japanese.php
HTMLAREAの文字コードを変更
zen-cart/htmlarea/lang内の、
ja.js を削除して、(ja-euc.jsと同じものです)
ja-utf8.js をコピーして、ja.jsにリネーム。
phpの内部文字コードを変更
zen-cartのディレクトリに.htaccessを作成して、
php_value mbstring.internal_encoding UTF-8
/includes/classes/db/mysql/query_factory.php の47行目付近に
文字コードを指定します。
if (@mysql_select_db($zf_database, $this->link)) { if (version_compare(mysql_get_server_info(), '4.1.0', '>=')) {mysql_query('SET NAMES "utf8"', $this->link);} $this->db_connected = true; return true; } else {
スマートフォン対応サイト製作のコツ
・HTML5
・CSS3
・Javascript
PCとおんなじです。
画面サイズが小さいだけです。
今までの携帯との違いは、
・画面サイズが少しだけ大きくなった
・Javascript対応
強いて言えば、
携帯の規格が、
・普通画面サイズ
・大画面サイズ
の2種類になったということです。
僕のやり方としては、
いままでは、
PCサイトを携帯向けに最適化する場合、
プログラムで自動的に最適化していました。
スマートフォン向けも自動で最適化です。
僕がつくったwebサイトは、自動でスマートフォン対応サイトができてしまいます。
ec-cubeでログインしていないとカード決済をスルーしてしまう。
wordpressの記事の文字数指定
wordpressの記事の文字数指定は、テンプレートタグ the_excerpt()でできます。
ちなみに、全文表示はthe_content()。
the_excerpt() は日本語の場合うまく動作しません。
wordpress日本語版にはこれを修正するプラグイン WP Multibyte Patchが同梱されているので、
それを有効にすると、OKです。
wordpress にログインしているユーザーの情報を表示する
<?php global $current_user; get_currentuserinfo(); echo 'Username: ' . $current_user->user_login . "\n"; echo 'User email: ' . $current_user->user_email . "\n"; echo 'User level: ' . $current_user->user_level . "\n"; echo 'User first name: ' . $current_user->user_firstname . "\n"; echo 'User last name: ' . $current_user->user_lastname . "\n"; echo 'User display name: ' . $current_user->display_name . "\n"; echo 'User ID: ' . $current_user->ID . "\n"; ?>
php 変数 に代入する方法(ユーザーIDをPHPに渡す)
global $current_user; get_currentuserinfo(); $hoge = $current_user-->user_level; echo '★'.$hoge.'<br>';
WordPress の管理画面がおかしくなる場合の対処法
WordPress の管理画面がcss が反映されない状態になってしまった。
以前にも別のサイトでなった記憶があるので、今回はきちんと対応してみた。
PHP を CGI モードで作動させる記述に問題がありそうだということで、
”AddHandler application/x-httpd-phpcgi .php” と書いていた。
横着せずに、必要な場合のみCGIモードにすることで回避できる。
▽ こんな感じに書く
# ファイルのアップロード <files async-upload.php> AddHandler application/x-httpd-phpcgi .php </files> # プラグインの新規インストール <files plugin-install.php> AddHandler application/x-httpd-phpcgi .php </files> # テーマの自動アップグレード <files update.php> AddHandler application/x-httpd-phpcgi .php </files> # コアアップグレード <files update-core.php> AddHandler application/x-httpd-phpcgi .php </files>
うちの場合 ”CORESERVER” ですが、条件が揃えば他のサーバーでも発生すると思われます。
EC-CUBEでゼロ円商品を扱う
商品価格が「0」の場合、エラーになり次へ進めません。
でもゼロ円商品を設けたいという場合も多々あると思います。
対象ファイル: data/class/pages/admin/products/LC_Page_Admin_Products_Product.php
556行目付近
フォームからの入力チェックが書かれているので、そこを調整すればOKです。
// 入力エラーチェック function lfErrorCheck($array) { $objErr = new SC_CheckError($array); $objErr->doFunc(array("商品名", "name", STEXT_LEN), array("EXIST_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK")); $objErr->doFunc(array("一覧-メインコメント", "main_list_comment", MTEXT_LEN), array("SPTAB_CHECK", "MAX_LENGTH_CHECK")); $objErr->doFunc(array("詳細-メインコメント", "main_comment", LLTEXT_LEN), array("EXIST_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK")); $objErr->doFunc(array("詳細-メインコメント", "main_comment", $this->arrAllowedTag), array("HTML_TAG_CHECK")); $objErr->doFunc(array("ポイント付与率", "point_rate", PERCENTAGE_LEN), array("EXIST_CHECK", "NUM_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK")); $objErr->doFunc(array("商品送料", "deliv_fee", PRICE_LEN), array("NUM_CHECK", "SPTAB_CHECK", "MAX_LENGTH_CHECK")); $objErr->doFunc(array("備考欄(SHOP専用)", "note", LLTEXT_LEN), array("SPTAB_CHECK", "MAX_LENGTH_CHECK")); $objErr->doFunc(array("検索ワード", "comment3", LLTEXT_LEN), array("SPTAB_CHECK", "MAX_LENGTH_CHECK")); $objErr->doFunc(array("メーカーURL", "comment1", URL_LEN), array("SPTAB_CHECK", "URL_CHECK", "MAX_LENGTH_CHECK")); $objErr->doFunc(array("発送日目安", "deliv_date_id", INT_LEN), array("NUM_CHECK")); if($this->tpl_nonclass) { $objErr->doFunc(array("商品コード", "product_code", STEXT_LEN), array("EXIST_CHECK", "SPTAB_CHECK","MAX_LENGTH_CHECK")); $objErr->doFunc(array("通常価格", "price01", PRICE_LEN), array("MAX_LENGTH_CHECK")); $objErr->doFunc(array("商品価格", "price02", PRICE_LEN), array("MAX_LENGTH_CHECK")); if(!isset($array['stock_unlinited']) && $array['stock_unlimited'] != "1") { $objErr->doFunc(array("在庫数", "stock", AMOUNT_LEN), array("EXIST_CHECK", "SPTAB_CHECK", "NUM_CHECK", "MAX_LENGTH_CHECK")); } } if(!isset($array['sale_unlimited']) && $array['sale_unlimited'] != "1") { $objErr->doFunc(array("購入制限", "sale_limit", AMOUNT_LEN), array("EXIST_CHECK", "SPTAB_CHECK", "ZERO_CHECK", "NUM_CHECK", "MAX_LENGTH_CHECK")); } for ($cnt = 1; $cnt <= PRODUCTSUB_MAX; $cnt++) { $objErr->doFunc(array("詳細-サブタイトル$cnt", "sub_title$cnt", STEXT_LEN), array("SPTAB_CHECK", "MAX_LENGTH_CHECK")); $objErr->doFunc(array("詳細-サブコメント$cnt", "sub_comment$cnt", LLTEXT_LEN), array("SPTAB_CHECK", "MAX_LENGTH_CHECK")); $objErr->doFunc(array("詳細-サブコメント$cnt", "sub_comment$cnt", $this->arrAllowedTag), array("HTML_TAG_CHECK")); }
規格分けする場合のゼロ円商品対応
“price01” “price02″ はソート検索で、該当箇所は対応済みだが、商品規格の価格ではゼロ円がエラーになってしまう。
該当ファイル: data/class/pages/admin/products/LC_Page_Admin_Products_ProductClass.php
しかし、このファイルでは、”price01” “price02” という文字が出てこない、目視で探して対応できました。
EC-CUBEでMyPageにステータスを表示する
対象ファイル: data/Smarty/templates/default/mypage/index.tpl
<!--▼CONTENTS--> <div id="mypagecolumn"> <div id="mycontentsarea"> <h3><img src="<!--{$TPL_DIR}-->img/mypage/subtitle05.gif" width="580" height="40" alt="購入履歴詳細" /></h3> <p class="myconditionarea"> <strong>申込日時: </strong><!--{$arrDisp.create_date|sfDispDBDate}--><br /> <strong>注文番号: </strong><!--{$arrDisp.order_id}--><br /> <strong>お支払い方法: </strong><!--{$arrPayment[$arrDisp.payment_id]|escape}--> <!--{if $arrDisp.deliv_time_id != ""}--><br /> <strong>お届け時間: </strong><!--{$arrDelivTime[$arrDisp.deliv_time_id]|escape}--> <!--{/if}--> <!--{if $arrDisp.deliv_date != ""}--><br /> <strong>お届け日: </strong><!--{$arrDisp.deliv_date|escape}--> <!--{/if}--> </p> <table summary="購入商品詳細"> <tr> <th>サービスコード</th> <th>サービス名</th> <th>単価</th> <th>冊数</th> <th>小計</th> </tr> <!--{section name=cnt loop=$arrDisp.quantity}--> <tr> <td><!--{$arrDisp.product_code[cnt]|escape}--></td> <td><a href="<!--{$smarty.const.URL_DIR}-->products/detail.php?product_id=<!--{$arrDisp.product_id[cnt]}-->"><!--{$arrDisp.product_name[cnt]|escape}--></a></td> <!--{assign var=price value=`$arrDisp.price[cnt]`}--> <!--{assign var=quantity value=`$arrDisp.quantity[cnt]`}--> <td class="pricetd"><!--{$price|escape|number_format}-->円</td> <td><!--{$quantity|escape}--></td> <td class="pricetd"><!--{$price|sfPreTax:$arrSiteInfo.tax:$arrSiteInfo.tax_rule|sfMultiply:$quantity|number_format}-->円</td> </tr> <!--{/section}--> <tr> <th colspan="4" class="resulttd">小計</th> <td class="pricetd"><!--{$arrDisp.subtotal|number_format}-->円</td> </tr> <!--{assign var=point_discount value="`$arrDisp.use_point*$smarty.const.POINT_VALUE`"}--> <!--{if $point_discount > 0}--> <tr> <th colspan="4" class="resulttd">ポイント値引き</th> <td class="pricetd"><!--{$point_discount|number_format}-->円</td> </tr> <!--{/if}--> <!--{assign var=key value="discount"}--> <!--{if $arrDisp[$key] != "" && $arrDisp[$key] > 0}--> <tr> <th colspan="4" class="resulttd">値引き</th> <td class="pricetd"><!--{$arrDisp[$key]|number_format}-->円</td> </tr> <!--{/if}--> <tr> <th colspan="4" class="resulttd">送料</th> <td class="pricetd"><!--{assign var=key value="deliv_fee"}--><!--{$arrDisp[$key]|escape|number_format}-->円</td> </tr> <tr> <th colspan="4" class="resulttd">手数料</th> <!--{assign var=key value="charge"}--> <td class="pricetd"><!--{$arrDisp[$key]|escape|number_format}-->円</td> </tr> <tr> <th colspan="4" class="resulttd">合計</th> <td class="pricetd"><em><!--{$arrDisp.payment_total|number_format}-->円</em></td> </tr> </table> <!-- 使用ポイントここから --> <!--{if $smarty.const.USE_POINT === true}--> <table summary="使用ポイント"> <tr> <th>ご使用ポイント</th> <td class="pricetd"><!--{assign var=key value="use_point"}--><!--{$arrDisp[$key]|number_format|default:0}--> pt</td> </tr> <tr> <th>今回加算されるポイント</th> <td class="pricetd"><!--{$arrDisp.add_point|number_format|default:0}--> pt</td> </tr> </table> <!--{/if}--> <!-- 使用ポイントここまで --> <table summary="ステータス"> <tr> <th>ステータス</th> <td class="pricetd"> <!--{php}--> $hoge = $this->get_template_vars(); $hoge = $hoge[arrDisp]; $ext_order_id = $hoge[order_id]; // Config読込み include $_SERVER[DOCUMENT_ROOT]."/../eccube2_data/system/install.php"; //------------------------------------------------------ // MySQLに接続開始 $db = mysql_connect(DB_SERVER,DB_USER,DB_ PASSWORD); // mysql_query("SET NAMES utf8"); // DB指定(確認用) if(!mysql_select_ db(DB_NAME, $db)){ // echo "<div style=\"color:red;\">\nメインデータベースに接続できません。</div>\n"; }elseif(mysql_select_db(DB_NAME, $db)){ // echo "<div style=\"color:green;\">\nDB指定OK!(".DB_NAME.")</div>\n\n\n"; } //------------------------------------------------------ $sql="SELECT * FROM `dtb_order` WHERE `order_id` = '$ext_order_id'"; $rs = mysql_query($sql,$db); $arr_product_id = array(); $item = mysql_fetch_assoc($rs); if($item[status] == '1'){ echo '新規受付'; }elseif($item[status] == '2'){ echo '入金待ち'; }elseif($item[status] == '3'){ echo '入金済み'; }elseif($item[status] == '4'){ echo 'キャンセル'; }elseif($item[status] == '5'){ echo 'スキャン中'; }elseif($item[status] == '6'){ echo '発送済み'; }elseif($item[status] == '7'){ echo '裁断'; }elseif($item[status] == '8'){ echo '書籍到着'; } <!--{/php}--> </td> </tr> </table> <table summary="お届け先" class="delivname"> <thead> <tr> <th colspan="5">▼お届け先</th> </tr> </thead> <tbody> <tr> <th>お名前</th> <!--{assign var=key1 value="deliv_name01"}--> <!--{assign var=key2 value="deliv_name02"}--> <td><!--{$arrDisp[$key1]|escape}--> <!--{$arrDisp[$key2]|escape}--></td> </tr> <tr> <th>お名前(フリガナ)</th> <!--{assign var=key1 value="deliv_kana01"}--> <!--{assign var=key2 value="deliv_kana02"}--> <td><!--{$arrDisp[$key1]|escape}--> <!--{$arrDisp[$key2]|escape}--></td> </tr> <tr> <th>郵便番号</th> <!--{assign var=key1 value="deliv_zip01"}--> <!--{assign var=key2 value="deliv_zip02"}--> <td>〒<!--{$arrDisp[$key1]}-->-<!--{$arrDisp[$key2]}--></td> </tr> <tr> <th>住所</th> <!--{assign var=pref value=`$arrDisp.deliv_pref`}--> <!--{assign var=key value="deliv_addr01"}--> <td><!--{$arrPref[$pref]}--><!--{$arrDisp[$key]|escape}--><!--{assign var=key value="deliv_addr02"}--><!--{$arrDisp[$key]|escape}--></td> </tr> <tr> <th>電話番号</th> <!--{assign var=key1 value="deliv_tel01"}--> <!--{assign var=key2 value="deliv_tel02"}--> <!--{assign var=key3 value="deliv_tel03"}--> <td><!--{$arrDisp[$key1]}-->-<!--{$arrDisp[$key2]}-->-<!--{$arrDisp[$key3]}--></td> </tr> </tbody> </table> <div class="tblareabtn"> <a href="./index.php" onmouseover="chgImg('<!--{$TPL_DIR}-->img/common/b_back_on.gif','change');" onmouseout="chgImg('<!--{$TPL_DIR}-->img/common/b_back.gif','change');"><img src="<!--{$TPL_DIR}-->img/common/b_back.gif" width="150" height="30" alt="戻る" name="change" id="change" /></a> </div> </div> </div> <!--▲CONTENTS-->
EC-CUBEインストール(PostgreSQL)でのエラー
DBの権限も間違っていないのに、DBの初期化の画面で「システムエラー」と表示されてしまう。
/data/install.php にMySQLの設定が書いてあったりすると、ダメらしい。
PC用のwebサイトをスマートフォンに最適化
WebページをPCの感覚で製作し、表示すると、上手く表示されない事が多いです。
コレはViewportを設定する事で解決します。
簡単に書くと
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" />
とmeta要素に指定することで、ちゃんと表示されるはずです。
詳しく値を見ていくと
<meta name=”viewport” content=”width=【横幅】, initial-scale=【初期の倍率】, maximum-scale=【拡大可能な最大の倍率】”>
- ・横幅
- 画面の横幅をピクセル単位で指定します。ただし、スマートフォンの場合は機種によって画面の横幅がまちまちで、本体の向き(縦方向・横方向)に よっても違いがあるので、通常は「device-width」という特殊な値を設定するとよいでしょう。device-widthを指定すると、端末の横 幅で自動的に調整されます。
- ・初期の倍率
- 表示した時の画面の倍率を指定します。たとえば「1」を指定すると1倍、「2」を指定すると2倍になります。
- ・拡大可能な最大の倍率
- スマートフォンは2本指でピンチ(iPhone)したり、拡大ボタンをタップ(Android)したりすることで画面を拡大できます。この時の最大の倍率を指定します。「1」を指定すると拡大できなくなり、横に向けた際、文字の大きさをそのままに行数が増えるという表示なります。
スマートフォンのUA一覧
’iPhone’, // Apple iPhone
‘iPod’, // Apple iPod touch
‘Android’, // 1.5+ Android
‘dream’, // Pre 1.5 Android
‘CUPCAKE’, // 1.5+ Android
‘blackberry9500’, // Storm
‘blackberry9530’, // Storm
‘blackberry9520’, // Storm v2
‘blackberry9550’, // Storm v2
‘blackberry9800’, // Torch
‘webOS’, // Palm Pre Experimental
‘incognito’, // Other iPhone browser
‘webmate’ // Other iPhone browser
phpで珍しいエラーメッセージに出会った!
「 Fatal error: Unsupported operand types in 」
こんなエラーははじめて見たぞ!
「 サポートされていない演算子をタイプした 」といっているようですね。
変数に数値を加算しようとして、出たエラーなので、メッセージを見なくても、
式が違っているか、変数の方が違う(配列とか文字列とか)のだろうと予測はつくが、
親切なエラーメッセージに感動した。
最近はタナゴつりにはまっているが絶滅危惧種を釣ったのと同じくらい感動した。
EC-CUBEでサブ画像を増やすには?
データベースに該当フィールドを追加します。
50とか100まで増やすと手作業での登録は大変なので、プログラムでSQL文を自動生成して処理しますので、
いくらでも増やせます。あまり増やすと処理時間がかかりますのでご注意下さい。
管理画面→システム設定→パラメータ設定
PRODUCTSUB_MAX の値を変更します。
(旧バージョン)
/data/class/db/dbfactory/SC_DB_DBFactory_MYSQL.php
の2箇所に該当フィールドを追加します。
(2.11系 2.12系)
/data/class/SC_Product.php
の一箇所に該当フィールドを追加します。
順番が違うとINSERT文はエラーになるので注意して下さい。
.htaccessでphpのショートタグを使えるように設定する
# ショートタグ(on/off) php_flag short_open_tag on
カート、決済ページに左サイドカラムを表示する。
対象ファイル: data/class/pages/(cart,shopping)/LC_Page_***.php
カラム数を変更
function init() { parent::init(); $this->tpl_mainpage = 'cart/index.tpl'; // $this->tpl_column_num = 1; $this->tpl_column_num = 2;
function process() の変数宣言の後に追記
// レイアウトデザインを取得(added 日付 this block only) $layout = new SC_Helper_PageLayout_Ex(); $layout->sfGetPageLayout($this, false, DEF_LAYOUT);
GDでサムネイルを生成する
まだ整理していません。下書きです。
// 画像フォルダ、※ 相対パス か DOCUMENT_ROOT で書く $img_dir = '../img/upload/'; echo ' $img_dir=>'.$img_dir; $name = explode('.', $_GET[imgname]); $tumbnail_name = $name[0].'_thumbnail.'.$name[1]; $img_path = $img_dir.$tumbnail_name; echo ' $img_path=>'.$img_path; // 試験の場合は、前回生成の新画像を削除 // unlink($img_path); if(!file_exists($img_path)){ echo ' Tumbnailが無いので自動生成します。'; // 注意 // 画像Pathは URLではなく Pathで書く。 // 元画像 $srcname = explode('_thumbnail', $img_path); $srcname = $srcname[0].$srcname[1]; echo ' $srcname=>'.$srcname; $image = ImageCreateFromJPEG($srcname); echo ' $image=>'.$image; // 元画像のサイズを取得 $width = ImageSX($image); $height = ImageSY($image); echo ' $width=>'.$width; echo ' $height=>'.$height; // 縮小した画像のサイズを決める。 $new_width = 250; $rate = $new_width / $width; //圧縮比 $new_height = $rate * $height; echo ' $new_width=>'.$new_width; echo ' $new_height=>'.$new_height; // 空の画像を作成する。 $new_img = ImageCreateTrueColor($new_width, $new_height); // 画像を普通にリサイズコピーする場合。 // ImageCopyResized($img_path,$image,0,0,0,0,$new_width,$new_height,$width,$height); ImageCopyResized($new_img,$image,0,0,0,0,$new_width,$new_height,$width,$height); // サンプリングしなおす場合。 // ImageCopyResampled($new_img,$image,0,0,0,0,$new_width,$new_height,$width,$height); // ファイルに保存する場合。 ImageJPEG($new_img, $img_path, 100); //3つ目の引数はクオリティー(0~100) // ImageGIF($image, $file_path);//環境によっては使えない // ImagePNG($image, $file_path); } echo '<hr /><img src="'.$img_path.'" alt="" />';
※ PHP のGD関数はまだまだ途上のようです。随時使用が変わりますので、人の書いたものを信用せずに、公式サイトをご確認ください。
Smarty変数の基礎
$this->vietual_authority = $vietual_authority;
$this->[変数名] = [代入する値];
PHPで0サプレスする(数字の先頭から0を削除する)
《例》
$str = "000100"; echo $str; //出力結果:000100 echo abs($str); //出力結果:100
いろいろというか、もっと原始的なやり方を好むが、今回は便利な関数を使ってみた。
ベーシックな関数は必要だが、このような流行りもの的関数を使ってしまった自分が恥ずかしい。
EC-CUBEで商品情報の編集が反映されない。
EC-CUBEのSQL文
SQL構文の例です。
// 削除された受注データの受注詳細情報の削除 $objQuery = new SC_Query(); $where = "order_id IN (SELECT order_id FROM dtb_order WHERE del_flg = 1)"; $objQuery->delete("dtb_order_detail", $where);
EC-CUBEで商品編集ページに直接アクセスする方法
<form name="form1" id="form1" method="post" action="/admin/products/index.php"> <input type="hidden" name="mode" value="search"> <input type="hidden" name="product_id" value=""> <input type="hidden" name="category_id" value=""> <input type="hidden" name="search_product_id" value=""> <input type="hidden" name="search_product_class_name" value=""> <input type="hidden" name="search_product_code" value=""> <input type="hidden" name="search_name" value=""> <input type="hidden" name="search_category_id" value=""> <input type="hidden" name="search_startyear" value=""> <input type="hidden" name="search_startmonth" value=""> <input type="hidden" name="search_startday" value=""> <input type="hidden" name="search_endyear" value=""> <input type="hidden" name="search_endmonth" value=""> <input type="hidden" name="search_endday" value=""> <input type="hidden" name="search_page_max" value="10"> <input type="hidden" name="search_pageno" value=""> <a href="/" onclick="fnChangeAction(\'./product.php\'); fnModeSubmit(\'pre_edit\', \'product_id\', 169); return false;" >編集</a> <a href="http://f-best.info.localhost/products/detail.php?product_id=169&admin=on" target="_blank">確認</a> </form>
form はメインカラム内に書くことが必須だが、AタグはFormの外に書いても有効。
phpのエラー処理関数
// 全てのエラー出力をオフにする error_reporting(0); // 単純な実行時エラーを表示する error_reporting(E_ERROR | E_WARNING | E_PARSE); // E_NOTICE を表示させるのもおすすめ(初期化されていない // 変数、変数名のスペルミスなど…) error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE); // E_NOTICE 以外の全てのエラーを表示する // これは php.ini で設定されているデフォルト値 error_reporting(E_ALL ^ E_NOTICE); // 全ての PHP エラーを表示する (Changelog を参照ください) error_reporting(E_ALL); // 全ての PHP エラーを表示する error_reporting(-1); // error_reporting(E_ALL); と同じ ini_set('error_reporting', E_ALL);
携帯からメール投稿した場合の改行コードの置換方法
これでいけるかと思ったが
$mail_body = preg_replace("\n", "<br>", $mail_body);
だめらしい
パターンマッチにしたらいけた!
$mail_body = preg_replace("/\n/", "<br>", $mail_body);
ckeditorの設置
<script type="text/javascript" src="/js/ckeditor/ckeditor.js"></script> <script type="text/javascript"> //スキンの変更['kama', 'office2003', v2]の3種 CKEDITOR.replace( 'detail',{skin : 'kama' }); CKEDITOR.config.width = '600px'; //横幅 CKEDITOR.config.height = '300px'; //高さ //ユーザーのサイズ変更を許可するか CKEDITOR.config.resize_enabled = false; //Enterキー押下時のタグ CKEDITOR.config.enterMode = CKEDITOR.ENTER_P; //Shift+Enter押下時のタグ CKEDITOR.config.shiftEnterMode = CKEDITOR.ENTER_BR; </script> <textarea class="ckeditor" id="naiyo-ta" name="naiyo_text"><?php echo $blog['naiyo']; ?></textarea>
EC-CUBEで商品登録・編集ができない(Postgressの場合)
自動採番の調整を忘れただけのようでした。
シーケンスの編集をお忘れなく。
dtb_products_product_id_seq
dtb_products_class_product_class_id_seq
カテゴリ関係も忘れずに!
MySQLでいう auto increment ですね。
画像サイズを取得してW:Hの最大値を調整する
画そうのサイズを取得する。
このとき画像のPathに注意が必要です。
SERVER_ROOT ではなく、DOCUMENT_ROOT で指定しましょう。
list($width, $height, $type, $attr) = getimagesize($_SERVER[DOCUMENT_ROOT]."/upload/save_image/".$item4[main_image].".jpg"); echo 'W:'.$width.' H:'.$height.'<br>';
画像の最大サイズを調整する。
$wid_max = '450'; $hei_max = '450'; if($width >= $height){ if($width <= $wid_max){ $html_size = ' width="'.$width.'"'; }else{ $html_size = ' width="'.$wid_max.'"'; } }else{ if($height <= $hei_max){ $html_size = ' height="'.$height.'"'; }else{ $html_size = ' height="'.$hti_max.'"'; } } $img_html = '<img src="/upload/save_image/'.$item4[comment6].'.jpg"'.$html_size.'>'; echo $img_html;
PostgreSQLの基本構文(EC-CUBEの場合)
SQL文です。
if (!($db = pg_connect("host=localhost port=5432 dbname=".DB_NAME." user=".DB_USER." password=".DB_PASSWORD." "))) { die("db_connect_error"); } $sql = "SELECT * FROM dtb_products"; $rs = pg_exec($db, $sql); $rs = pg_query($sql); $item4 = pg_fetch_array($rs, NULL, PGSQL_ASSOC);
windowsサーバーでPostgreSQLを動かす
PostgreSQLをインストールしたがPHPと連動しない。
php/ext/php_pgsql.dll が96kbというのはおかしい、壊れているようだ。
少々前のバージョン5,25あたりのバイナリを落としてくる。
php/ext/php_pgsql.dll が165kbあるのでこれを誓わせてもらうことにした。
めでたく動いた!
保護中: WindowsサーバーでEC-CUBEでモバイルでユーザー登録…(全文)
WindowsサーバーでEC-CUBEでモバイル(携帯)でユーザー登録ができない
WindowsサーバーでEC-CUBEでモバイルでユーザー登録ができない。
TOPページにリダイレクトされてしまいます。
カート機能なども同じくTOPページにリダイレクトされてしまいます。
セッションとかクッキーとかがうまく機能しないのが原因のようです。
解決方法はこちらです。
data/class/session/sessionfactory /SC_SessionFactory_UseRequest.php
182行目付近
/** * セッション初期処理を行う。 * * @return void */ function initSession() { // セッションIDの受け渡しにクッキーを使用しない。 // ini_set('session.use_cookies', '0'); ini_set('session.use_cookies', '0'); /* ★ここに1行書き足すとと動作しました★ */ // パラメーターから有効なセッションIDを取得する。 $sessionId = $this->getSessionId(); if (!$sessionId) { session_start(); } // セッションIDまたはセッションデータが無効な場合は、セッションIDを再生成 // し、セッションデータを初期化する。 if ($sessionId === false || !$this->validateSession()) {
保護中: 管理者権限の活用方法
EC-CUBEで管理者の種類を増やす
サイト管理者のみですが、店長権限や発送担当権限などがあると便利です。
権限を増やすには、マスター管理→mtb_authority から簡単に追加できます。
これで管理画面上は店長権限を選択できます。
メンバー一覧にも権限別として表示されます。
しかしこれだけでは検眼の違いがどこにも影響しません。
さてこの権限を同活用するかそこが本題です。
XREA・CORESERVER.JPでPHPをCGIモードで動かす方法
サイト全体に適用する場合
AddHandler application/x-httpd-phpcgi .php
WordPress 2.9.x の場合:
# 画像・ファイルアップロード <files async-upload.php> AddHandler application/x-httpd-phpcgi .php </files> # プラグイン・テーマ 新規インストール/アップグレード <Files update.php> AddHandler application/x-httpd-phpcgi .php </Files> # 本体アップグレード <Files update-core.php> AddHandler application/x-httpd-phpcgi .php </Files>
こんな感じで
.htaccess に書きます。
ckediterの注意点
ckrditer のような無料の優れものには感謝しなければならない。
しかし、多くのバグを抱えていることも否めない。
ckrditer で編集したものを携帯で表示するのは問題ないが、携帯で編集しようとした場合一つの問題が発生する。
タブ「¥t」が挿入されてしまうので、携帯のテキストエリアでは表示できないらしい。
ckrditer 内での処理で「¥t」を挿入させないと、これまたいろんな問題が発生するようでうす。
そんなこんなで、DBへの登録時に「¥t」を削除することが大切です。
フローティングメニュー
htmlヘッダー
<script type="text/javascript" src="js/jquery-1.3.2.min.js"></script> <script type="text/javascript" src="js/livefloatingmenu.js"></script>
html_body内
<div id="floatMenu"> <a href="#header"><img src="./images/pagetop.png"></a> </div>
Javascript ファイル
jquery-1.3.2.min.js
livefloatingmenu.js
mod_rewrite が動かないのは違う原因がある
時々mod_rewrite が動かずに悩まされるときがある。
原因は「mod_rewrite」ばかりではない。
.htaccess が有効になっていないことが多い。
AllowOverride が All になっているか確認する。
mod_rewrite のソースに文法エラーを書いてみて「Internal Server Error」になれば.htaccessは有効になっているはず?
↑この組み合わせでしか動かなかった。
<Directory /> Options FollowSymLinks AllowOverride none Order deny,allow Deny from all </Directory> <Directory "F:/home"> Options Indexes FollowSymLinks AllowOverride All Order allow,deny Allow from all Options ExecCGI </Directory>
自分の作業用サーバーでは、上記だけではどうさせず
.htaccess に[Options +FollowSymLinks]を追記したら動いた。
#mode_rewriteの設定 Options +FollowSymLinks RewriteEngine on RewriteBase /demo/hanryu-next.com/ RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule ^([A-Za-z0-9]+).php? user_data/$1.php [L]
EC-CUBEモバイルのカートから決済に進めない
EC-CUBEモバイルのカートから決済に進めない。
TOPに戻ってしまう。
しょぼいですね。
こんなときは、
SESSIDをパクッてURLに付加してあげれば動きます。
クラスを配列に変える
stdClass などを個別に取り出すには、配列に変えたほうが便利なこともある。
一例です。
var_dump(aaa); の結果が下記のような場合
array(26) { [bbb]=> object(stdClass)#39 (18) { ["topic_id"]=> string(2) "74" ["topic_title"]=> string(5) "Title" ["topic_slug"]=> string(7) "title-4" ["topic_poster"]=> string(1) "3" ["topic_poster_name"]=> string(9) "hashimoto" ["topic_last_poster"]=> string(1) "3" ["topic_last_poster_name"]=> string(9) "hashimoto" ["topic_start_time"]=> string(19) "2011-06-03 10:46:03" ["topic_time"]=>
$vvv = (array)$aaa[bbb];
var_dump($vvv); とやると、配列になっている。
保護中: EC-CUBEで携帯でセッションが切れてしまう(2)
EC-CUBEで携帯でセッションが切れてしまう(1)
・会員登録ができない
・ログインできない
・カートが空になってしまう
などの症状が多いようです。
これらは”PHPSESSIDが変わってしまう”ことにより発生します。
なぜ”PSPSESSID”が変わってしまうのか?
これらは、サーバーの仕様によりセッションが切れてしまうことが原因です
回避策としては、”.htaccess” や ”php.ini” で対処する個方法が一般的ですが、
それでも反映されないサーバーも多いです。
その場合、data/install.php に一行書くだけで、対処できます。
CAPTCHAイメージ認証(securimage) の照合ソースコードを解読してみる
securimage.php を解析してみる。
L:618行目付近 ”function check($code)”
function check($code) { // 考えながら検証する // $code: POSTしたデータ // echo $code; // ←POSTしたデータ $this->code_entered = $code; $this->validate(); return $this->correct_code; }
L:1170付近 ”function validate()”
function validate() { // retrieve code from session, if no code exists check sqlite database if supported. $code = ''; if (isset($_SESSION['securimage_code_value']) && trim($_SESSION['securimage_code_value']) != '') { if ($this->isCodeExpired($_SESSION['securimage_code_ctime']) == false) { $code = $_SESSION['securimage_code_value']; } } else if ($this->use_sqlite_db == true && function_exists('sqlite_open')) { // no code in session - may mean user has cookies turned off $this->openDatabase(); $code = $this->getCodeFromDatabase(); } else { /* session code invalid or non-existant and code not found in sqlite db or sqlite is not available */ } $code = trim(strtolower($code)); $code_entered = trim(strtolower($this->code_entered)); $this->correct_code = false; // echo '----------------'.$code_entered .'------------------'; //$code_entered: 入力したデータを小文字にしたもの // echo $_SESSION['securimage_code_value']; // echo '==================='; // echo $_SESSION['securimage_code_ctime']; if ($code != '') { if ($code == $code_entered) { $this->correct_code = true; $_SESSION['securimage_code_value'] = ''; // ← 照合する元データ $_SESSION['securimage_code_ctime'] = ''; // ← 照合する元データの生成時刻 $this->clearCodeFromDatabase(); } } }
フォームメール送信ソースコード(Sendmail)のサンプル
// エンコード対策 mb_language("japanese"); mb_internal_encoding("utf-8"); // 送信 mb_send_mail( $to, $subject, $body, "From: $from");
フォームメール送信ソースコード(SMTP)のサンプル
<?PHP ////////////////// // PUT_SMTP.PHP // ////////////////// // ここに投げる必須項目 // $server // $to // $from // $subject // $body $server=''; $put_smtp_flg="1"; $smtp='mail.hogehoge.com'; $subject="TESTmail"; $body="TESTmail"; $from = "hsmt@hogehoge.com"; //$to='has@zibaj.net'; $to='hsmt@zibaj.net'; //echo 'put_smtp_flg=>'.$put_smtp_flg.'<br>'; echo "smtp_server=>".$smtp."<br>"; echo "to=>".$to."<br>"; if($put_smtp_flg == "1"){ $server=$smtp; // エンコード $subject = mb_convert_encoding($subject,"JIS"); $body = mb_convert_encoding($body,"ISO-2022-JP"); $date = date('D, d M Y H:i:s: O');// 日付(この形式でないとメーラーに送信日時として解釈されない) $sock = fsockopen($server,25); // メールサーバの25番ソケットを開いて fputs($sock,"HELO $server\r\n"); // SMTPコマンド発行 $result = fgets($sock,128); // サーバからのレスポンスを取得 echo 'SMTPコマンド発行=>'.$result.'<br>'; fputs($sock,"MAIL FROM:<$from>\r\n");// FROMアドレス指定 $result = fgets($sock,128); echo 'FROMアドレス指定=>'.$result.'<br>'; fputs($sock,"RCPT TO:<$to>\r\n"); // 宛先指定 $result = fgets($sock,128); echo '宛先指定=>'.$result.'<br>'; fputs($sock,"DATA\r\n"); // DATAを送信後、ピリオドオンリーの行を送るまで本文。 $result = fgets($sock,128); echo 'DATAを送信1=>'.$result.'<br>'; // Header 表示項目 fputs($sock,"FROM:<$from>\r\n"); // 送信元表示 fputs($sock,"TO:<$to>\r\n"); // 送信先表示 fputs($sock,"Date:<$date>\r\n"); // 日付表示 fputs($sock,"Subject:$subject\r\n");// Subjectヘッダ送信 fputs($sock,"\r\n$body\r\n"); // 本文送信** 改行の後が本文と見なされる $result = fgets($sock,128); echo 'DATAを送信2=>'.$result.'<br>'; fputs($sock,"\r\n.\r\n"); // ピリオドのみの行を送信。 $result = fgets($sock); echo 'DATAを送信END=>'.$result.'<br>'; // echo $result."<br>\n";// 試験用表示 if(!ereg("^250",$result)){ // 成功すると250 OK~と返してくるので echo "送信失敗<br>\n;"; // それが返ってこなかったら失敗。 } echo '結果=>'.$result.'<br>'; fclose($sock); //ソケット閉じる } ?>
wordpressの記事内でphpを使う(runPHP)
unPHP というプラグインを利用します。
配布元:http://wordpress.org/extend/plugins/runphp/
1)通常のプラグインのようにアップロードし有効にします。
2)設定 → runPHP で、有効にする権限をチェックします。
3)ユーザー → 各ユーザーのプロフィールで
「I can activate or deactivate runPHP on a post.」にチェックします。
「ビジュアルリッチエディターを使用しない」にチェックします。
4)投稿ページの下のほうにに「run PHP code?」があるのでチェックすれば投稿記事内でPHPが使えます。
FCKeditor 2.6.6
WYSIWYG Text and HTML Editor といえば FCKeditor が定番だ!
ツールバーをカスタマイズするとIEでエラーになる。
「未知のツールバー項目」がどうとか言っている。
一時しのぎとの回避策
ツールバーの設定で「Basic」をいじると叱られるので、
「Default」を利用する。不要なツールは削除しても問題ない。
Javascript はあまり好み出ないのでPHPで書く
// もしもし、FCKeditor さんいますか? include($_SERVER[DOCUMENT_ROOT]."/manage/fckeditor/fckeditor.php"); // fckeditorのパスの位置を設定。※INPUT_NAMEとしても利用される。 $fck = new FCKeditor("FCKeditor"); // FCKeditor さんの住所 $fck->BasePath = "/manage/fckeditor/"; // 表示サイズを設定 // $fck->Width = "640"; デフォルトは100% $fck->Height = "280"; // デフォルトは200 // ツールバーはDefaultとBasicから選択。 // 機能の制御はfckeditor/fckconfig.jsをカスタマイズ $fck->ToolbarSet = "Default"; // textareaの値を設定。 $fck->Value = ""; $fck->Create();
ダブルクォーテーションが勝手にエスケープされてしまう
『”』の前に『\』がついてエラーになる事や、
『Warning: Invalid argument supplied for foreach() ~』で始まるエラーが表示される事があります。
EC-CUBEでは、商品登録のカテゴリが反映しないなんてこともあります。
それの対応策です。
.htaccess に “magic_quotes_gpc 0” で効けばいいのですが、
それでもダメな場合は
php.ini に ”magic_quotes_gpc = off” を書いて
サーバの該当ディレクトリに置く。
500 Internal Server Error
perl のエラーログに「malformed header from script. Bad header=…」と出力される場合
「print “Content-Type: text/html\n\n”;」を書かずに何かを出力している。
初歩的なミスだ。
.htaccess で phpのエラー表示を操作する
php_flag display_errors On
もしくは、php_flag display_errors Off
On のときは更に表示内容を指定する
php_value error_reporting 6135
error_reporting に設定する値は PHP: error_reporting – Manual を参照するといいでしょう。値 定数
1 E_ERROR
2 E_WARNING
4 E_PARSE
8 E_NOTICE
16 E_CORE_ERROR
32 E_CORE_WARNING
64 E_COMPILE_ERROR
128 E_COMPILE_WARNING
256 E_USER_ERROR
512 E_USER_WARNING
1024 E_USER_NOTICE
6143 E_ALL
2048 E_STRICT
4096 E_RECOVERABLE_ERROR
ec-cube
SEO試験的な文章です。
意味はありませんので、読まないでください。
EC-CUBEはここが酷い。最近EC-CUBEのプログラム修正を仕事でしているわけだが、EC-CUBEのプログラムソースは余りにも酷すぎる。開発者が初歩的な英単語を理解していない。になっている。EC-CUBE1.xシリーズとEC-CUBE2.xのプログラムソースが混在している。旧世代の遺物が沢山ファイル名や内部パスの隠蔽が不完全。結局はPHPプログラマがいないとまともなサイトは作れないというオチが。費税の計算方法と総額表示EC-CUBE追記消費税計算と総額表示「超致命的」となっているところの計算は開発者の方が正しいが…たしかにEC-CUBEの仕様は正しいですが、端数処理方法が四捨五入や切り上なぜコミッターになって修正しないの?EC-CUBEリリース初期には色々と対応はしていたのですが、現在メインで使っているソースがEC-CUBEが配布しているものに対しコミッターになって修正してあげればいいんじゃないでしょうか。www.ec-cubeオープンソースなんで、コミッターのスキル・テクニックに委ねられると「開発者が料金計算ができない」での計算は間違ってないけど。今仕事でEC-CUBEのカスタマイズをやっているのですが…。ほんとひどすぎですね。いくらフリーとはいEC-CUBEはバグが多いという貴重な情報をありがとうございます。ところでこの記事で言及されているEC-CUBEのバージョンっていくつでaiueo(EC-CUBEコミッター)aiueo(EC-CUBEコミッター)的には非常に的を得た記事だとEC-CUBEフォーラムでも話題に上げてみようかな。EC-CUBEは色々と問題はあるものの、中小規模で見た目さえ良ければOKなサイ人から聞いた話ですが、ロックオンの社長は「EC-CUBEにバグがなかったり、言ってたみたいだし。あえてこの品質じゃないんでしょうか?それよりも、私はLiveCommerています。が公開後、EC-CUBEのシェアガタ落ちにならなけいですがね。EC-CUBEにはプログラム的を運営している私から見るとEC-CUBEのホームページがもうちょっといい加減なデザインだとよいのですが、EC-CUBEが使えるのかどうか調査するだけでも相当大変で時間がかかります。上に出たプラチナパートナーのA社は、EC-CUBE以外のサービスはやっていないので、EC-CUBEという泥舟に乗った会社な案はもちろんありませんしEC-CUBEは、色んな意味で非常に低なので、当に世の中のゴミだと思います。ホームページのデザインした印象は受けませんが、EC-CUBEのように見た目だけあっただけに、逆に好感が持てます!多言語に対応しているられているという印象です。セミナーで色々な方聞くと、実はEC-CUBEの品質が非常にの中では有名みたいですね。ネットマーケティの知識はそれなりに高いレベルにあります。プログラミングも少しですが実務ます。ネットショップの乗り換えた時に、色々なシステムを徹底的にみましたが、その中でもEC-CUBEの品質はに低いと感じました。、多額の費用投資したあげく、EC-CUBEを使うことは念。大きな損ってしまいました。のズサンな管理体制や根本的ミスを考えると、EC-CUBEに未来はな判断しました。ネットで色々と集めてみると、EC-CUBEはそもそもロック社で販売するシステムとして開発されたが、EC-CUBEはあまりにヒドイので、悪い点を出して具それでも、未だにEC-CUBEの一人勝ち。技術者嫌われ、店長さんに好かれる。面白いものですよね。EC-CUBEに限らず、悪い所も全部てんだろ、生かすもすお好きにどうぞ。ってのがオープンソースだよ。面倒臭がらずに、完璧目指して全部自分でフルビすりゃいいじゃん。いくら無料といえ、オーンソースだとは言え、最低限のデバッEC-CUBEの品質仕事でEC-CUBEを使います[EC]消費税の計算方法と総表示気になる術メモデザインを当て込む立場からのEC-CUBEEC-CUBEで調べ物をしていたらEC-CUBEはここが酷い。最近EC-CUBEのプログラム修正を仕事でしているわけだが、EC-CUBEのプログラムソースは余りにも酷すぎる。開発者が初歩的な英単語を理解していない。になっている。EC-CUBE1.xシリーズとEC-CUBE2.xのプログラムソースが混在している。旧世代の遺物が沢山ファイル名や内部パスの隠蔽が不完全。結局はPHPプログラマがいないとまともなサイトは作れないというオチが。費税の計算方法と総額表示EC-CUBE追記消費税計算と総額表示「超致命的」となっているところの計算は開発者の方が正しいが…たしかにEC-CUBEの仕様は正しいですが、端数処理方法が四捨五入や切り上なぜコミッターになって修正しないの?EC-CUBEリリース初期には色々と対応はしていたのですが、現在メインで使っているソースがEC-CUBEが配布しているものに対しコミッターになって修正してあげればいいんじゃないでしょうか。www.ec-cubeオープンソースなんで、コミッターのスキル・テクニックに委ねられると「開発者が料金計算ができない」での計算は間違ってないけど。今仕事でEC-CUBEのカスタマイズをやっているのですが…。ほんとひどすぎですね。いくらフリーとはいEC-CUBEはバグが多いという貴重な情報をありがとうございます。ところでこの記事で言及されているEC-CUBEのバージョンっていくつでaiueo(EC-CUBEコミッター)aiueo(EC-CUBEコミッター)的には非常に的を得た記事だとEC-CUBEフォーラムでも話題に上げてみようかな。EC-CUBEは色々と問題はあるものの、中小規模で見た目さえ良ければOKなサイ人から聞いた話ですが、ロックオンの社長は「EC-CUBEにバグがなかったり、言ってたみたいだし。あえてこの品質じゃないんでしょうか?それよりも、私はLiveCommerています。が公開後、EC-CUBEのシェアガタ落ちにならなけいですがね。EC-CUBEにはプログラム的を運営している私から見るとEC-CUBEのホームページがもうちょっといい加減なデザインだとよいのですが、EC-CUBEが使えるのかどうか調査するだけでも相当大変で時間がかかります。上に出たプラチナパートナーのA社は、EC-CUBE以外のサービスはやっていないので、EC-CUBEという泥舟に乗った会社な案はもちろんありませんしEC-CUBEは、色んな意味で非常に低なので、当に世の中のゴミだと思います。ホームページのデザインした印象は受けませんが、EC-CUBEのように見た目だけあっただけに、逆に好感が持てます!多言語に対応しているられているという印象です。セミナーで色々な方聞くと、実はEC-CUBEの品質が非常にの中では有名みたいですね。ネットマーケティの知識はそれなりに高いレベルにあります。プログラミングも少しですが実務ます。ネットショップの乗り換えた時に、色々なシステムを徹底的にみましたが、その中でもEC-CUBEの品質はに低いと感じました。、多額の費用投資したあげく、EC-CUBEを使うことは念。大きな損ってしまいました。のズサンな管理体制や根本的ミスを考えると、EC-CUBEに未来はな判断しました。ネットで色々と集めてみると、EC-CUBEはそもそもロック社で販売するシステムとして開発されたが、EC-CUBEはあまりにヒドイので、悪い点を出して具それでも、未だにEC-CUBEの一人勝ち。技術者嫌われ、店長さんに好かれる。面白いものですよね。EC-CUBEに限らず、悪い所も全部てんだろ、生かすもすお好きにどうぞ。ってのがオープンソースだよ。面倒臭がらずに、完璧目指して全部自分でフルビすりゃいいじゃん。いくら無料といえ、オーンソースだとは言え、最低限のデバッEC-CUBEの品質仕事でEC-CUBEを使います[EC]消費税の計算方法と総表示気になる術メモデザインを当て込む立場からのEC-CUBEEC-CUBEで調べ物をしていたらEC-CUBEはここが酷い。最近EC-CUBEのプログラム修正を仕事でしているわけだが、EC-CUBEのプログラムソースは余りにも酷すぎる。開発者が初歩的な英単語を理解していない。になっている。EC-CUBE1.xシリーズとEC-CUBE2.xのプログラムソースが混在している。旧世代の遺物が沢山ファイル名や内部パスの隠蔽が不完全。結局はPHPプログラマがいないとまともなサイトは作れないというオチが。費税の計算方法と総額表示EC-CUBE追記消費税計算と総額表示「超致命的」となっているところの計算は開発者の方が正しいが…たしかにEC-CUBEの仕様は正しいですが、端数処理方法が四捨五入や切り上なぜコミッターになって修正しないの?EC-CUBEリリース初期には色々と対応はしていたのですが、現在メインで使っているソースがEC-CUBEが配布しているものに対しコミッターになって修正してあげればいいんじゃないでしょうか。www.ec-cubeオープンソースなんで、コミッターのスキル・テクニックに委ねられると「開発者が料金計算ができない」での計算は間違ってないけど。今仕事でEC-CUBEのカスタマイズをやっているのですが…。ほんとひどすぎですね。いくらフリーとはいEC-CUBEはバグが多いという貴重な情報をありがとうございます。ところでこの記事で言及されているEC-CUBEのバージョンっていくつでaiueo(EC-CUBEコミッター)aiueo(EC-
CUBEコミッター)的には非常に的を得た記事だとEC-CUBEフォーラムでも話題に上げてみようかな。EC-CUBEは色々と問題はあるものの、中小規模で見た目さえ良ければOKなサイ人から聞いた話ですが、ロックオンの社長は「EC-CUBEにバグがなかったり、言ってたみたいだし。あえてこの品質じゃないんでしょうか?それよりも、私はLiveCommerています。が公開後、EC-CUBEのシェアガタ落ちにならなけいですがね。EC-CUBEにはプログラム的を運営している私から見るとEC-CUBEのホームページがもうちょっといい加減なデザインだとよいのですが、EC-CUBEが使えるのかどうか調査するだけでも相当大変で時間がかかります。上に出たプラチナパートナーのA社は、EC-CUBE以外のサービスはやっていないので、EC-CUBEという泥舟に乗った会社な案はもちろんありませんしEC-CUBEは、色んな意味で非常に低なので、当に世の中のゴミだと思います。ホームページのデザインした印象は受けませんが、EC-CUBEのように見た目だけあっただけに、逆に好感が持てます!多言語に対応しているられているという印象です。セミナーで色々な方聞くと、実はEC-CUBEの品質が非常にの中では有名みたいですね。ネットマーケティの知識はそれなりに高いレベルにあります。プログラミングも少しですが実務ます。ネットショップの乗り換えた時に、色々なシステムを徹底的にみましたが、その中でもEC-CUBEの品質はに低いと感じました。、多額の費用投資したあげく、EC-CUBEを使うことは念。大きな損ってしまいました。のズサンな管理体制や根本的ミスを考えると、EC-CUBEに未来はな判断しました。ネットで色々と集めてみると、EC-CUBEはそもそもロック社で販売するシステムとして開発されたが、EC-CUBEはあまりにヒドイので、悪い点を出して具それでも、未だにEC-CUBEの一人勝ち。技術者嫌われ、店長さんに好かれる。面白いものですよね。EC-CUBEに限らず、悪い所も全部てんだろ、生かすもすお好きにどうぞ。ってのがオープンソースだよ。面倒臭がらずに、完璧目指して全部自分でフルビすりゃいいじゃん。いくら無料といえ、オーンソースだとは言え、最低限のデバッEC-CUBEの品質仕事でEC-CUBEを使います[EC]消費税の計算方法と総表示気になる術メモデザインを当て込む立場からのEC-CUBEEC-CUBEで調べ物をしていたらEC-CUBEはここが酷い。最近EC-CUBEのプログラム修正を仕事でしているわけだが、EC-CUBEのプログラムソースは余りにも酷すぎる。開発者が初歩的な英単語を理解していない。になっている。EC-CUBE1.xシリーズとEC-CUBE2.xのプログラムソースが混在している。旧世代の遺物が沢山ファイル名や内部パスの隠蔽が不完全。結局はPHPプログラマがいないとまともなサイトは作れないというオチが。費税の計算方法と総額表示EC-CUBE追記消費税計算と総額表示「超致命的」となっているところの計算は開発者の方が正しいが…たしかにEC-CUBEの仕様は正しいですが、端数処理方法が四捨五入や切り上なぜコミッターになって修正しないの?EC-CUBEリリース初期には色々と対応はしていたのですが、現在メインで使っているソースがEC-CUBEが配布しているものに対しコミッターになって修正してあげればいいんじゃないでしょうか。www.ec-cubeオープンソースなんで、コミッターのスキル・テクニックに委ねられると「開発者が料金計算ができない」での計算は間違ってないけど。今仕事でEC-CUBEのカスタマイズをやっているのですが…。ほんとひどすぎですね。いくらフリーとはいEC-CUBEはバグが多いという貴重な情報をありがとうございます。ところでこの記事で言及されているEC-CUBEのバージョンっていくつでaiueo(EC-CUBEコミッター)aiueo(EC-CUBEコミッター)的には非常に的を得た記事だとEC-CUBEフォーラムでも話題に上げてみようかな。EC-CUBEは色々と問題はあるものの、中小規模で見た目さえ良ければOKなサイ人から聞いた話ですが、ロックオンの社長は「EC-CUBEにバグがなかったり、言ってたみたいだし。あえてこの品質じゃないんでしょうか?それよりも、私はLiveCommerています。が公開後、EC-CUBEのシェアガタ落ちにならなけいですがね。EC-CUBEにはプログラム的を運営している私から見るとEC-CUBEのホームページがもうちょっといい加減なデザインだとよいのですが、EC-CUBEが使えるのかどうか調査するだけでも相当大変で時間がかかります。上に出たプラチナパートナーのA社は、EC-CUBE以外のサービスはやっていないので、EC-CUBEという泥舟に乗った会社な案はもちろんありませんしEC-CUBEは、色んな意味で非常に低なので、当に世の中のゴミだと思います。ホームページのデザインした印象は受けませんが、EC-CUBEのように見た目だけあっただけに、逆に好感が持てます!多言語に対応しているられているという印象です。セミナーで色々な方聞くと、実はEC-CUBEの品質が非常にの中では有名みたいですね。ネットマーケティの知識はそれなりに高いレベルにあります。プログラミングも少しですが実務ます。ネットショップの乗り換えた時に、色々なシステムを徹底的にみましたが、その中でもEC-CUBEの品質はに低いと感じました。、多額の費用投資したあげく、EC-CUBEを使うことは念。大きな損ってしまいました。のズサンな管理体制や根本的ミスを考えると、EC-CUBEに未来はな判断しました。ネットで色々と集めてみると、EC-CUBEはそもそもロック社で販売するシステムとして開発されたが、EC-CUBEはあまりにヒドイので、悪い点を出して具それでも、未だにEC-CUBEの一人勝ち。技術者嫌われ、店長さんに好かれる。面白いものですよね。EC-CUBEに限らず、悪い所も全部てんだろ、生かすもすお好きにどうぞ。ってのがオープンソースだよ。面倒臭がらずに、完璧目指して全部自分でフルビすりゃいいじゃん。いくら無料といえ、オーンソースだとは言え、最低限のデバッEC-CUBEの品質仕事でEC-CUBEを使います[EC]消費税の計算方法と総表示気になる術メモデザインを当て込む立場からのEC-CUBEEC-CUBEで調べ物をしていたらEC-CUBEはここが酷い。最近EC-CUBEのプログラム修正を仕事でしているわけだが、EC-CUBEのプログラムソースは余りにも酷すぎる。開発者が初歩的な英単語を理解していない。になっている。EC-CUBE1.xシリーズとEC-CUBE2.xのプログラムソースが混在している。旧世代の遺物が沢山ファイル名や内部パスの隠蔽が不完全。結局はPHPプログラマがいないとまともなサイトは作れないというオチが。費税の計算方法と総額表示EC-CUBE追記消費税計算と総額表示「超致命的」となっているところの計算は開発者の方が正しいが…たしかにEC-CUBEの仕様は正しいですが、端数処理方法が四捨五入や切り上なぜコミッターになって修正しないの?EC-CUBEリリース初期には色々と対応はしていたのですが、現在メインで使っているソースがEC-CUBEが配布しているものに対しコミッターになって修正してあげればいいんじゃないでしょうか。www.ec-cubeオープンソースなんで、コミッターのスキル・テクニックに委ねられると「開発者が料金計算ができない」での計算は間違ってないけど。今仕事でEC-CUBEのカスタマイズをやっているのですが…。ほんとひどすぎですね。いくらフリーとはいEC-CUBEはバグが多いという貴重な情報をありがとうございます。ところでこの記事で言及されているEC-CUBEのバージョンっていくつでaiueo(EC-CUBEコミッター)aiueo(EC-CUBEコミッター)的には非常に的を得た記事だとEC-CUBEフォーラムでも話題に上げてみようかな。EC-CUBEは色々と問題はあるものの、中小規模で見た目さえ良ければOKなサイ人から聞いた話ですが、ロックオンの社長は「EC-CUBEにバグがなかったり、言ってたみたいだし。あえてこの品質じゃないんでしょうか?それよりも、私はLiveCommerています。が公開後、EC-CUBEのシェアガタ落ちにならなけいですがね。EC-CUBEにはプログラム的を運営している私から見るとEC-CUBEのホームページがもうちょっといい加減なデザインだとよいのですが、EC-CUBEが使えるのかどうか調査するだけでも相当大変で時間がかかります。上に出たプラチナパートナーのA社は、EC-CUBE以外のサービスはやっていないので、EC-CUBEという泥舟に乗った会社な案はもちろんありませんしEC-CUBEは、色んな意味で非常に低なので、当に世の中のゴミだと思います。ホームページのデザインした印象は受けませんが、EC-CUBEのように見た目だけあっただけに、逆に好感が持てます!多言語に対応しているられているという印象です。セミナーで色々な方聞くと、実はEC-CUBEの品質が非常にの中では有名みたいですね。ネットマーケティの知識はそれなりに高いレベルにあります。プログラミングも少しですが実務ます。ネットショップの乗り換えた時に、色々なシステムを徹底的にみましたが、その中でもEC-CUBEの品質はに低いと感じました。、多額の費用投資したあげく、EC-CUBEを使うことは念。大きな損ってしまいました。のズサンな管理体制や根本的ミスを考えると、EC-
nCUBEに未来はな判断しました。ネットで色々と集めてみると、EC-CUBEはそもそもロック社で販売するシステムとして開発されたが、EC-CUBEはあまりにヒドイので、悪い点を出して具それでも、未だにEC-CUBEの一人勝ち。技術者嫌われ、店長さんに好かれる。面白いものですよね。EC-CUBEに限らず、悪い所も全部てんだろ、生かすもすお好きにどうぞ。ってのがオープンソースだよ。面倒臭がらずに、完璧目指して全部自分でフルビすりゃいいじゃん。いくら無料といえ、オーンソースだとは言え、最低限のデバッEC-CUBEの品質仕事でEC-CUBEを使います[EC]消費税の計算方法と総表示気になる術メモデザインを当て込む立場からのEC-CUBEEC-CUBEで調べ物をしていたらEC-CUBEはここが酷い。最近EC-CUBEのプログラム修正を仕事でしているわけだが、EC-CUBEのプログラムソースは余りにも酷すぎる。開発者が初歩的な英単語を理解していない。になっている。EC-CUBE1.xシリーズとEC-CUBE2.xのプログラムソースが混在している。旧世代の遺物が沢山ファイル名や内部パスの隠蔽が不完全。結局はPHPプログラマがいないとまともなサイトは作れないというオチが。費税の計算方法と総額表示EC-CUBE追記消費税計算と総額表示「超致命的」となっているところの計算は開発者の方が正しいが…たしかにEC-CUBEの仕様は正しいですが、端数処理方法が四捨五入や切り上なぜコミッターになって修正しないの?EC-CUBEリリース初期には色々と対応はしていたのですが、現在メインで使っているソースがEC-CUBEが配布しているものに対しコミッターになって修正してあげればいいんじゃないでしょうか。www.ec-cubeオープンソースなんで、コミッターのスキル・テクニックに委ねられると「開発者が料金計算ができない」での計算は間違ってないけど。今仕事でEC-CUBEのカスタマイズをやっているのですが…。ほんとひどすぎですね。いくらフリーとはいEC-CUBEはバグが多いという貴重な情報をありがとうございます。ところでこの記事で言及されているEC-CUBEのバージョンっていくつでaiueo(EC-CUBEコミッター)aiueo(EC-CUBEコミッター)的には非常に的を得た記事だとEC-CUBEフォーラムでも話題に上げてみようかな。EC-CUBEは色々と問題はあるものの、中小規模で見た目さえ良ければOKなサイ人から聞いた話ですが、ロックオンの社長は「EC-CUBEにバグがなかったり、言ってたみたいだし。あえてこの品質じゃないんでしょうか?それよりも、私はLiveCommerています。が公開後、EC-CUBEのシェアガタ落ちにならなけいですがね。EC-CUBEにはプログラム的を運営している私から見るとEC-CUBEのホームページがもうちょっといい加減なデザインだとよいのですが、EC-CUBEが使えるのかどうか調査するだけでも相当大変で時間がかかります。上に出たプラチナパートナーのA社は、EC-CUBE以外のサービスはやっていないので、EC-CUBEという泥舟に乗った会社な案はもちろんありませんしEC-CUBEは、色んな意味で非常に低なので、当に世の中のゴミだと思います。ホームページのデザインした印象は受けませんが、EC-CUBEのように見た目だけあっただけに、逆に好感が持てます!多言語に対応しているられているという印象です。セミナーで色々な方聞くと、実はEC-CUBEの品質が非常にの中では有名みたいですね。ネットマーケティの知識はそれなりに高いレベルにあります。プログラミングも少しですが実務ます。ネットショップの乗り換えた時に、色々なシステムを徹底的にみましたが、その中でもEC-CUBEの品質はに低いと感じました。、多額の費用投資したあげく、EC-CUBEを使うことは念。大きな損ってしまいました。のズサンな管理体制や根本的ミスを考えると、EC-CUBEに未来はな判断しました。ネットで色々と集めてみると、EC-CUBEはそもそもロック社で販売するシステムとして開発されたが、EC-CUBEはあまりにヒドイので、悪い点を出して具それでも、未だにEC-CUBEの一人勝ち。技術者嫌われ、店長さんに好かれる。面白いものですよね。EC-CUBEに限らず、悪い所も全部てんだろ、生かすもすお好きにどうぞ。ってのがオープンソースだよ。面倒臭がらずに、完璧目指して全部自分でフルビすりゃいいじゃん。いくら無料といえ、オーンソースだとは言え、最低限のデバッEC-CUBEの品質仕事でEC-CUBEを使います[EC]消費税の計算方法と総表示気になる術メモデザインを当て込む立場からのEC-CUBEEC-CUBEで調べ物をしていたらEC-CUBEはここが酷い。最近EC-CUBEのプログラム修正を仕事でしているわけだが、EC-CUBEのプログラムソースは余りにも酷すぎる。開発者が初歩的な英単語を理解していない。になっている。EC-CUBE1.xシリーズとEC-CUBE2.xのプログラムソースが混在している。旧世代の遺物が沢山ファイル名や内部パスの隠蔽が不完全。結局はPHPプログラマがいないとまともなサイトは作れないというオチが。費税の計算方法と総額表示EC-CUBE追記消費税計算と総額表示「超致命的」となっているところの計算は開発者の方が正しいが…たしかにEC-CUBEの仕様は正しいですが、端数処理方法が四捨五入や切り上なぜコミッターになって修正しないの?EC-CUBEリリース初期には色々と対応はしていたのですが、現在メインで使っているソースがEC-CUBEが配布しているものに対しコミッターになって修正してあげればいいんじゃないでしょうか。www.ec-cubeオープンソースなんで、コミッターのスキル・テクニックに委ねられると「開発者が料金計算ができない」での計算は間違ってないけど。今仕事でEC-CUBEのカスタマイズをやっているのですが…。ほんとひどすぎですね。いくらフリーとはいEC-CUBEはバグが多いという貴重な情報をありがとうございます。ところでこの記事で言及されているEC-CUBEのバージョンっていくつでaiueo(EC-CUBEコミッター)aiueo(EC-CUBEコミッター)的には非常に的を得た記事だとEC-CUBEフォーラムでも話題に上げてみようかな。EC-CUBEは色々と問題はあるものの、中小規模で見た目さえ良ければOKなサイ人から聞いた話ですが、ロックオンの社長は「EC-CUBEにバグがなかったり、言ってたみたいだし。あえてこの品質じゃないんでしょうか?それよりも、私はLiveCommerています。が公開後、EC-CUBEのシェアガタ落ちにならなけいですがね。EC-CUBEにはプログラム的を運営している私から見るとEC-CUBEのホームページがもうちょっといい加減なデザインだとよいのですが、EC-CUBEが使えるのかどうか調査するだけでも相当大変で時間がかかります。上に出たプラチナパートナーのA社は、EC-CUBE以外のサービスはやっていないので、EC-CUBEという泥舟に乗った会社な案はもちろんありませんしEC-CUBEは、色んな意味で非常に低なので、当に世の中のゴミだと思います。ホームページのデザインした印象は受けませんが、EC-CUBEのように見た目だけあっただけに、逆に好感が持てます!多言語に対応しているられているという印象です。セミナーで色々な方聞くと、実はEC-CUBEの品質が非常にの中では有名みたいですね。ネットマーケティの知識はそれなりに高いレベルにあります。プログラミングも少しですが実務ます。ネットショップの乗り換えた時に、色々なシステムを徹底的にみましたが、その中でもEC-CUBEの品質はに低いと感じました。、多額の費用投資したあげく、EC-CUBEを使うことは念。大きな損ってしまいました。のズサンな管理体制や根本的ミスを考えると、EC-CUBEに未来はな判断しました。ネットで色々と集めてみると、EC-CUBEはそもそもロック社で販売するシステムとして開発されたが、EC-CUBEはあまりにヒドイので、悪い点を出して具それでも、未だにEC-CUBEの一人勝ち。技術者嫌われ、店長さんに好かれる。面白いものですよね。EC-CUBEに限らず、悪い所も全部てんだろ、生かすもすお好きにどうぞ。ってのがオープンソースだよ。面倒臭がらずに、完璧目指して全部自分でフルビすりゃいいじゃん。いくら無料といえ、オーンソースだとは言え、最低限のデバッEC-CUBEの品質仕事でEC-CUBEを使います[EC]消費税の計算方法と総表示気になる術メモデザインを当て込む立場からのEC-CUBEEC-CUBEで調べ物をしていたらEC-CUBEはここが酷い。最近EC-CUBEのプログラム修正を仕事でしているわけだが、EC-CUBEのプログラムソースは余りにも酷すぎる。開発者が初歩的な英単語を理解していない。になっている。EC-CUBE1.xシリーズとEC-CUBE2.xのプログラムソースが混在している。旧世代の遺物が沢山ファイル名や内部パスの隠蔽が不完全。結局はPHPプログラマがいないとまともなサイトは作れないというオチが。費税の計算方法と総額表示EC-CUBE追記消費税計算と総額表示「超致命的」となっているところの計算は開発者の方が正しいが…たしかにEC-CUBEの仕様は正しいですが、端数処理方法が四捨五入や切り上なぜコミッターになって修正しないの?EC-CUBEリリース初期には色々と対応はしていたのですが、現在メインで使っているソースがEC-
nCUBEが配布しているものに対しコミッターになって修正してあげればいいんじゃないでしょうか。www.ec-cubeオープンソースなんで、コミッターのスキル・テクニックに委ねられると「開発者が料金計算ができない」での計算は間違ってないけど。今仕事でEC-CUBEのカスタマイズをやっているのですが…。ほんとひどすぎですね。いくらフリーとはいEC-CUBEはバグが多いという貴重な情報をありがとうございます。ところでこの記事で言及されているEC-CUBEのバージョンっていくつでaiueo(EC-CUBEコミッター)aiueo(EC-CUBEコミッター)的には非常に的を得た記事だとEC-CUBEフォーラムでも話題に上げてみようかな。EC-CUBEは色々と問題はあるものの、中小規模で見た目さえ良ければOKなサイ人から聞いた話ですが、ロックオンの社長は「EC-CUBEにバグがなかったり、言ってたみたいだし。あえてこの品質じゃないんでしょうか?それよりも、私はLiveCommerています。が公開後、EC-CUBEのシェアガタ落ちにならなけいですがね。EC-CUBEにはプログラム的を運営している私から見るとEC-CUBEのホームページがもうちょっといい加減なデザインだとよいのですが、EC-CUBEが使えるのかどうか調査するだけでも相当大変で時間がかかります。上に出たプラチナパートナーのA社は、EC-CUBE以外のサービスはやっていないので、EC-CUBEという泥舟に乗った会社な案はもちろんありませんしEC-CUBEは、色んな意味で非常に低なので、当に世の中のゴミだと思います。ホームページのデザインした印象は受けませんが、EC-CUBEのように見た目だけあっただけに、逆に好感が持てます!多言語に対応しているられているという印象です。セミナーで色々な方聞くと、実はEC-CUBEの品質が非常にの中では有名みたいですね。ネットマーケティの知識はそれなりに高いレベルにあります。プログラミングも少しですが実務ます。ネットショップの乗り換えた時に、色々なシステムを徹底的にみましたが、その中でもEC-CUBEの品質はに低いと感じました。、多額の費用投資したあげく、EC-CUBEを使うことは念。大きな損ってしまいました。のズサンな管理体制や根本的ミスを考えると、EC-CUBEに未来はな判断しました。ネットで色々と集めてみると、EC-CUBEはそもそもロック社で販売するシステムとして開発されたが、EC-CUBEはあまりにヒドイので、悪い点を出して具それでも、未だにEC-CUBEの一人勝ち。技術者嫌われ、店長さんに好かれる。面白いものですよね。EC-CUBEに限らず、悪い所も全部てんだろ、生かすもすお好きにどうぞ。ってのがオープンソースだよ。面倒臭がらずに、完璧目指して全部自分でフルビすりゃいいじゃん。いくら無料といえ、オーンソースだとは言え、最低限のデバッEC-CUBEの品質仕事でEC-CUBEを使います[EC]消費税の計算方法と総表示気になる術メモデザインを当て込む立場からのEC-CUBEEC-CUBEで調べ物をしていたら
保護中: カートに渡すPOST項目を増やす(全文)
sslの設定(httpd.conf, httpd-ssl.conf)
Listen subdomain.localhost:443 <VirtualHost localhost:443> DocumentRoot "I:/home/DIR_NAME" ServerName localhost:443 ServerAdmin root@localhost SSLEngine on SSLCertificateFile "C:/Apache2.2/conf/server.crt" SSLCertificateKeyFile "C:/Apache2.2/conf/server.key" </VirtualHost>
※ 「SSLEngine on」を書かないと「ssl_error_rx_record_too_long」などのエラーになる。
apache2.2 でphpを動かす
httpd.conf
IfModule mime_module 内に追記する
PHPIniDir “C:/php/”
LoadModule php5_module “C:/php/php5apache2_2.dll”
ブラウザに自動エンコードさせない。
URLを自動生成してブログサイトなどの自動検索を行う場合、
キーワードがエンコードされてしまうと検索できない。
生データを送り付けたい場合に活用する。
(例)
https://mint123.tokyo/technology/?kw=%1B$B$O$7$b$H%1B(B ←青文字の部分をそのままの文字列として取得する場合などに活用します。
普通に取得すると勝手にエンコーディングされて「はしもと」になってしまいます。
$kw = $_GET[kw]; urlencode($kw); echo $kw;
連想配列を任意のキーでソートする
$hoge = $_SESSION[ranking]; $i = 0; foreach($hoge as $key => $row){ $id[$key] = $row["id"]; $counts[$key] = $row["counts"]; $i ++; } array_multisort($counts,SORT_DESC,$hoge); echo '<pre>'; var_dump($hoge); echo '</pre>';
保護中: 記事やカテゴリ抽出(全文)
管理画面のカスタマイズ(ファイルリスト)
記事投稿のテキストエリア
/wp-includes/general-template.php
Line:1688
配列をランダムにシャッフルする
//--------------------------------------------- // ランダム化 //--------------------------------------------- // 乱数生成 function make_seed(){ list($usec, $sec) = explode(' ', microtime()); return (float) $sec + ((float) $usec * 100000); } srand(make_seed()); $randval = rand(); // シャッフル shuffle($array); $i = 0; while($array[$i] != ''){ echo $array[$i]; $i ++; }
Worspressで固定ページのカスタムテンプレートが選択できない。
記事本文から画像を排除する。
この機能を使いたくなるのは、記事の一覧表示などだろう。
他のHTMLタグも不要なので「strip_tags」してしまえばOK!
<?php $hoge = get_the_content(); $hoge = strip_tags($hoge); echo $hoge; ?>
会員ランクで価格を変える
価格を数種用意する場合、値引きする場合、書き方は違うが、表示対応、計算対応は同じところを変更すれば良い。
①カートの計算で会員価格と通常価格の識別
/data/class/helper/SC_Helper_DB.php
366行目付近
// 価格の登録 //if ($arrData['price02'] != "") { // $objCartSess->setProductValue($arrCart[$i]['id'], 'price', $arrData['price02']); // $objPage->arrProductsClass[$cnt]['uniq_price'] = $arrData['price02']; //} else { // $objCartSess->setProductValue($arrCart[$i]['id'], 'price', $arrData['price01']); // $objPage->arrProductsClass[$cnt]['uniq_price'] = $arrData['price01']; //} if($_SESSION[customer][status] == "3"){ $objCartSess->setProductValue($arrCart[$i]['id'], 'price', $arrData['price02']); $objPage->arrProductsClass[$cnt]['uniq_price'] = $arrData['price02']; } else { $objCartSess->setProductValue($arrCart[$i]['id'], 'price', $arrData['price01']); $objPage->arrProductsClass[$cnt]['uniq_price'] = $arrData['price01']; }
②カートページの表示調整
/data/Smarty/templates/default/cart/index.tpl
小計、合計には「SC_Helper_DB.php」の計算結果が反映するが、単価は「confirm.tpl」で調整しなければならない。
③決済最終確認ページ
/data/Smarty/templates/default/shopping/confirm.tpl
小計、合計には「SC_Helper_DB.php」の計算結果が反映するが、単価は「confirm.tpl」で調整しなければならない。
④受注管理で確認して、反映されていれば成功!
新規に作ったページが編集できない
キャッシュファイルのパーミッションの問題のようです。
管理画面から新規ファイルを作ると owner:apache, mode:644 になってしまい、編集ができない。
FTPで操作すれば回避できるが、毎回のことなのでとても面倒だ。
「umask(0);」でCUBE本体に変更をかけてみよう!
親カテゴリのIDを取得する
親カテゴリのIDを取得する
<?php /* 現在のカテゴリ-の取得 */ $cat_now = get_the_category(); $cat_now = $cat_now[0]; // echo '<pre'>';var_dump($cat_now);echo ''</pre'>'; // 子カテゴリに関するいろんなデータの配列 /*親カテゴリーのID取得*/ $parent_id = $cat_now->category_parent; echo $parent_id; ?>
現在のカテゴリを抽出する
/* 現在のカテゴリ-の取得 */ $cat_now = get_the_category(); $cat_now = $cat_now[0]; echo '<pre>';var_dump($cat_now);echo '</pre>'; $cat_now = $cat_now->term_id; echo '★'.$cat_now.'★';
子カテゴリを指定して記事を表示する
<?php query_posts($query_string . "<span style="color: #3366ff;">&cat=123</span>=info&showposts=8&order=DESC"); ?>
子カテゴリを指定しても、親カテゴリを抽出してしまう。
<?php query_posts($query_string . "<span style="color: #3366ff;">&category_name=info</span>&showposts=8&order=DESC"); ?>
「category_name」を指定すると子カテゴリで抽出できた。
新着商品(スターテスアイコンと連動)
会員価格ありの場合
このソースは改善の余地があるのですが、そのうち…
<!--▼ 新着商品ここまで--> <!--{php}--> // Config読込み include $_SERVER[DOCUMENT_ROOT]."/data/install.php"; //------------------------------------------------------ // MySQLに接続開始 $db = mysql_connect(DB_SERVER,DB_USER,DB_PASSWORD); // mysql_query("SET NAMES utf8"); // DB指定(確認用) if(!mysql_select_db(DB_NAME, $db)){ // echo "<div style=\"color:red;\">\nメインデータベースに接続できません。</div>\n"; }elseif(mysql_select_db(DB_NAME, $db)){ // echo "<div style=\"color:green;\">\nDB指定OK!(".DB_NAME.")</div>\n\n\n"; } //------------------------------------------------------ <!--{/php}--> <div id="recomendarea"> <h2> <img src="<!--{$TPL_DIR}-->img/top/osusume.jpg" width="500" height="21" alt="おすすめ情報" /> </h2> <div class="recomendblock"> <!--{php}--> // Config読込み include $_SERVER[DOCUMENT_ROOT]."/data/install.php"; //------------------------------------------------------ // MySQLに接続開始 $db = mysql_connect(DB_SERVER,DB_USER,DB_PASSWORD); // mysql_query("SET NAMES utf8"); // DB指定(確認用) if(!mysql_select_db(DB_NAME, $db)){ // echo "<div style=\"color:red;\">\nメインデータベースに接続できません。</div>"; }elseif(mysql_select_db(DB_NAME, $db)){ // echo "<div style=\"color:green;\">\nDB指定OK!(".DB_NAME.")</div>"; } //------------------------------------------------------ // 該当商品の抽出 $sql="SELECT * FROM `dtb_products` WHERE `status` = '1'"; $rs = mysql_query($sql,$db); $arr_product_id = array(); while($item = mysql_fetch_assoc($rs)){ $arr_product_flag = (str_split($item[product_flag])); if($arr_product_flag [0] == 1){ // echo $item[name]; array_push ($arr_product_id, $item[product_id]); } } // var_dump($arr_product_id); // 該当商品の表示 $i = 0; while($arr_product_id[$i] != ""){ // dtb_products $sql2="SELECT * FROM `dtb_products` WHERE `product_id` = '$arr_product_id[$i]'"; $rs2 = mysql_query($sql2,$db); $item2 = mysql_fetch_assoc($rs2); // dtb_products_class $sql3="SELECT * FROM `dtb_products_class` WHERE `product_id` = '$arr_product_id[$i]'"; $rs3 = mysql_query($sql3,$db); $item3 = mysql_fetch_assoc($rs3); $price01 = $item3[price01] * 1.05; $price01 = number_format($price01); $price02 = $item3[price02] * 1.05; $price02 = number_format($price02); // echo '<pre>'; var_dump($item3); echo '</pre>'; echo '<div class="single"> <div class="img"> <a href="/products/detail.php?product_id='.$arr_product_id[$i].'"> <img src="/upload/save_image/'.$item2[main_list_image].'" /> </a> </div> <h3> <a href="/products/detail. php?product_id='.$arr_product_id[$i].'">'.$item2[name] .'</a> </h3> <p class="comments">'.$item2[main_list_comment].'</p> <div class="price">通常価格:<span class="red">'.$price01.'</span>円 (税込) </div> <div class="price">会員価格:<span class="red">'.$price02.'</span>円 (税込) </div> </p> </div><!-- /single --> '; $i ++; } // 価格 $sql1="SELECT * FROM `dtb_products_class` WHERE `product_class_id` = '55'"; $rs1 = mysql_query($sql1,$db); $item1 = mysql_fetch_assoc($rs1); $price01 = $item1[price01]; $price01 = ($price01 * 1.05); $price01 = number_format($price01); $price02 = $item1[price02]; $price02 = ($price02 * 1.05); $price02 = number_format($price02); <!--{/php}--> </div> </div> <!--▲ 新着商品ここまで-->
モバイル振り分け
携帯電話のユーザーエージェントを取得して振り分ける
// UA 取得 $agent = $_SERVER['HTTP_USER_AGENT']; if(ereg("^DoCoMo", $agent)){ $env = "docomo"; }elseif(ereg("^UP.Browser|^KDDI", $agent)){ $env = "au"; }elseif(ereg("^J-PHONE|^Vodafone|^SoftBank", $agent)){ $env = "softbank"; }elseif(ereg("^MOT-|^WILLCOM", $agent)){ $env = "willcom"; }else{ $env = "pc"; }
$agent = $_SERVER['HTTP_USER_AGENT']; $hoge = array('DoCoMo', 'UP.Browser', 'KDDI', 'J-PHONE', 'Vodafone', 'SoftBank', 'MOT-', 'WILLCOM' ); $env = 'pc'; $i = 0; while($hoge[$i] != ''){ if(preg_match("/$hoge[$i]/", $agent)){ $env = 'mobile'; } $i ++; } if($env != 'pc') header("Location: /m/index.php");
メールテンプレートのSmarty変数をダンプする
ユーザー情報など
$arrOrder = $this->get_template_vars('arrOrder'); print_r($arrOrder);
商品詳細
$arrOrderDetail = $this->get_template_vars('arrOrderDetail'); print_r($arrOrderDetail);
「arrOrder」の変わりに品位の変数を代入する。
特定カテゴリを非表示にする。
category.tpl(サイドブロック) <!--商品カテゴリーここから--> <h2> <img src="<!--{$TPL_DIR}-->/img/side/title_cat.jpg" width="220" height="30" alt="商品カテゴリー" /> </h2> <div id="categoryarea"> <ul id="categorytree"> <!--{assign var=preLev value=1}--> <!--{assign var=firstdone value=0}--> <!--{section name=cnt loop=$arrTree}--> <!--{* 表示フラグがTRUEなら表示 *}--> <!--{* if $arrTree[cnt].display == 1 *}--> <span style="color: #3366ff;"><!--{if $arrTree[cnt].category_id != 18}--></span> <!--{assign var=level value=`$arrTree[cnt].level`}--> <!--{assign var=levdiff value=`$level-$preLev`}--> <!--{if $levdiff > 0}--> <ul> <!--{elseif $levdiff == 0 && $firstdone == 1}--> </li> <!--{elseif $levdiff < 0}--> <!--{section name=d loop=`$levdiff*-1`}--> </li> </ul> <!--{/section}--> </li> <!--{/if}--> <li class="level<!--{$level}--><!--{if in_array($arrTree[cnt].category_id, $tpl_category_id) }--> onmark<!--{/if}-->"><a href="<!--{$smarty.const.URL_DIR}-->products/list.php?category_id=<!--{$arrTree[cnt].category_id}-->"<!--{if in_array($arrTree[cnt].category_id, $tpl_category_id) }--> class="onlink"<!--{/if}-->><!--{$arrTree[cnt].category_name|escape}-->(<!--{$arrTree[cnt].product_count|default:0}-->)</a> <!--{if $firstdone == 0}--><!--{assign var=firstdone value=1}--><!--{/if}--> <!--{assign var=preLev value=`$level`}--> <!--{* /if *}--> <!--{* セクションの最後に閉じタグを追加 *}--> <!--{if $smarty.section.cnt.last}--> <!--{if $preLev-1 > 0 }--> <!--{section name=d loop=`$preLev-1`}--> </li> </ul> <!--{/section}--> </li> <!--{else}--> </li> <!--{/if}--> <span style="color: #3366ff;"><!--{/if}--></span> <!--{/if}--> <!--{/section}--> </ul> </div> <!--商品カテゴリーここまで--> 一覧ページは商品IDで非表示 <!--{section name=cnt loop=$arrProducts}--> <!--{assign var=id value=$arrProducts[cnt].product_id}--> <!--{if $arrProducts[cnt].product_id != 7}--> ...省略 <!--{/if}--> <!--{/section}-->
worepress でlightbox が動かないのはなぜ!
WordPress で投稿日付が表示されない
WordPress の仕様です。
the_date 前の記事と同じ日付は省略されます。
the_time 各記事に日付が表示されます。
<?php the_time('h:i:s') ?>
動的URLの静的URL化
.htaccess の設定は皆さんご存知の通り、
サーバーが対応していない場合は ”httpd.conf” に 書くべし!
LoadModule rewrite_module modules/mod_rewrite.so
ヘッダーのtitleを整形する
デフォルトでは「 サイト名 ≫ ページ名 」のようになっている。
SEO対策としては少々足りない気がする。
「 ページ名 ≫ サイト名 」 としたいが単に順番を変えると「≫」が先頭にきてしまう。
phpで置換するのもよいが、その前に公式マニュアルを調べると、書いてありました。
http://wpdocs.sourceforge.jp/テンプレートタグ/wp_titleの中断くらいに「ブログ名とタイトルを反転して区切る」という項目があります。
<title> <?php wp_title('--', true, 'right'); ?> <?php bloginfo('name'); ?> </title>
区切り文字(記号)を右付にできるんですね。
MT の変数を PHP で扱う
MTに用意されていない機能を実装する場合、
現在の記事ID(エントリーID、EntryID)を取得すれば、あとはBDに接続し思いのままに操れる。
ではどうやって記事IDを頂くか? とても簡単だ!
$hoge = "<$MTEntryID$>"; echo $hoge;
MT変数をダブルクォーテーションで括るとだめなとき、シングルクォーテーションでいける場合もある。
<?php $hoge = '<$mt:EntryBody$>'; echo $hoge; ?>