2011年11月 / 10月≪ 123456789101112131415161718192021222324252627282930≫12月

インフォメーション

FC2ブログで画像等を一括アップロードするソフトを地味に配布してます。
FC2ブログ用ファイルアップロードの最新版はこちら
(ベクター)FC2ブログ用ファイルアップロード

--.--.-- (--)

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。


 |  --:--  |  スポンサー広告  |  Top↑

2011.11.23 (Wed)

wodpressのサイドバーにある「カテゴリ」ウィジェットから特定のカテゴリを除外したり

デフォルトのウィジェット「カテゴリー」から特定のカテゴリを除外したいなって思ったので、フックがないかソースを見たら
wp-includes/default-widgets.phpの461行目に
$cat_args['title_li'] = '';
wp_list_categories(apply_filters('widget_categories_args', $cat_args));

という一文を発見。まさにこれぞというフックがちゃんと設定されてた。(WordPress 3.1)

引数は配列なんで追加も削除もしやすい。

ここでwp_list_categoriesの引数の確認をしつつ、
現在アクティブなテーマのfunction.phpに以下を記述。除外は'exclude'だった。
// *** カテゴリ一覧ウィジェットから特定のカテゴリ除外 ***
// add_filterの引数
//  'widget_categories_args'=フィルタ名
//  'my_theme_catexcept'=呼ぶ関数名(かぶらないように注意)
//  10=優先度(デフォルト10だっけ?省略可)
//  関数に渡す引数の数(1なんで省略)
add_filter('widget_categories_args', 'my_theme_catexcept',10);

function my_theme_catexcept($cat_args){
// 除外するカテゴリのid
$exclude_id = '7';
// 除外
$cat_args['exclude'] = $exclude_id;
// 返す
return $cat_args;
}

複数除外する場合は$exclude_id = '7,4'ってカンマ区切りで指定できる。
カテゴリのIDは「カテゴリー編集」画面を表示したときのURLの「tag_ID」の値で確認してる。
スポンサーサイト


 |  09:50  |  WordPress  |  トラックバック(0)  |  コメント(4)  |  Top↑

2011.11.14 (Mon)

相模原の大勝軒金太郎

大勝軒金太郎で昼飯を食ったわけです。

前回は大勝軒側のラーメン食ったので、今回は金太郎側のラーメンをくおうと頼んだのが
とんこつ野菜ラーメン(小)500円。ニンニク入れますよ。
CA3G0404.jpg

小です。豚増しとかしてないです。なのにぶあっついでかいチャーシューが3つのっている・・・
野菜は9割以上もやしだった。

でも小だから器小っちゃいんじゃない?って思うけどこれ普通のラーメンどんぶりで、完全によそで食うラーメンの1人前以上あるだろ状態。
スープもとにかくこってりこってりしてて、麺はなんか太くてぼりぼりする感じの奴。
ものすごい重かった。チャーシューでっかいのはうれしいんだけども、小と言えるボリュームじゃないよ・・・
500円でこれだからコスパは最高だと思ったけど、重いので次回はやっぱり大勝軒のほうのラーメン頼みます。
チャーシュー1枚連れにあげてやっと食い切れたくらいだし。
昼2時くらいに食って、今まだ腹減らないし。


 |  23:53  |  外食  |  トラックバック(0)  |  コメント(0)  |  Top↑

2011.11.03 (Thu)

デザイナで配置できるコントロールを作ったらコンストラクタが2回呼ばれる

デザイナで配置できる自作コントロールを作ると、デザイナで配置した時と実行したとき、計2回コンストラクタが呼ばれることになるみたい。

DataGridViewを継承したコントロールを作ってみた場合。
デフォルトで列が2個追加されてるみたいなやつ。
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
class MyDataGridView : DataGridView
{
public MyDataGridView()
: base()
{
this.Columns.Add("col1", "列1");
this.Columns.Add("col2", "列2");
}
}
}

ソリューションのビルドするとツールボックスに表示されてデザイナで配置できる状態になるので、配置。
配置時に既に勝手に列が2個ある。
uw000043.jpg

これをそのまま実行すると
uw000042.jpg

勝手に増えてる!

デザイナで配置するときだけ列を追加したい・・・配置時だけ動かしたい処理はInitLayout()をoverrideするといいみたい。
ヘルプには
継承時の注意 派生クラスで InitLayout をオーバーライドする場合は、基本クラスの InitLayout メソッドを呼び出して、コントロールが正しく表示されるようにしてください。

て書いてあるので、base.InitLayout()を忘れずに。
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
class MyDataGridView : DataGridView
{
public MyDataGridView()
: base()
{
// こっちをやめて
//this.Columns.Add("col1", "列1");
//this.Columns.Add("col2", "列2");
}

protected override void InitLayout()
{
// ベースのInitLayout
base.InitLayout();

// こっちに入れる
this.Columns.Add("col1", "列1");
this.Columns.Add("col2", "列2");

}
}
}

これでビルドして配置しなおせば
uw000044.jpg
増えなくなった。っていうメモ。

あ、でもデザイナでプロパティとか変更したりすると再度InitLayoutが呼ばれて列が増えちゃう。
protected override void InitLayout()
{
// ベースのInitLayout
base.InitLayout();

// こっちに入れる
if(!this.Columns.Contains("col1"))
this.Columns.Add("col1", "列1");
if (!this.Columns.Contains("col2"))
this.Columns.Add("col2", "列2");
}

こういう対応しておけば安心かな


 |  13:02  |  C#.NET  |  トラックバック(0)  |  コメント(0)  |  Top↑
 | BLOGTOP | 
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。