个人站用的是一个小众的开源博客 solo,对开源的大大表达下敬意,这里主要记录个人站优化过程中踩的坑
网站 favicon 设置
/** 经大佬提示,在后台管理 -> 工具 -> 偏好设定 -> 参数设置里面可以直接设置,是我失误了 */~~~~
刚部署完的 solo 用的是官方自带的 favicon,然后官网的教程没有任何关于这块的资料,由于这个博客小众,网站资料更少,好在项目是开源,于是下了源码去死磕。
<link rel="icon" type="image/png" href="${faviconURL}"/> <link rel="apple-touch-icon" href="${faviconURL}"> <link rel="shortcut icon" type="image/x-icon" href="${faviconURL}">
从公共头源码我们可以发现 favicon 源自 faviconURL 参数,于是带去工程里面搜索
/** * Key of favicon URL. */ public static final String FAVICON_URL = "faviconURL"; /** * Default favicon URL. */ public static final String DEFAULT_FAVICON_URL = "https://static.b3log.org/images/brand/solo-32.png"; /** * Key of favicon URL. */ public static final String ID_C_FAVICON_URL = "faviconURL"; public void fillFaviconURL(final Map<String, Object> dataModel, final JSONObject preference) { //如果preference不存在取默认favicon地址 if (null == preference) { dataModel.put(Common.FAVICON_URL, Option.DefaultPreference.DEFAULT_FAVICON_URL); } else { //如果存在取preference里面的faviconURL配置 dataModel.put(Common.FAVICON_URL, preference.optString(Option.ID_C_FAVICON_URL)); } }
到这里我们就很清楚了,只要找到这个 preference 在哪配置就可以了
final JSONObject preference = optionQueryService.getPreference();
public JSONObject getPreference() { try { return getOptions(Option.CATEGORY_C_PREFERENCE); } catch (final Exception e) { LOGGER.log(Level.ERROR, "Gets preference failed", e); return null; } }
public JSONObject getOptions(final String category) { try { return optionRepository.getOptions(category); } catch (final Exception e) { return null; } }
扒到这里提一嘴,solo 用的不是我们常用的 java 框架,而是作者自己造的一个轮子框架 latke,OptionRepository 类是对数据操作的一个类,也就是 preference 这个 json 串是从数据库里面取的,表名是 option,然后我们去数据库找,果然在 b3_solo_option 表里面找到了 faviconURL,然后修改我们自己的 favicon 地址,重启 solo 容器,成功生效。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于