沉冰浮水

沉冰浮水

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

【メモ】Z-BlogPHPでランダムな画像APIを使用してサムネイルを設定する

概要#

Z-BlogPHP でランダム画像 API を使用してサムネイルを作成します。

コード#

/**
 * 画像の抽出または設定
 *
 * @param object $article
 * @param string $type   返り値の形式を決定するために使用
 * @return string imgurl | <img />
 */
function demoAPP_Thumbnail($article, $type = 'imgurl')
{

  $matches = null;
  preg_match_all("/<img[^>]*src=\"([^\"]+)\"[^>]*>/i", $article->Content, $matches);
  if (isset($matches[1]) && count($matches[1]) > 0) {
    $imgurl = $matches[1][0];
  } else {
    $imgurl = demoAPP_setRndImg($article->ID);
    // $imgurl = demoAPP_setRndImgNetwork(); // 現在の要件ではこの方法は適切ではありません。サービスプロバイダに制限される可能性があります
  }
  // デフォルトでは画像のURLを返す
  if ($type == 'imgurl') {
    return $imgurl;
  }
  // 他の値を渡すと <img /> タグを返す
  $tplImg = '<img src="imgurl" alt="title">';
  return strtr($tplImg, array('imgurl' => $imgurl, 'title' => $article->Title));
}

/**
 * 直接参照できるランダム画像API
 *
 * @param string $rndhash 画像の重複を防ぐためのパラメータを渡す
 * @return string
 */
function demoAPP_setRndImg($rndhash)
{
  return "https://picsum.photos/350/260?random={$rndhash}";
}

/**
 * API自体はJSONを返すため、画像のURLを追加で抽出する必要があります
 *
 * @return string
 */
function demoAPP_setRndImgNetwork()
{
  global $zbp;
  // 失敗時のデフォルト画像
  $imgurl = "{$zbp->host}zb_users/theme/demoAPP/var/images/no-image.jpg";
  // APIのURL
  $url = "https://api.vvhan.com/api/acgimg?type=json";
  $http = Network::Create();
  $http->open('GET', $url);
  // $http->setTimeOuts(10, 10, 0, 0);
  $http->send();
  // 取得したコンテンツの解析
  if ($http->status == 200 && $json = json_decode($http->responseText, true)) {
    // 実際のAPIに基づいて返すフィールド
    $imgurl = $json['imgurl'];
  }
  return $imgurl;
}

テンプレート内での呼び出し:

<a href="{$article.Url}" title="{$article.Title}">
{demoAPP_Thumbnail($article,1)}
</a>

推奨#

Z-BlogPHP 1.7 のサムネイルに関する記録_コンピューターネットワーク_沈氷浮水:

https://www.wdssmq.com/post/20210224481.html

[開発者] 正規表現に関するスレッド - 開発者センター - ZBlogger 技術交流センター:

https://bbs.zblogcn.com/thread-101713.html

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