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

<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.

管理ページトップ→カスタマイズ/管理 で
アーカイブの表示件数 を 30件ずつ から 全て表示
に変更。 設定を保存する をクリック 再構築
カレンダーの日付はアーカイブのデータから持って来る為、こうしておかないと拾えないようです。
1ヶ月の記事が30件以下なら問題無いのですが・・・。
解決には至りませんでしたが、丁寧に調べてくださってありがとうございました。
9.
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>
スクリプトは、カレンダーのある全ページ(通常は、トップ・個別・{月別/カテゴリ}アーカイブ)に貼り付けて下さい。
よろしくお願いします。
コメント(33)
>松井 カツオさん
1ヶ月の記事数が既に30を超えてるんですけど…
こうなるとダメなんですかね?
そうなんですよ。月刊アーカイブから見ると重くなっちゃいますが・・・。
一度、全て表示にして、日付をクリックしてみて下さい。
>松井 カツオさん
アーカイブの表示件数を全件表示にして、カレンダーの日付をクリックしてみましたが、改善されませんorz
ホントですね・・・。申し訳ないです。再構築は 全てのページ でやりました? 月別アーカイブ でもお願いします。
>松井 カツオさん
もちろん、再構築は全てのページで指定してますけど、ダメですね。
月別アーカイブを単独で再構築してみましたが、やはりダメでした。
ライブドアブログの仕様でしょうか?
http://knowledge.livedoor.com/3378#answer2
過去の回答を探したところライブドアに問い合わせた方もいたようです。
やはりアーカイブの表示件数を全て表示との回答だったようです。
もう少し調べてみますね・・・。
色々デザインを変更してみたところ、このデザインのみ、その日の記事に移動しませんでした。
アドレスはちゃんと
archives/2007-04.html#20070422
とかになってるのに・・・。
申し訳ないっす!!
>松井 カツオさん
このデザインのみですかorz
HTMLがおかしいんですかね?
違うデザインのカレンダー部分と取り替えたりしてみたのですが・・・直りません。自分の知識では限界です・・・。
>松井 カツオさん
ご丁寧にありがとうございました。
ライブドアのオフィシャルのヘルプに問い合わせを送ってみました。
オフィシャルに聞いたほうがいい内容のような気がしてきたので。
回答頂いてありがとうございました。
いえいえ、お役にたてず申し訳ありません。解決するといいですね。
>>4
ミスしました。
document.write(date2name(<$ArticleDate$>));
↓
document.write(date2name("<$ArticleDate$>"));
です。失礼しました。
>★オニキス☆さん
回答ありがとうございます。
しかし、指定された通りの事を実行してみても、改善されませんでしたorz
>>#13
えぇ!?改善されてるように見えますが・・・。キャッシュが効いてたりしませんでしょうか?私が見ると例えば、4月19日をクリックすると、ちゃんとその記事のところに飛びますが・・・。
月別アーカイブの2ページ目以降に記事がある場合については、今のところ対応していないので、そこはご了承下さい。でも、これも改善できそうな気はしますので、週末に考えてみます。
>★オニキス☆さん
あっ、本当だ…
いや、4/7とかでテストしてたもので。
ありがとうございます。
とりあえずは、アーカイブを全件表示にしておきましょうか。
表示が多すぎてスマートさに欠けるから、ホントはイヤなんですけど…。
で、続きです。
#回答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の#以降と同じ名前がなければ、次のページに飛ばしてやろうという感じです。失敗したら、ごめんなさい。。。ごめんなさい、修正します。
<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>
>★オニキス☆さん
試してみました。
スゴイですね。
1番イイのはダイレクトリンクなんですけど、ライブドアで提供しているカレンダーリンクの仕様が表示されてる中から、日付に飛ぶっていうものだから、限界がありますよね。
仕様変更してくれって上申しましたけど。
>>#19
カレンダーの方のリンク先をJSで書き換えることも検討しましたが、結構面倒なんですよね・・・。で、回答4の話に戻るのですが、スクリプトを使わなくても、
<a name="<$ArticleDateTag$>"></a>
だけで済むのではないかと思います。もともと
<$ArticleDate$>
が書いてある付近の方がいいかもしれません。chino666さんと自分のだけ(自分のも古いテンプレが元になってます)を見て、livedoorタグを調べてませんでした。策士策に溺れるw失礼しました。
>★オニキス☆さん
いろいろありがとうございました。
結局、現状ではカレンダーリンクの仕様自体がダメダメなので、カレンダーを外す事にしました。
HTMLまで書いてくださったのに、申し訳ないのですがm(_ _)m
>>#22★オニキス☆さん
返信遅くなってすいません。
カレンダーそのものを書き換える事も可能なんですか?
自分としては、クリックした日付の記事にダイレクトにリンクするのが理想なんですが…。
でも、これ以上迷惑をおかけするのも難ですし…。
あ、回答削除してまた書いたら、数同じなので気付かないですよね。というわけで、これはダミーコメントですw
>#26
先ほど、新しいスクリプトを貼り付けてみました。
以前と同じ、月別アーカイブの</body>の後ろです。
試してみてなんですが、トップページからだとキレイに跳べるみたいなんですけど、一旦、月別アーカイブを開いた状態からカレンダーで跳ぼうとすると、表示外の日付に跳べないようです。
>>#26
↑>>#27の感想は無視してください。
貼ったつもりが貼れてなくて、以前のスクリプトで動作してました。
で、改めて新しいスクリプトをセットしてみましたが、表示外の日付には全く跳べません。
現在の設定はアーカイブ表示10件ずつで、スクリプトの設定も10にしてあります。
>>#29
先ほど、修正版スクリプトをトップ・個別記事ページ・カテゴリ別・月別の</body>の後ろにそれぞれ貼り付けました。
で、動作なんですが、跳んでくれるのですが、ちょっとおかしいです。
5/1をクリックして5/15に跳んだりします。
4/7をクリックして4/21になったり。
設定がおかしいんでしょうかね?
スクリプトの最後の数字の設定なんですけど、アーカイブの表示件数と合わせればいいって事ですよね?
それとも、自分の認識、間違ってます?
>>#31
先ほど、新しいスクリプト貼ってテストしてみました。
動作ですが、指定された日付には跳んでくれますが、カレンダーを1クリックしただけでは動作してくれません。
日付が古くなるほど、クリック回数を増やさないと動いてくれないです…。
最初は時間がかかっているのかとも思ったのですが、どうやらクリック回数のようです。
ウチのブログで直接テストして頂いた方がわかると思います。
設定はアーカイブ10件表示で、cc_modify();はそのままにしてあります。
>>#32
うちだと、微妙に1クリックでいけたりするのですが、何となく想像はつきます。
スクリプトの一番上の方の
var cc_mode=1;を
var cc_mode=0;にしてみて頂けますか?


