2023年12月 この範囲を時系列順で読む この範囲をファイルに出力する
迅速でわかりやすいご回答ありがとうございます。あっさりできましたw
その表記方法は考えておりませんでしたので助かりました。改めまして、ありがとうございます!
🍯Re:4153◆tableはさすがに、Markdown記法で書いて、Markdownを解釈して表示してくれるJavaScriptなりを読む方が早いのではないかな……という気もします。(^_^;) 将来的にはHTMLソースをそのまま書ける何らかの方法も用意しようと思っていますので、(気の長い話ですが)それをお待ち頂くか、どちらかでしょうかね。
なお、既に自由装飾記法で頑張ったCSSが存在する場合は、てがろぐのコメント記法 [!-- ~ --] を以下のように使うと、その部分だけ自動改行を排除できますので、多少は見た目がマシになるかもしれません。
1行目 [!--
--] 2行目 [!--
--] 3行目 [!--
--] 4行目
このように書くと、(本来なら)行末に自動追加される改行タグは(コメントアウトされた結果として)出力されませんので、編集領域内での見た目には改行されていても、実際の表示では改行されません。
🍯Re:4154◆基本的には [[CATEGORYNAMES]] をお使い頂けば良いのですが、この記法は、カテゴリ名をプレーンテキストで出力するわけではなく、装飾用のspan要素や、もしアイコンもあればimg要素も出力します。なので、そのままRSSフィードのcategory要素に書いてしまうと、XMLとして正しくなくなってしまってシンタックスエラーになる可能性があります。(たとえエラーにならなくても、category要素ではなく、category要素内に含まれるspan要素等を取得しないと、望みの文字列は取得できない気がします。)
その問題を解決するには、XML内で指定範囲をXMLだとは解釈させなくする <![CDATA[ ~ ]]> の書き方を併用すると良いです。
RSS用スキンで、カテゴリ名を出力させたい箇所に、以下のように書いて下さい。
<category><![CDATA[ [[CATEGORYNAMES]] ]]></category>
すると、カテゴリ名(と、それに付随するHTMLソース)がRSSのcategory要素に出力されます。
お使いのPHPからは、それらをまとめて文字列として取得した上で、必要な箇所を抜き出すなどしてお使いになれば良いのではないかと思います。
サイトにRSSフィードを設置して、てがろぐを更新したら最新記事の日付とタイトル、カテゴリ名が見えるようにPHPで記述しております。その際、RSSに<category>を置くとカテゴリIDが抽出されると思いますが、カテゴリIDではなくカテゴリ名を抽出させたいです。
そうする方法はありますでしょうか?
また、ある場合はrssのファイルにはどう記述したら良いでしょうか?
※ちなみに、【【CATEGORYNAMES】】では表示されませんでした。
この掲示板やカスタマイズ方法など検索しましたが該当する回答が見当たらず、投稿いたしました。
お忙しいところ恐縮ですが、ご対応いただけますと幸いです。急ぎではございません。
よろしくお願いいたします。
装飾に表組み(table要素)が追加されるとありがたいです。
CSSで工夫すれば不可能ではないのですが、投稿文の可読性がよろしくないことになってしまったので……
以下実例、
エスケープできることに気づき変換しなおしました。
リスト記法を使った例です
[F:table:[L:table:あ
あ
あ][L:table:い
い
い][L:table:う
う
う]]
自由装飾のspan要素だけで書いた例です
[F:tbout:[F:tbmid:[F:tbin:あ][F:tbin:い][F:tbin:う]][F:tbmid:[F:tbin:あ][F:tbin:い][F:tbin:う]][F:tbmid:[F:tbin:あ][F:tbin:い][F:tbin:う]]]
あるいは自由装飾でdiv要素が使えればこう書ける(FDは仮称です)のでまだ読めるコードになるのですが……
(現状でこう書くと行ごとに飛び飛びになります)
[F:tbout:
[F:tbmid:[F:tbin:あ][F:tbin:い][F:tbin:う]]
[F:tbmid:[F:tbin:あ][F:tbin:い][F:tbin:う]]
[F:tbmid:[F:tbin:あ][F:tbin:い][F:tbin:う]]
]
ご多用のところ申し訳ありませんが、実装していただけると幸いです。(至急というほどではありません)
よろしくお願いいたします。
🍵Re:4151◆β版のご試用をどうもありがとうございます! やはり無駄な出力はない方が望ましいですよね。外側スキンの場合ならともかく、内側スキンで表示分けをする場合には、1ページあたりの表示数が多いと無駄な出力の量も多くなってしまいますしね。CSSで非表示になっている領域内に画像の掲載コードがあるとき、Lightboxではその記述を拾ってしまって「ページ上には見えていない画像がLightboxの矢印ボタンで表示されてしまう」という問題に(画像一覧モードのスキンを作った後で)気付きまして、これはHTMLレベルで出力/非出力を分ける仕組みがないとダメだな……と思ったのでした。
IF文の条件指定は(全文検索機能と同様に)「完全一致」ではなく「部分一致」で解釈されますので、
「1件以上が表示される場合」に限定しようとして [[IF(hit):~~~ のように書いたとしても、 「1件もヒットしなかった場合」の nohit にも同時に該当してしまうために意味がありません。^^;
なので、もし「1件以上が表示される場合」に限定したい場合は、[[IF(hit -nohit):~~~ のように、マイナス記号を付けて「-nohit」として除外する条件を同時に加える必要があります。
……という話を、一応ヘルプドキュメントにも加えておきました。
➡そのときの表示状況に応じてページ出力を、IF文で切り替える方法
🍘Re:4147◆ご報告をどうもありがとうございます! 無事に $howtogetpath を書き換えなくても動作しましたか! 良かったです。たぶん、あらゆるサーバで書き換えは不要になったのではないかと思っているのですが、実際に試してみないことにはハッキリしませんからね。(^_^;) ありがとうございます。(╹◡╹)ノ
#報告
🆕 Ver 4.1.4βの更新点(概要):
《▼新機能》
●スキン内に IF文を使って、状況に応じてHTML自体の出力を切り替えられる機能(専用記法 [[IF(条件): ~ :IF]] )を追加
●ランダム表示モードでも、表示対象を絞り込める機能を追加
●ユーザ紹介文を出力する記法 [[USERINTRO]] を追加
《▼仕様改善》
●これまで $howtogetpath の値を変更しないと正常動作しなかったサーバでも、(おそらく)書き換えなくても動作するように改善。
《▼スキン更新》
●画像一覧モードで使うための新スキン「skin-picts」内でIF文による条件分岐を使うことで、余計なHTMLを出力しないよう改善。
《▼不具合修正》
❎サーバのエラーログに「"my" variable $glr masks earlier declaration in same scope at tegalog.cgi line 1831」というアラートが大量に記録される問題を解消。
詳しい使い方などは、上記の開発進捗状況報告ページの記事をご覧下さい。
🍘SNSでのアナウンス:
Mastodon(Pawoo)
Bluesky
Twitter:
(ツイート埋め込み処理中...)Twitterで見る
2023年11月 この範囲を時系列順で読む この範囲をファイルに出力する
公式配布スキンでは、画像一覧モード用スキンでIF文の記法を使うようにしました。
これによって、(CSSを使わずに)HTMLの段階で表示/非表示が切り替わりますので、非表示にしてある画像がLightboxに拾われてしまう問題も出なくなります。
元々は ?mode=random のパラメータだけを使って全投稿からランダムに1件が表示される仕様ですが、その他の(表示対象を限定する用途の)あらゆるパラメータを併用して表示対象を限定できるようになったハズです。
▼従来から可能なランダム表示:
- ?mode=random 全投稿からランダム表示(対象限定なし)
- ?mode=random&skin=skin-twipink 全投稿からランダム表示(表示スキンは skin-twipink)
▼今回から可能な対象限定ランダム表示の例:
- ?cat=tsubo&mode=random カテゴリ「つぼやき」に限定して1件をランダム表示
- ?cat=hachi,diary&mode=random カテゴリ「つぶやき」と「つぼはち」に限定して1件をランダム表示
- ?tag=要望&mode=random ハッシュタグ「要望」の付いた投稿から1件をランダム表示
- ?date=2023&mode=random 2023年の投稿の中から1件をランダム表示
- ?userid=tomoyo&mode=random ユーザID「tomoyo」の投稿から1件をランダム表示
- ?posts=3920,3907,3872,3676,1786,880&mode=random 投稿No.3920、3907、3872、3676、1786、880の中から1件をランダム表示
- ?q=桜餅&mode=random 検索語「桜餅」が含まれる投稿から1件をランダム表示
- ?q=%5BPICT:&mode=random 画像の含まれる投稿から1件をランダム表示
まず表示対象を絞り込んでから、そのURLの末尾に &mode=random を加えると良いと思います。だいたい何にでも加えられると思います。検索語は複数使えますし、AND・OR・NOT検索も使えます。
配布用のスキンに直接記述したい場合は [[RANDOM:URL]]&表示限定用パラメータ のように、[[RANDOM:URL]] の記法の直後に「&」記号を使って表示限定用パラメータを連結すると良いかもしれません。その場合、設置場所がどこなのか知らなくても正しいURLが出力されます。(もっとも、デフォルト設定では相対パスで出力されますから、自力で相対パスで書いた場合と結果は同じですが。)
なお、「下書き」投稿は表示対象になりません。「下げる」投稿は、表示対象が限定されていない場合には表示対象になりません。表示対象が限定されている場合に表示対象になるかどうかは設定次第です。
てがろぐには自動バックアップ機能があり、バックアップ用ディレクトリに日々バックアップファイルが蓄積されていきますが、この仕様は下記の[⭕正]の方です。
⭕正: 1ファイルの中に「過去の全投稿データ」が含まれる。
❌誤: 1ファイルの中には1日分の投稿データしか含まれない。
バックアップファイルは、1つ1つのファイル内に「過去の全投稿データ」が含まれています。もし過去500日間に渡って投稿してきたなら、その『500日分の全データ』が1ファイルの中に入っていますし、過去1000日間投稿しているなら『1000日分全部のデータ』が入っています。収録数に上限はありません。
1日単位でバックアップ先ファイルが切り替わって蓄積されていく仕組みなので誤解されがちかも知れないのですが、「1ファイルに1日分しか含まれない」わけではありません。
デフォルト設定では30ファイルまで蓄積して超過分は自動削除されますが、それは『過去30回(日)分の改変バージョンを保存している』というだけです。バックアップファイルを複数個維持する仕様なのは、「昔の編集状態に戻したい」と思ったときに戻せるようにしたり、「3日前に消してしまった過去投稿をやっぱり復活させたい」と思ったときにバックアップから復元できるようにするためです。
- 今日保存されたバックアップの中身 ➡ No.1~最新投稿の直前(または最後の編集の直前状態)
- 昨日保存されたバックアップの中身 ➡ No.1~昨日の最終投稿
- 一昨日保存されたバックアップの中身 ➡ No.1~一昨日の最終投稿
- : : :
……というように、どのバックアップファイルにも「最古の投稿」から「バックアップされた時点」までの全投稿が含まれています。
1日単位でバックアップ先ファイルが切り替わる仕組みなのは、もし新規投稿や編集のたびに毎回ファイルを切り替えていく方式だと、1日に30回以上編集した時点で「昨日の時点に戻したい」と思っても無理になってしまうからです。それを防ぐために、1日単位でバックアップ先ファイルを新規生成する仕様になっています。
そのため、1日に何万回再編集しても昨日までのデータは常に残っているわけですから、仮にゲストユーザに悪戯で1万回投稿されたり、過去の投稿を誤って消してしまったりしても、昨日の時点のデータには絶対に戻せるわけです。
自動バックアップファイル数の設定値の上限を366にしていますが(※その「366」という上限値も誤解を招きやすいかもしれませんね^^;)、それは「さすがに過去366バージョンもの履歴(=1年分の編集履歴)を残していれば充分だろう」と考えてのことであって、投稿データそのものは5年分でも10年分でも1ファイルの中に全部残っています。
もちろん、Web上に置いているバックアップファイル自体をうっかり(ディレクトリごと)消してしまう、というような操作ミスはあり得ますから、適宜ローカルにファイルをダウンロードしておくことをお勧め致します。
畳む
🍘Re:4132◆なるほど litxxx でも何も書き換えなくて大丈夫でしたか。情報をありがとうございます! 助かります。
🍘Re:4133◆ハイスピードプランの情報もどうもありがとうございます!
収容サーバ番号で解説を分けるのは正確ではなさそうなので、とりあえず「ロリポップ①」・「ロリポップ➋」とだけ分ける形に変えてみました。(^_^;) ①でダメだったら➋を試してくれ、という感じで……。
ただ、次に公開するバージョンからは、(たぶん)どこのサーバでも $howtogetpath の値は書き換えなくて動作するようになるハズ……だと思っているのですけどもね。ちょいとコードを見直しまして。
4129です。お返事ありがとうございます。実装されるのを楽しみにお待ちしています!
ランダム表示、現時点でもスキンは設定できるのですね。試してみます。教えてくださりありがとうございました🙏
4094 こちらの投稿見ました。ロリポップでハイスピードプラン、サーバー番号spdxxxでてがろぐ利用している者です。
私の方では以下のように設定したところ、無事利用できているのでご報告させていただきます。
(上記投稿から時間が経っているのでちょっと今更感ありますが……)
シバン:#! /usr/local/bin/perl
※xamppで確認したいためデフォルトのシバンでの確認はしておりません。
77行目 my $howtogetpath:2
パーミッション:
fumycts.pl 604
psif.cgi 600
skin-cover.html 604
skin-onelog.html 604
tegalog.cgi 700
tegalog.css 604
tegalog.ini 600
tegalog.xml 600
上記のような感じです。
my $howtogetpathを1にすると500エラーで管理者画面に移りませんでした。
参考になれば幸いです・・・!
ロリポップのライトプランlitxxxのサーバー使用者ですが、tegalog.cgiの1行目と77行目は書き換えなくてもVer 4.1.3まで全て動いてます。サーバー番号は00xの1桁台です。
🍘Re:4129◆そういえばユーザ紹介文だけは出力する方法がないままでしたね。かなり初期の頃から「いつかは対応しよう」と思っていたのですけども、需要が見えなかったのか(思い出すこともなく^^;)放置したままでした。たぶん次のバージョンで実装します。◆ランダム選択対象の絞り込みは、風呂の中で良さげなアルゴリズムを思いついた気がしますので実装できそうな気がしています。まだ試していませんが、思いついた内容に問題がなければそう遠くないうちに実装できると思います。なお、スキンの適用は今でも可能です。例えば、[[RANDOM:URL]]&skin=skin-twitter のような感じで、スキンの指定オプションを加えれば、そのスキンで表示できます。