沉冰浮水

沉冰浮水

做最终到的事,成为最终成为的人!
github
bilibili
mastodon
zhihu
douban

「Z-BlogPHP」データベース解析プラグインDIYデモ

自分がやることは感覚でやっているような感覚がする.jpg

データベース解析【基本依存】 - Z-Blog アプリセンター:

https://app.zblogcn.com/?id=20812

↑ このプラグインの機能の説明は「データを取り出して処理して再保存する」です。SQL で直接実装するのに適さない変更管理に使用できます。

プラグイン自体は操作対象データの反復読み取りをカプセル化していますが、具体的な変更は別途登録呼び出し関数を使用して実装する必要があります。

そのために、別のプラグインを作成しました。

データベース解析【機能カスタマイズ】 - Z-Blog アプリセンター:

https://app.zblogcn.com/?id=21305

↑ 本質的には何かを事前に書いて、具体的なユーザー要件を実現するためのカスタマイズ可能な /usr/xxx.php を使用する方法です。各ユーザー要件に対して独自のプラグインを作成およびメンテナンスする必要はありません。「このプラグインは有料で、要件に応じたデータ変更機能を実現できます」

実際には、以前に「特定の機能をプラグインに詰め込む」プラグインを作成しました。

何かを DIY - Z-Blog アプリセンター:

https://app.zblogcn.com/?id=1961

↑ 同様に「データベース解析【基本依存】」プラグインと組み合わせて、データベースの一括操作を実現できます。

  • /zb_users/plugin/diySth/usr/内にDiyForDataBaseHDという名前のフォルダを作成します。
  • 「管理ページ」を更新することで、内部ファイルが自動的に作成され、CSS、JS ファイルが同時に生成されます。
  • DiyForDataBaseHD.phpに以下の内容を記述し、「diySthプラグイン管理ページ」を更新して機能を読み込みます。
  • 「データベース解析【基本依存】」の管理ページに移動すると、追加した機能ボタンが表示されるはずです。
<?php
// ----
// DiyForDataBaseHD_Filter
Add_Filter_Plugin('Filter_Plugin_Admin_Header', 'DiyForDataBaseHD_AddHook');

// ----
// DiyForDataBaseHD_Function
function DiyForDataBaseHD_AddHook()
{
  global $zbp;
  $fnList = $zbp->Config('DataBaseHD')->fnList;
  $fnList[] = array("fn" => "DiyForDataBaseHD_UpAlias", "mod" => "Post", "name" => "別名の規範");
  $zbp->Config('DataBaseHD')->fnList = $fnList;
}

// 歴史的な理由から、一部の記事の別名の長さは 10 桁しかありません。フィルタリングして 1 桁追加します
function DiyForDataBaseHD_UpAlias(&$post, $csrfToken = "")
{
  $tpl = "<p style='color:-color-;'>-id- 丨 -url- 丨 -oldHash- 丨 -newHash- | -Save- | 「-edit-」「-del-」</p>\n";

  $arrData = array();
  $arrData["-color-"] = "-black-";
  $arrData["-id-"] = $post->ID;
  $arrData["-url-"] = DataBaseHD_DIY_a($post->Url, $post->Title);
  $arrData["-oldHash-"] = crc32($post->Content);

  // 編集または削除ボタン
  $arrData["-edit-"] = "<a class=\"style-visited\" title=\"{$post->Title}\" target=\"_blank\" href='../../../zb_system/admin/edit.php?act=ArticleEdt&id={$post->ID}'>編集</a>";
  // $arrData["-del-"] = "<a class=\"style-visited\" title=\"{$post->Title}\" target=\"_blank\" onclick=\"return window.confirm('「{$post->Title}」を削除しますか?');\" href=\"../../../zb_system/cmd.php?act=ArticleDel&id={$post->ID}&csrfToken={$csrfToken}\">削除</a>";

  // 主な機能コード ↓

  $intDefLen = strlen("20220806158") - 1;

  // 条件に合わない記事をスキップ
  if (strlen($post->Alias) !== $intDefLen || !is_numeric($post->Alias)) {
    return;
  }
  // 別名を更新
  $post->Alias = $post->Alias . "4";
  $bolRlt = $post->Save();
  // リンクを更新
  $arrData["-url-"] = DataBaseHD_DIY_a($post->Url, $post->Title);
  // 操作の結果を保存
  $arrData["-Save-"] = $bolRlt ? "保存成功" : "保存失敗";

  // 主な機能コード ↑

  echo strtr($tpl, $arrData);
}

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。