找到/themes/system/website.html
添加获取logo按钮
将
网站截图: |
|
改为
网站截图: |
<输入名称=“web_pic” type=“text” class=“ipt” id=“web_pic” size=“50” maxlength=“100” value=“{#$row.web_pic#}” />
|
接着找到/system
新建文件get_logo.php
将下面代码加入里面
<?php
// 设置响应头
header('Content-Type: application/json');
接收URL参数
$url = isset($_POST['url']) ?trim($_POST['url']) : '';
if (empty($url)) {
echo json_encode(['status' => 'error', 'message' => '网站URL不能为空']);
// 确保URL格式正确
if (!preg_match('/^(https?://)/', $url)) {
$url = 'http://' . $url;
}
try {
// 创建保存目录
$upload_dir = 'uploads/logos/';
if (!file_exists($upload_dir)) {
mkdir($upload_dir, 0777, true);
}
生成唯一文件名(使用域名作为基础)
$domain = parse_url($url, PHP_URL_HOST);
$filename = preg_replace('/[^a-zA-Z0-9]/', '_', $domain) .'_' .时间();
// 设置HTTP请求上下文
$context = stream_context_create([
'http' => [
'timeout' => 10,
'user_agent' => 'Mozilla/5.0 (Windows NT 10.0;Win64 的;x64) AppleWebKit/537.36(KHTML,如 Gecko) Chrome/91.0.4472.124 Safari/537.36'
]
]);
获取网站HTML内容
$html = @file_get_contents($url, false, $context);
if ($html === false) {
echo json_encode(['status' => 'error', 'message' => '无法访问网站']);
存储可能的徽标 URL
$logo_candidates = [];
1.首先尝试查找SVG格式的logo (最高优先级)
$svg_patterns = [
// SVG图片标签
'/
]+src=[“']([^”']*(?::) logo|brand)[^“']*.svg)[”'][^>]*>/i',
// SVG内联对象
'/
注意:如没有自己创建/system/uploads/logos目录请手动添加,权限775