解決済

サイドバーのカレンダーの日付をクリックしても、ターゲットの日付に行きません。

カレンダーの日付をクリックしても、ターゲットの日付に行かず、指定した日付を含む月の月別アーカイブが最新のものから表示されてしまいます。
どうしたら、良いでしょうか?
日付クリック後のURLは確かに、#以下に日付が入ってるんですけど…
管理ページのメニューをいじるぐらいでは直りそうにありません。
参考までにURL載せます。


2007-04-23 01:11の質問
この質問と回答を読んで役に立った場合は「役に立つ質問」に投票してください。投票が多い質問は、役に立つ質問一覧に掲載され、より多くの人に見てもらうことができます。
Ads By Google

回答(3)

8.

2007-05-24 05:11:55ベスト
いろいろ悩んで、まだ悩んでいるのですが、↓のような感じでどうでしょうか・・・。

<script type="text/javascript">
<!--
var cc_mode=1;
var cc_maxpages=10;
var cc_aj=new Array();
function cc_getText(cc_serverURL,cc_pindex){
 if(window.XMLHttpRequest){
   cc_aj[cc_pindex]=new XMLHttpRequest();
 }else if(window.ActiveXObject){
   try{
     cc_aj[cc_pindex]=new ActiveXObject("Msxml2.XMLHTTP");
   }catch(e){
     cc_aj[cc_pindex]=new ActiveXObject("Microsoft.XMLHTTP");
   }
 }
 cc_aj[cc_pindex].open("GET",cc_serverURL);
 cc_aj[cc_pindex].onreadystatechange=function(){
   if(cc_aj[cc_pindex].readyState==4&&cc_aj[cc_pindex].status==200){
     cc_pages_a[cc_pindex]=cc_aj[cc_pindex].responseText.split("\n");
     cc_pages[cc_pindex]="";
     for(cc_pages_a[cc_pindex][0]=3;cc_pages_a[cc_pindex][0]<cc_pages_a[cc_pindex].length-1;cc_pages_a[cc_pindex][0]++){
cc_pages[cc_pindex]+=cc_pages_a[cc_pindex][cc_pages_a[cc_pindex][0]];
     }
   }
 }
 cc_aj[cc_pindex].send(null);
}
var cc_pages=new Array(cc_maxpages+1);
var cc_pages_a=new Array(cc_maxpages+1);
function searcharchive(cc_url,cc_anchor){
 for(cc_i=1;cc_i<=cc_maxpages;cc_i++){
   if(cc_mode==1){
     cc_getText(cc_url+'?p='+cc_i,cc_i);
   }
   if(cc_pages[cc_i].indexOf('date="'+cc_anchor.substr(0,4)+'-'+cc_anchor.substr(4,2)+'-'+cc_anchor.substr(6,2))>0){
     cc_obs=document.getElementsByTagName("html");
     location.href=cc_url+'?p='+cc_i+'#'+cc_anchor;
   }
 }
}
function cc_isClassName(cc_tagobj,cc_classname){
if(cc_tagobj.getAttribute("className")==cc_classname||cc_tagobj.getAttribute("class")==cc_classname)return true;
return false;
}
回答レベル : 回答

おかげさまで、解決できました。
ありがとうございました。

3.

2007-04-23 12:48:36ベター
http://cms.blog.livedoor.com/cms/preference/config...
管理ページトップ→カスタマイズ/管理 で
アーカイブの表示件数 を 30件ずつ から 全て表示
に変更。 設定を保存する をクリック 再構築

カレンダーの日付はアーカイブのデータから持って来る為、こうしておかないと拾えないようです。
1ヶ月の記事が30件以下なら問題無いのですが・・・。

解決には至りませんでしたが、丁寧に調べてくださってありがとうございました。

9.

2007-05-24 05:12:40
8の続き
function cc_modify(){
 cc_url=""; 
 cc_obs=document.getElementsByTagName("span");
 for(cc_i=0;cc_i<cc_obs.length;cc_i++){
   cc_ob=cc_obs[cc_i];
   if(cc_isClassName(cc_ob,"calendar")){
     if(cc_ob.innerHTML.indexOf('href')>0){
cc_ob.innerHTML.match(/a.+href=\"(.+?)\"/);
cc_ary=RegExp.$1.split('#');
cc_url=cc_ary[0];
cc_anchor=cc_ary[1];
cc_ob.innerHTML=cc_ob.innerHTML.replace(cc_url+'#'+cc_anchor,"javascript:searcharchive('"+cc_url+"','"+cc_anchor+"');");
     }
   }
 }
 if(cc_mode==0){
   for(cc_i=1;cc_i<=cc_maxpages;cc_i++){
     cc_getText(cc_url+'?p='+cc_i,cc_i);
   }
 }
}
cc_modify();
// -->
</script>

スクリプトは、カレンダーのある全ページ(通常は、トップ・個別・{月別/カテゴリ}アーカイブ)に貼り付けて下さい。

よろしくお願いします。
回答レベル : 回答
Ads By Google

コメント(33)

#1.  chino666
2007-04-23 16:41:19

>松井 カツオさん
1ヶ月の記事数が既に30を超えてるんですけど…
こうなるとダメなんですかね?

#2.  湯川 学
2007-04-23 17:20:52

そうなんですよ。月刊アーカイブから見ると重くなっちゃいますが・・・。
一度、全て表示にして、日付をクリックしてみて下さい。

#3.  chino666
2007-04-23 19:34:05

>松井 カツオさん
アーカイブの表示件数を全件表示にして、カレンダーの日付をクリックしてみましたが、改善されませんorz

#4.  湯川 学
2007-04-23 20:01:52

ホントですね・・・。申し訳ないです。再構築は 全てのページ でやりました? 月別アーカイブ でもお願いします。

#5.  chino666
2007-04-23 20:07:40

>松井 カツオさん
もちろん、再構築は全てのページで指定してますけど、ダメですね。
月別アーカイブを単独で再構築してみましたが、やはりダメでした。
ライブドアブログの仕様でしょうか?

#6.  湯川 学
2007-04-23 20:15:14

http://knowledge.livedoor.com/3378#answer2
過去の回答を探したところライブドアに問い合わせた方もいたようです。
やはりアーカイブの表示件数を全て表示との回答だったようです。
もう少し調べてみますね・・・。

#7.  湯川 学
2007-04-23 22:30:08

色々デザインを変更してみたところ、このデザインのみ、その日の記事に移動しませんでした。
アドレスはちゃんと
archives/2007-04.html#20070422
とかになってるのに・・・。
申し訳ないっす!!

#8.  chino666
2007-04-24 03:04:34

>松井 カツオさん
このデザインのみですかorz
HTMLがおかしいんですかね?

#9.  湯川 学
2007-04-24 12:12:19

違うデザインのカレンダー部分と取り替えたりしてみたのですが・・・直りません。自分の知識では限界です・・・。

#10.  chino666
2007-04-24 23:43:02

>松井 カツオさん
ご丁寧にありがとうございました。
ライブドアのオフィシャルのヘルプに問い合わせを送ってみました。
オフィシャルに聞いたほうがいい内容のような気がしてきたので。
回答頂いてありがとうございました。

#11.  湯川 学
2007-04-25 00:31:14

いえいえ、お役にたてず申し訳ありません。解決するといいですね。

2007-04-26 16:14:52

>>4
ミスしました。
document.write(date2name(<$ArticleDate$>));

document.write(date2name("<$ArticleDate$>"));
です。失礼しました。

#13.  chino666
2007-04-27 00:18:56

>★オニキス☆さん
回答ありがとうございます。
しかし、指定された通りの事を実行してみても、改善されませんでしたorz

2007-04-27 01:01:51

>>#13
えぇ!?改善されてるように見えますが・・・。キャッシュが効いてたりしませんでしょうか?私が見ると例えば、4月19日をクリックすると、ちゃんとその記事のところに飛びますが・・・。

月別アーカイブの2ページ目以降に記事がある場合については、今のところ対応していないので、そこはご了承下さい。でも、これも改善できそうな気はしますので、週末に考えてみます。

#15.  chino666
2007-04-27 01:09:09

>★オニキス☆さん
あっ、本当だ…
いや、4/7とかでテストしてたもので。
ありがとうございます。
とりあえずは、アーカイブを全件表示にしておきましょうか。
表示が多すぎてスマートさに欠けるから、ホントはイヤなんですけど…。

2007-04-29 01:16:39

で、続きです。
#回答4みたいなことしなくても、<$ArticleDateTag$>一発でいけるような気がしますが、ちょっとその問題より、先にページの問題を書きます。

月別アーカイブの</body>の下の行に次のJSを入れて下さい。

<script type="text/javascript">
<!--
tmp_hs=location.hash;
if(tmp_hs!=""){
 tmp_hs.replace("#","");
 if(!document.getElementsByName(tmp_hs)){
  location.href="<$CurrentUrl$>?p=<$NextPage$>"+"#"+tmp_hs;
 }
}
// -->
</script>
未確認というか、1ヶ月に10日も記事を書いたことないので、確認できないのですが、ページを読んだときにURLの#以降と同じ名前がなければ、次のページに飛ばしてやろうという感じです。失敗したら、ごめんなさい。。。

2007-04-29 14:27:04

ごめんなさい、修正します。

<script type="text/javascript">
<!--
tmp_hs=location.hash;
if(tmp_hs!=""){
 tmp_hs=tmp_hs.replace("#","");
 if(document.getElementsByName(tmp_hs).length==0){
  location.href="<$CurrentUrl$>?p=<$NextPage$>"+"#"+tmp_hs;
 }
}
// -->
</script>

#19.  chino666
2007-04-30 04:14:31

>★オニキス☆さん
試してみました。
スゴイですね。
1番イイのはダイレクトリンクなんですけど、ライブドアで提供しているカレンダーリンクの仕様が表示されてる中から、日付に飛ぶっていうものだから、限界がありますよね。
仕様変更してくれって上申しましたけど。

2007-04-30 14:47:55

>>#19
カレンダーの方のリンク先をJSで書き換えることも検討しましたが、結構面倒なんですよね・・・。で、回答4の話に戻るのですが、スクリプトを使わなくても、
<a name="<$ArticleDateTag$>"></a>
だけで済むのではないかと思います。もともと
<$ArticleDate$>
が書いてある付近の方がいいかもしれません。chino666さんと自分のだけ(自分のも古いテンプレが元になってます)を見て、livedoorタグを調べてませんでした。策士策に溺れるw失礼しました。

#21.  chino666
2007-05-03 01:42:55

>★オニキス☆さん
いろいろありがとうございました。
結局、現状ではカレンダーリンクの仕様自体がダメダメなので、カレンダーを外す事にしました。
HTMLまで書いてくださったのに、申し訳ないのですがm(_ _)m

2007-05-03 04:52:53

>>#21
んじゃ、カレンダーを書き換えますか?w
livedoorに苦情をいうよりは、ここで解決する方が早いと思いますよw

#23.  chino666
2007-05-10 03:12:05

>>#22★オニキス☆さん
返信遅くなってすいません。
カレンダーそのものを書き換える事も可能なんですか?
自分としては、クリックした日付の記事にダイレクトにリンクするのが理想なんですが…。
でも、これ以上迷惑をおかけするのも難ですし…。

2007-05-15 00:55:01

>>#23
試して下さるならカレンダー変更スクリプト書きますが、もういいと仰るなら、それでいいと思います。
#記事10個も書かないので試せないのですw

#25.  chino666
2007-05-15 02:21:16

>>#24★オニキス☆さん
書いて頂けるなら、喜んで試させて頂きます!

2007-05-21 14:34:53

あ、回答削除してまた書いたら、数同じなので気付かないですよね。というわけで、これはダミーコメントですw

#27.  chino666
2007-05-21 15:04:25

>#26
先ほど、新しいスクリプトを貼り付けてみました。
以前と同じ、月別アーカイブの</body>の後ろです。

試してみてなんですが、トップページからだとキレイに跳べるみたいなんですけど、一旦、月別アーカイブを開いた状態からカレンダーで跳ぼうとすると、表示外の日付に跳べないようです。

#28.  chino666
2007-05-21 15:40:01

>>#26
↑>>#27の感想は無視してください。
貼ったつもりが貼れてなくて、以前のスクリプトで動作してました。
で、改めて新しいスクリプトをセットしてみましたが、表示外の日付には全く跳べません。
現在の設定はアーカイブ表示10件ずつで、スクリプトの設定も10にしてあります。

2007-05-22 01:31:40

>>#28
失礼しました。数え方を間違えました。うまくいくといいなぁ~。。。

#30.  chino666
2007-05-22 04:29:22

>>#29
先ほど、修正版スクリプトをトップ・個別記事ページ・カテゴリ別・月別の</body>の後ろにそれぞれ貼り付けました。
で、動作なんですが、跳んでくれるのですが、ちょっとおかしいです。
5/1をクリックして5/15に跳んだりします。
4/7をクリックして4/21になったり。
設定がおかしいんでしょうかね?
スクリプトの最後の数字の設定なんですけど、アーカイブの表示件数と合わせればいいって事ですよね?
それとも、自分の認識、間違ってます?

2007-05-24 05:17:41

>>#30
私の間違いでした。回答8-9に改めました。
#これ、思ったより厄介ですね。。。

#32.  chino666
2007-05-24 20:04:51

>>#31
先ほど、新しいスクリプト貼ってテストしてみました。
動作ですが、指定された日付には跳んでくれますが、カレンダーを1クリックしただけでは動作してくれません。
日付が古くなるほど、クリック回数を増やさないと動いてくれないです…。
最初は時間がかかっているのかとも思ったのですが、どうやらクリック回数のようです。
ウチのブログで直接テストして頂いた方がわかると思います。
設定はアーカイブ10件表示で、cc_modify();はそのままにしてあります。

2007-05-24 22:41:23

>>#32
うちだと、微妙に1クリックでいけたりするのですが、何となく想像はつきます。
スクリプトの一番上の方の

var cc_mode=1;

var cc_mode=0;
にしてみて頂けますか?

#34.  chino666
2007-05-25 04:15:18

>>#33
var cc_mode=0;に設定したら1クリックで動作するようになりました!
ありがとうございますm(_ _)m
あと1つだけご相談なんですが、跳んだ後の表示のスクロール位置をずらす事は可能ですか?
記事の上側の日付表示が画面に入るようにスクロール位置を調整できないかと思いまして…。

トラックバック

トラックバックURL: