--- title: Cosy Starter Guide top: 1 categories: - Hexo status: doing --- [πŸ‡¨πŸ‡³ δΈ­ζ–‡ζ–‡ζ‘£](https://mozzie.cn/2023/10/20/Cosy%20%E5%85%A5%E9%97%A8/) # Hexo Installation Installing a `Hexo` theme is straightforward. Simply copy the `Hexo-theme-cosy` directory to the `themes` directory, and then modify the theme configuration in `Hexo`'s `_config.yml`. ```yml # Locate the theme setting theme: hexo-theme-cosy ``` ## Acquiring Cosy - Visit [Cosy's code repository](https://github.com/17px/hexo-theme-cosy/tree/main) to stay updated on the latest theme developments. - Download `hexo-theme-cosy.zip` from the [releases page](https://github.com/17px/hexo-theme-cosy/releases). - Extract it into your site's `themes` directory. - Enable it in Hexo's `_config.yml`. # Hexo Configuration Adjust settings in `Hexo`'s `_config.yml`. ## Basic Configuration ```yml # Website title title: 17px blog # Sidebar header subtitle: "Mozzie" # HTML meta description for SEO description: "" # HTML meta keywords for SEO keywords: # Copyright text displaying author's name author: Mozzie # Set your website URL here url: https://mozzie.cn ``` ## Language Switch You can find different language files in `hex theme liner/languages`. If you want to switch languages, fill in the file name of `yml` in the `_config.yml` file ```yml language: en ``` ## Code Highlighting Disable Hexo's default highlight.js syntax highlighting. ```yml highlight: enable: false line_number: true auto_detect: false tab_replace: "" wrap: true hljs: false prismjs: enable: true preprocess: true line_number: true line_threshold: 0 tab_replace: "" ``` # Cosy Theme Configuration πŸ’‘ The following settings are based on the `_config.yml` under `hexo-theme-cosy`. ## Post Category Icons In sequence, set the `svg` icons. You can get a wide variety of icons at [xicon](https://www.xicons.org/). ```yml postCategoryIcons: - ... - ... - ... ``` ## Website Favicon - Supports `svg` - Supports `image URL`, e.g., `/img/favicon.png` ```yml favicon: '' ``` ## ICP Number πŸ‡¨πŸ‡³ 😁 If not required, can be directly deleted. ```yml icp: 苏ICP倇xxxxxxx号-x ``` ## Footer Text on Homepage πŸ‡¨πŸ‡³ 😁 If not required, can be directly deleted or set to `false`. ```yml motto: false ``` ## Post Copyright Statement Enabled by default. When `enable: false`, it is disabled by default. ```yml postCopyright: enable: true license: CC BY-NC-SA 4.0 license_url: https://creativecommons.org/licenses/by-nc-sa/4.0/ ``` ## Katex Mathematical Formulas You can configure the CDN yourself. ```yml katex: enable: true jsCdn: //cdn.jsdelivr.net/npm/katex@0.13.18/dist/katex.min.js cssCdn: //cdn.jsdelivr.net/npm/katex@0.13.18/dist/katex.min.css ``` ## Mermaid Flowcharts To draft flowchart syntax, use `{% mermaid %}` and `{% endmermaid %}` as wrappers. ```markdown {% mermaid %} graph TD; A --> B; A --> C; B --> D; C --> D; {% endmermaid %} ``` Corresponding configurations are as follows: ```yml mermaid: enable: true cdn: //cdn.jsdelivr.net/npm/mermaid@10.4.0/dist/mermaid.min.js ``` ## Valine Comments First, register as a `LeanCloud` international user and create a database. Please proceed in accordance with relevant regional regulations. ```yml valine: enable: true # 替捒 appId: appId # 替捒 appKey: appKey avatar: monsterid cdn: //unpkg.com/valine@latest/dist/Valine.min.js # 替捒 serverURLs: //xxxxxxxx.api.lncldglobal.com ``` # Algolia Search The blog comes with built-in local search, based on frontend development, which may have some issues. It's recommended to switch to `Algolia`. The free account has a total of 10,000 records and 100,000 operations per month. ## Register & Acquire Key 1. Create a new `Index`, for example, `hex-blog` 2. Copy and save: - Application ID - Search-Only API Key - Admin API Key - Usage API Key [API Keys](/img/algolia-api-keys.png) 3. Replace configurations Add the following to Hexo's `_config.yml` ```yml algolia: # Replace appId: Application ID # Replace apiKey: Usage API Key # Do not disclose, used for reporting, replace adminApiKey: Admin API Key # Replace SearchOnlyAPIKey: Search-Only API Key chunkSize: 5000 # Replace indexName: hex-blog fields: - content:strip - categories - date - permalink - slug - tags - title ``` ## Install hexo-algoliasearch This is a Hexo blog post index plugin that automates the submission of indexes to Algolia. > If you encounter any problems, you can read the [hexo-algoliasearch repository](https://www.npmjs.com/package/hexo-algoliasearch) for the latest instructions. Installation command: ```bash npm install hexo-algoliasearch --save ``` ## Using Algolia Before publishing each blog post, carry out index uploading operations. The usual commands are as follows: ```bash hexo clean hexo generate hexo algolia ``` # QWeather Widget πŸ‡¨πŸ‡³ Cosy mainly targets domestic users and integrates QWeather cards on the homepage. Register via [QWeather Developer Service](https://dev.qweather.com/docs/start/). After registering, fill in your `appKey` and `cityCode` in the configuration. ```yml weather: enable: true # Replace cityCode: cityCode appKey: appKey ``` You can find your city's `cityCode` in the official region list repository's `China-City-List-latest.csv`. # Front Matter In Hexo's Markdown files, a typical YAML-formatted `Front Matter` might look like this: ```markdown --- title: My Article Title categories: - javascript tags: - Programming - JavaScript --- ``` ## top To pin an article to the top, assign a numerical value to the `top` metadata. Articles with a specified `top` value will be marked with a πŸ“Œ icon in the category list. For example, if there are three articles: - Article 1 ```markdown --- title: Article 1 top: 0 categories: - javascript --- ``` - Article 2 ```markdown --- title: Article 2 top: 1 categories: - javascript --- ``` - Article 3 ```markdown --- title: Article 3 categories: - javascript --- ``` Then, under the `javascript` category, the sort order will be: `Article 1 > Article 2 > Article 3`. ## status This is used to differentiate the status of articles and can be quickly `filtered` using the category list. The Cosy theme comes with 4 built-in statuses: - done: Completed - doing: In Progress - todo: To Do - other: Abandoned For example: ```markdown --- title: Article 1 categories: - javascript status: done --- ```