add opengraph metadata to pages, via Markdown meta
This commit is contained in:
parent
b0795999fe
commit
c25fefa9e3
7
incorporealcms/lib.py
Normal file
7
incorporealcms/lib.py
Normal file
@ -0,0 +1,7 @@
|
||||
"""Miscellaneous helper functions and whatnot."""
|
||||
from flask import current_app as app
|
||||
|
||||
|
||||
def get_meta_str(key):
|
||||
"""Provide the page's metadata for the specified key, or '' if unset."""
|
||||
return " ".join(app.config['md'].Meta.get(key)) if app.config['md'].Meta.get(key) else ""
|
@ -8,6 +8,8 @@ from flask import current_app as app
|
||||
from flask import make_response, redirect, render_template, request
|
||||
from tzlocal import get_localzone
|
||||
|
||||
from incorporealcms.lib import get_meta_str
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
bp = Blueprint('pages', __name__, url_prefix='/')
|
||||
@ -34,8 +36,9 @@ def display_page(path):
|
||||
else:
|
||||
content = Markup(app.config['md'].convert(entry))
|
||||
logger.debug("file metadata: %s", app.config['md'].Meta)
|
||||
title = " ".join(app.config['md'].Meta.get('title')) if app.config['md'].Meta.get('title') else ""
|
||||
return render('base.html', title=title, content=content, navs=parent_navs,
|
||||
|
||||
return render('base.html', title=get_meta_str('title'), description=get_meta_str('description'),
|
||||
image=get_meta_str('image'), base_url=request.base_url, content=content, navs=parent_navs,
|
||||
mtime=mtime.strftime('%Y-%m-%d %H:%M:%S %Z'))
|
||||
|
||||
|
||||
|
@ -1,9 +1,15 @@
|
||||
<!doctype html>
|
||||
<title>{{ title }}{% if title %} - {% endif %}{{ config.TITLE_SUFFIX }}</title>
|
||||
{% if title %}<meta property="og:title" content="{{ title }}">{% endif %}
|
||||
{% if description %}<meta property="og:description" content="{{ description }}">{% endif %}
|
||||
{% if image %}<meta property="og:image" content="{{ image }}">{% endif %}
|
||||
<meta property="og:url" content="{{ base_url }}">
|
||||
<meta name="twitter:card" content="summary_large_image">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<link rel="stylesheet" href="{{ url_for('static', filename='css/style.css') }}">
|
||||
<link rel="stylesheet" href="{{ url_for('static', filename=user_style) }}">
|
||||
<link rel="icon" href="{{ url_for('static', filename='img/favicon.png') }}">
|
||||
|
||||
<section class="site-wrap">
|
||||
<section class="styles">
|
||||
<a href="?style=dark">[dark]</a>
|
||||
|
@ -30,6 +30,15 @@ def test_page_without_title_metadata(client):
|
||||
assert b'<h1>this page doesn\'t have a title!</h1>' in response.data
|
||||
|
||||
|
||||
def test_page_with_card_metadata(client):
|
||||
"""Test that a page with opengraph metadata."""
|
||||
response = client.get('/more-metadata')
|
||||
assert response.status_code == 200
|
||||
assert b'<meta property="og:title" content="title for the page">' in response.data
|
||||
assert b'<meta property="og:description" content="description of this page">' in response.data
|
||||
assert b'<meta property="og:image" content="http://buh.com/test.img">' in response.data
|
||||
|
||||
|
||||
def test_page_has_modified_timestamp(client):
|
||||
"""Test that pages have modified timestamps in them."""
|
||||
response = client.get('/')
|
||||
|
5
tests/instance/pages/more-metadata.md
Normal file
5
tests/instance/pages/more-metadata.md
Normal file
@ -0,0 +1,5 @@
|
||||
Title: title for the page
|
||||
Description: description of this page
|
||||
Image: http://buh.com/test.img
|
||||
|
||||
hello
|
Loading…
Reference in New Issue
Block a user