No.5185, No.5184, No.5183, No.5182, No.5181, No.5180, No.5179[7件]

javascriptで内側スキンに日時を表示するspan要素に相対時間表示([[DATE:A]])を入れて、
span要素にdata属性でdata-publishedなどの中に[[DATE:Y/M/D W h:m]]などを与える
現在時刻をnew Dateで作った後data-publishedに与えた日時と比較して24時間(60*60*24=86400秒)以上だったら
style属性にdisplay:noneを付与する(または最初にnone属性を与えておいてblockに変更する)とかでも実装できそうかなと思いました
実際のコードは書いてないのであくまでも考えてみただけですが…… 1日前(水 16:05:58)

🧊Re:5181◆なるほど、新たな視点をどうもありがとうございます! 投稿からの経過時間に応じて表示を変えるという発想はありませんでした。今のところ経過時間に応じて表示/非表示が切り替わるような機能はないのですが、[[DATE:~]]記法に『投稿からの経過秒数』を得られるようなオプションを加えてみましょうかね? そうすると、JavaScriptを使って簡単に経過時間が判別できるので、JavaScriptで表示/非表示を切り替えられるでしょうし。
《補足》現状でもJavaScriptで実現できなくはない話
なお、現状でも、JavaScriptで const $pastTimeStr = "[[DATE:A]]"; のように書くと、変数 $pastTimeStr には「5秒前」や「10分前」や「3時間前」や「2日前」のような文字列が入ります。
事前に、てがろぐ管理画面の[設定]→[ページの表示]→【経過時間(相対時間)の表記】で、『1時間以上 24 時間未満なら「時間」で表示』のように、24時間を超えると「日」単位で表示されるように設定を変更しておけば、24時間が経過した時点で「2日前」という表示になります。
とすると、この変数$pastTimeStrの中に「秒」か「分」か「時間」という漢字が含まれていなければ、投稿から24時間以上が経過していると判断できます。
これを使って、(例えば相対時間表記の部分に <span id="pastTime[[POSTID]]">[[DATE:(A)]]</span> のような感じで、その要素を特定できる何らかのid名を割り振っておけば)JavaScriptで表示/非表示を切り替えることはできそうに思います。
事前に、てがろぐ管理画面の[設定]→[ページの表示]→【経過時間(相対時間)の表記】で、『1時間以上 24 時間未満なら「時間」で表示』のように、24時間を超えると「日」単位で表示されるように設定を変更しておけば、24時間が経過した時点で「2日前」という表示になります。
とすると、この変数$pastTimeStrの中に「秒」か「分」か「時間」という漢字が含まれていなければ、投稿から24時間以上が経過していると判断できます。
これを使って、(例えば相対時間表記の部分に <span id="pastTime[[POSTID]]">[[DATE:(A)]]</span> のような感じで、その要素を特定できる何らかのid名を割り振っておけば)JavaScriptで表示/非表示を切り替えることはできそうに思います。
(追記) ➡もっと良い方法を No.5185 さんが提示して下さいましたので、それを実現するソースを No.5186 に書きましたからそちらをご覧下さい。
🧊Re:5182◆そうですね。Skebサイトに久しぶりにアクセスしたとき、ほんの数秒間くらいだけ『繰り返し表示される場合はCookieを有効にしてください』のような表示が出ますよね。なので、Skebのページをまともに閲覧するには、Cookieを使ったセッション確認的なものが必須なんだと思います。(つまり、Cookieを受け入れる仕組みを持ったユーザエージェント以外でアクセスすると中身が見えない。)
Skebは、利用規約でプログラムによる自動アクセスを禁止していますが、単に禁止と言うだけではなくて、技術的にもアクセスを拒否する仕組みを用意しているということでしょうね。
そもそも、人間がブラウザでアクセスしても、Skebのページって「JavaScript前提」になっているんですよね。HTMLソースを表示させても、Skebページ内に見えている日本語文字が出てきません。^^;
なので、Skebは「Cookieを受け入れた上で、JavaScriptが実行できる環境」(要するに一般的なブラウザ)からのアクセスしか受け付けない実装になっているのではないかと思います。
……とはいえ、Twitter Cardっぽい情報の欠片みたいなのはHTMLソースに含まれていますから、Skeb側が認めたSNS等からOGPを参照された場合には正しく情報を返すような仕組みが(Skeb側に)用意されているのかもしれません。
任意のWebサイトからSkebのOGPを読んでリンクカードを作るのは、たぶん諦めるほかないのではないかな……と思います。(もしかしたらSkeb側が何かAPIを用意しているかもしれないのですが、軽く探してみた限りでは見つけられませんでした。もし何か公式情報があるようでしたら教えて下さい。)
1日前(水 13:51:05) 回答/返信

経過時間の表記変更は設定の項目でできる事は分かったのですが、一定時間後に非表示にするなどの方法が探してもなかなか見つからなくこちらで質問させて頂きました。
お忙しいところ恐れ入りますが何卒よろしくお願い致します。 3日前(火 01:49:19)

また、余談とのことでしたが、具体的な対応策を詳細にご教示いただき、ありがとうございました。何度も読み返させていただきました。
少し前に、同じく手作業で1000件ほど、SNSの投稿データをてがろぐに移動させたことがあったものですから、300件くらいなら…と、感覚が麻痺してしまっていたような状態でした。
でも、やはり何かしら効率化は【できる】し、恐らく自分の勉強のために、【やるべき】でもあるのだなと猛省いたしました。ご想像のとおり、プログラミング言語やAIとは縁遠い人生でしたので、これを機にもう少し、勉強してみようと思います。
この度は色々とお時間を割いていただき、誠にありがとうございました。 4日前(日 11:13:55)

🥪Re:5178◆おっしゃるとおり、30MBというのは「サーバへのアップロード時の連続通信を切る閾値」でしかなく「扱えるサイズの上限」というわけではありません。なので、FTP等の別手段でUPした場合は、30MBを超えていても(てがろぐ側が扱う上では)問題はありません。その画像を [PICT:~]で表示させても問題ありませんし、画像管理画面に出しても問題はありません。
仕様上の上限があるのは、●CGI側の処理がサーバに負荷を掛けすぎていると解釈されないようにするため、●誤って巨大なファイルをUPしてしまわないため、●未知の不具合で莫大なファイルがUPされてしまうようなケースがあった場合の被害を軽減するため、などが理由ですが、その閾値を30MBに設定しているのは「まあ、それくらいを超えるファイルをUPする需要はないだろう」という予想からでしかありません。(^_^;) よほどそれでは不足するようなら見直しも考えます。(プログラムの起動時点で上限を固定しておく必要があるので、設定画面等でユーザが自由に変更できるようには作れないので。) 4日前(日 10:37:37) 回答/返信