pub struct Settings {Show 24 fields
pub title: Option<String>,
pub description: Option<String>,
pub logo: Option<String>,
pub icon: Option<String>,
pub accent_color: Option<String>,
pub cover_image: Option<String>,
pub facebook: Option<String>,
pub twitter: Option<String>,
pub lang: Option<String>,
pub timezone: Option<String>,
pub codeinjection_head: Option<String>,
pub codeinjection_foot: Option<String>,
pub navigation: Vec<NavItem>,
pub secondary_navigation: Vec<NavItem>,
pub og_image: Option<String>,
pub og_title: Option<String>,
pub og_description: Option<String>,
pub twitter_image: Option<String>,
pub twitter_title: Option<String>,
pub twitter_description: Option<String>,
pub meta_title: Option<String>,
pub meta_description: Option<String>,
pub members_support_address: Option<String>,
pub url: Option<String>,
}Expand description
Site-wide settings returned by the Ghost Content API.
All fields are optional because the API may omit fields that have not been configured by the site owner.
§Example
use ghost_io_api::models::settings::Settings;
use serde_json::json;
let json = json!({
"title": "Ghost",
"description": "The professional publishing platform",
"logo": "https://example.com/logo.png",
"lang": "en",
"timezone": "Etc/UTC",
"navigation": [
{ "label": "Home", "url": "/" },
{ "label": "About", "url": "/about/" }
]
});
let settings: Settings = serde_json::from_value(json).unwrap();
assert_eq!(settings.title.as_deref(), Some("Ghost"));
assert_eq!(settings.navigation.len(), 2);Fields§
§title: Option<String>Site title.
description: Option<String>Site description / tagline.
logo: Option<String>Logo image URL.
icon: Option<String>Site icon URL (favicon).
accent_color: Option<String>Accent colour hex code (e.g. "#ff0095").
cover_image: Option<String>Cover image URL.
facebook: Option<String>Facebook page URL or username.
twitter: Option<String>Twitter handle (without @).
lang: Option<String>Site locale/language code, e.g. "en".
timezone: Option<String>Site timezone, e.g. "Etc/UTC".
codeinjection_head: Option<String>Code injected into <head> site-wide.
codeinjection_foot: Option<String>Code injected at the end of <body> site-wide.
Primary navigation items.
Secondary navigation items.
og_image: Option<String>OG image URL.
og_title: Option<String>OG title.
og_description: Option<String>OG description.
twitter_image: Option<String>Twitter card image URL.
twitter_title: Option<String>Twitter card title.
twitter_description: Option<String>Twitter card description.
meta_title: Option<String>Meta title override.
meta_description: Option<String>Meta description override.
members_support_address: Option<String>Members support email address.
url: Option<String>Canonical site URL.
Implementations§
Source§impl Settings
impl Settings
Sourcepub fn has_logo(&self) -> bool
pub fn has_logo(&self) -> bool
Returns true if the site has a logo configured.
§Example
use ghost_io_api::models::settings::Settings;
let s = Settings { logo: Some("https://example.com/logo.png".to_string()), ..Default::default() };
assert!(s.has_logo());
let empty = Settings::default();
assert!(!empty.has_logo());Returns the number of primary navigation items.
§Example
use ghost_io_api::models::settings::{Settings, NavItem};
let s = Settings {
navigation: vec![
NavItem { label: "Home".to_string(), url: "/".to_string() },
],
..Default::default()
};
assert_eq!(s.nav_count(), 1);