Feb
10
2009
0

dbxとshadowbox のコンフリクト対策

22:36 pm

i3Themeでは、サイドバーにドッキングボックス(dbx)を使っていますが、shadowboxプラグインを有効化するとコンフリクトして働かなくなってしまうという問題があります。
このsidebar docking boxes(dbx)とshadowboxのコンフリクト対策として、とりあえず以下を考えてみました。
色々試してみると、shadowboxのwindow.onloadが実行されたとたん、dbxが落ちることがわかったので、単純にshadowboxを使う必要がない場面では、shadowboxをonloadしないというようにしただけなので、根本的にはコンフリクト対策になっていませんが・・・・。
具体的には、Homeとgalleryページでは、shadowboxをonloadし、その他のページではshadowboxをonloadしないというスクリプトをshadowbox_js.phpに書き込んだだけです。
これで、たとえば、aboutページを開くとサイドバーを開いたり閉じたり、移動したりできるようになります。
shadowbox_js.phpの途中から以下のように修正します。

	// The full Shadowbox configuration
	$shadowbox_init = '<script type="text/javascript">' . "\n";
	$shadowbox_init .= '	var shadowbox_conf = {' . "\n";
	$shadowbox_init .= $shadowbox_init_ops . "\n";
	$shadowbox_init .= '	};' . "\n";
   /**
    *remove conflict sidebar docking boxes and shadowbox
    */
   if (is_home()) {
    $shadowbox_init .= 'window.onload = function(){' . "\n";
    $shadowbox_init .= 'Shadowbox.init(shadowbox_conf);' . "\n";
    $shadowbox_init .= '	};' . "\n";
    $shadowbox_init .= '</script>'. "\n";
    echo $shadowbox_start . $shadowbox_init . $shadowbox_end;
   } else if (is_page('gallery')) {
    $shadowbox_init .= 'window.onload = function(){' . "\n";
    $shadowbox_init .= 'Shadowbox.init(shadowbox_conf);' . "\n";
    $shadowbox_init .= '	};' . "\n";
    $shadowbox_init .= '</script>'. "\n";
    echo $shadowbox_start . $shadowbox_init . $shadowbox_end;
   } else {
    $shadowbox_init .= '</script>'. "\n";
    echo $shadowbox_start . $shadowbox_init . $shadowbox_end;
   }
}
Written by hbirds in: WPカスタマイズ | Tags: , ,

www.hbirds.net