个人站用的是一个小众的开源博客 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 容器,成功生效。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于