忍者ブログ
14 April

welcart PS Auto Sitemap サイトマップ表示する

固定ページを作り、HTMLモード

<!-- SITEMAP CONTENT REPLACE POINT -->

とコピペするだけ。
あとは「設定」でいじる。
カテゴリーと投稿の表示 投稿を分割にチェックを入れる。

トラブル

welcartで使用すると、ここで問題が起きる。
welcartのカテゴリーは「商品」「商品ジャンル(使っていれば)」にチェックを必ずいれなければならない。それはこのカテゴリー名を読んで色々処理されてるから。
だからサイトマップを表示させると、

「商品」には階層以下登録した商品全て
「商品ジャンル」には階層以下登録した商品全て
「各設定した商品カテ名」以下商品全て

が表示されることとなり、3回同じ商品リンク表示がされることとなる。
IDでカテゴリ除外できるが、「商品」「商品ジャンル」を指定すると、
カテゴリ以下全て非表示となりまったく意味をなさなくなる。

解決法

しょうがないのでカテゴリーと投稿の表示 投稿を分割にチェックを入れる。
こうすると各商品ページへのリンクはなくなるが見た目がすっきりする。
カテゴリ名をクリックすると、各商品ページへのリンクが並んだサイトマップになる。
PR
14 April

welcart カートページ、メンバーページの編集について

検索すると

【重要】カートページ、メンバーページ等のカスタマイズについて

というページが上位に引っかかり、これをそのまま参考にしてしまいますよね。
でもちょっと待ってください。
現在ではもっと簡単な方法でできます。2014/04

/plugins/usc-e-shop/theme/welcart_default/wc_templates

フォルダをコピーし、

/自分のテーマ/
wc_templates/

の位置にフォルダごとコピーしてください。
そして中身の.phpファイルを編集してください。

私も最初はフィルターやらなんやらよくわからなくて困ってたんですが、
welcartのフォーラムで検索しているうちに、現在のアップデート状況を見つけました。
オンラインマニュアル見ても書いてないし、.phpのファイル名も昔のままだし、
鵜呑みにしては危ない部分がかなりあります。
本体は無料だし、有料サポートや有料制作のほうを優先してるだろうし、
色んな機能がありすぎて書き直しに手が回らないのかもしれませんね。
14 April

WordPress カテゴリー階層がなくなってしまった!

商品をカテゴリー登録していて、気づいたときには
階層表示していたカテゴリーが全部フラット表示になっていた。

原因

1、親子関係のミス。

親にチェックをいれずに、子だけチェックをいれていると、
親子関係を維持できずフラットになる。

2、未分類を変名して使用

未分類という削除できないWPデフォルトカテゴリーを、
余ってるからといって別の名前にして階層に入れ込むとフラットになる

解決策

どれが原因かわからなかったら、作業していた関係のありそうな記事を
ひとつひとつ非公開にしていってカテゴリ一覧を検証する。

13 April

welcart パスくずリストの設定

Breadcrumb NavXT パンくずリストプラグインを入れる

入れたい場所にコード記入
<div class="breadcrumbs"><!--パンくずリスト-->
    <?php if(function_exists('bcn_display'))
    {
        bcn_display();
    }?>
</div>

welcartのfunction.phpに記入
「商品」「商品ジャンル」が出てしまうので消す記述
開発フォーラムで開発の人の回答よりコピペ
http://www.welcart.com/community/forums/topic/%E3%83%91%E3%83%B3%E3%81%8F%E3%81%9A%E3%83%AA%E3%82%B9%E3%83%88%E3%81%AE%E3%82%AB%E3%82%B9%E3%82%BF%E3%83%9E%E3%82%A4%E3%82%BA%E6%96%B9%E6%B3%95%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6-1

/*パンくずリストの商品、商品ジャンルを消す*/
function my_filter_breadcrumbs($bcnObj) {
$trail = array();
if ( count($bcnObj->trail) > 0 ) {
for ( $i = 0; $i < count($bcnObj->trail); $i++ ) {
if ( '商品' != $bcnObj->trail[$i]->get_title() && '商品ジャンル' != $bcnObj->trail[$i]->get_title() ) {
$trail[] = $bcnObj->trail[$i];
}
}
}
$bcnObj->trail = $trail;
return $bcnObj;
}
add_action('bcn_after_fill', 'my_filter_breadcrumbs');
13 April

welcart サイドバーウィジェットのカテゴリー一覧をアコーディオンパネルにする

<script>
jQuery(function(){
    //sideberカテゴリの折り畳み
    jQuery(".ucart_widget_body .children").hide();
    jQuery(".ucart_widget_body li").hover(function() {
        jQuery(this).children('ul:not(:animated)').slideDown(400);
    }, function() {
        jQuery(this).children('ul:not(:animated)').hide(400);
    });
});
</script>

参考
http://hi-rom.com/blog/archives/1721

参考URLは親→子までだが、私のは親→子→孫まであるので、
変に考えてしまって余計なセレクタをいれてしまった。
入れ子関係がどんだけあろうが、変えるのは<ul>のclass名のみでよい。
カテゴリー別なので、.click だとカテ別ページにとんでしまう
そのため .hover で対処する。WordPressにはこちらのほうがよさそうだ。
数値で開閉速度が決められる。


追記2014/04/14
カーソルが外れ .hide すると、自分の行きたい場所にすんなりいけずにイライラすることがある。
階層が多くなればなるほどそのような事態になるため、開いたら開きっぱなしのほうがよいと思い、
    }, function() {
        jQuery(this).children('ul:not(:animated)').hide(400);

を削除することにした。
クリックで開閉のアコーディオンパネルができないと、色々な弊害がでてやりにくいね。


参考URLには書いてなかったこと。
試してみるとわかるが、slideDownとhideが繰り返されてしまう。
この「アニメーションが止まらない」を解決するために :not(:animated) をいれる
(jQueryデザイン入門 p129)

$(function(){
	//カテゴリの折り畳み
	$(".tree-menu .children").hide(); // .childrenというclassの子カテゴリーを隠す状態にする)
	$(".tree-menu li").hover(function() { // <li>要素にマウスカーソルを乗せたとき
		$(this).children('ul').slideDown(200); // ulの.childrenがスライドダウンする
	}, function() {
		$(this).children('ul').hide(200); // マウス外したら隠れる
	});
});

約束事
WordPress内のphpに記述するときは  $ → jQuery に変える
<head>内や<body>すぐ下にいれると読み込みが遅くなるので、</body>の直前に書く。
つまりfooter.php