diff --git a/packages/frontend/views/templates/page/blog.eta b/packages/frontend/views/templates/page/blog.eta
index 896425e..61670ee 100644
--- a/packages/frontend/views/templates/page/blog.eta
+++ b/packages/frontend/views/templates/page/blog.eta
@@ -1,11 +1,12 @@
-{% layout('layout') %}
+{{# layout('layout') }}
-{{# const posts = await it.injectStore('post') }}
+{{# const store = await it.injectStore('post') }}
+{{# const posts = await store.find() }}
-{{# if posts.data.length > 0 }}
+{{# if (posts.data && posts.data.length > 0) { }}
{{# posts.data.forEach((post) => { }}
{{ post.title }}
- {{ marked.parse(page.data.content) }}
+ {{! it.marked.parse(post.teaser_content) }}
{{# }) }}
{{# } else { }}
diff --git a/packages/frontend/views/templates/page/default.eta b/packages/frontend/views/templates/page/default.eta
index 92f7600..9d81c35 100644
--- a/packages/frontend/views/templates/page/default.eta
+++ b/packages/frontend/views/templates/page/default.eta
@@ -4,7 +4,7 @@
- {{! it.parseMarkdown(it.page.data.content) }}
+ {{! it.marked.parse(it.page.data.content) }}
diff --git a/packages/server/_bootstrap.js b/packages/server/_bootstrap.js
index 1c258a2..66fa930 100644
--- a/packages/server/_bootstrap.js
+++ b/packages/server/_bootstrap.js
@@ -17,14 +17,26 @@ const server = fastify()
import * as Eta from 'eta'
import view from '@fastify/view'
+import { asset, templateClass, isHome, injectStore } from './helpers/eta.js'
+import { marked } from 'marked'
server.register(view, {
engine: {
eta: Eta
-
},
+
root: path.join(path.resolve(), '/../frontend/views'),
extname: '.eta',
+
+ // adding function to templates
+ defaultContext: {
+ asset: asset,
+ templateClass: templateClass,
+ isHome: isHome,
+ injectStore: injectStore,
+ marked: marked
+ },
+
options: {
tags: [ '{{', '}}' ],
includeViewExtension: true,
@@ -46,24 +58,12 @@ server.register(view, {
import SettingsStore from './stores/settings.js'
-import templateClass from './eta/templateClass.js'
-import isHome from './eta/isHome.js'
-import injectStore from './eta/injectStore.js'
-import parseMarkdown from './eta/parseMarkdown.js'
-
-
// getting options from directus add to all views
server.addHook('preHandler', async function (request, response) {
const settingsStore = new SettingsStore()
const settings = await settingsStore.find()
- response.locals = {
- settings: settings,
- templateClass: templateClass,
- isHome: isHome,
- injectStore: injectStore,
- parseMarkdown: parseMarkdown
- }
+ response.locals.settings = settings
})
// check url for paged
diff --git a/packages/server/eta/injectStore.js b/packages/server/eta/injectStore.js
deleted file mode 100644
index b462afc..0000000
--- a/packages/server/eta/injectStore.js
+++ /dev/null
@@ -1,14 +0,0 @@
-import slugify from 'slugify'
-
-/**
- *
- *
- *
- */
-
-export default async function injectStore(name) {
- const StoreClass = await import('./../stores/' + name + '.js')
- const store = new StoreClass.default()
-
- return await store.find()
-}
\ No newline at end of file
diff --git a/packages/server/eta/isHome.js b/packages/server/eta/isHome.js
deleted file mode 100644
index 95429f5..0000000
--- a/packages/server/eta/isHome.js
+++ /dev/null
@@ -1,18 +0,0 @@
-import slugify from 'slugify'
-
-/**
- *
- *
- *
- */
-
-export default function isHome(entity) {
-
- let result = false
-
- if (entity.data && entity.data.permalink && entity.data.permalink === "/") {
- result = true
- }
-
- return result
-}
\ No newline at end of file
diff --git a/packages/server/eta/parseMarkdown.js b/packages/server/eta/parseMarkdown.js
deleted file mode 100644
index 8c8d59e..0000000
--- a/packages/server/eta/parseMarkdown.js
+++ /dev/null
@@ -1,18 +0,0 @@
-import { marked } from 'marked'
-
-/**
- *
- *
- *
- */
-
-export default function parseMarkdown(value) {
-
- let result = ''
-
- if (value) {
- result = marked.parse(value)
- }
-
- return result
-}
\ No newline at end of file
diff --git a/packages/server/eta/templateClass.js b/packages/server/eta/templateClass.js
deleted file mode 100644
index 6cdc9c6..0000000
--- a/packages/server/eta/templateClass.js
+++ /dev/null
@@ -1,15 +0,0 @@
-import slugify from 'slugify'
-
-/**
- *
- *
- *
- */
-
-export default function templateClass(entity, prefix = 'page') {
- if (entity.data && entity.data.template) {
- prefix += '-' + entity.data.template
- }
-
- return prefix
-}
\ No newline at end of file
diff --git a/packages/server/helpers/eta.js b/packages/server/helpers/eta.js
new file mode 100644
index 0000000..f7443a2
--- /dev/null
+++ b/packages/server/helpers/eta.js
@@ -0,0 +1,101 @@
+import slugify from 'slugify'
+import { marked } from 'marked'
+import * as fs from 'fs'
+
+/**
+ * etaHelpers
+ *
+ * collection for helpers to extend eta
+ *
+ *
+ */
+
+/**
+ * asset -
+ *
+ * @param {String} path
+ * @param {String} [prefix='/public']
+ *
+ */
+function asset(path, prefix = '/public')
+{
+ // getting basePath
+ const basePath = path
+
+ // path to mix-manifest
+ file = basePath + 'mix-manifest.json';
+
+ if (!fs.existsSync(file)) {
+ //const manifest = file_get_contents($file);
+ //const files = json_decode(manifest, true);
+
+ //if (files[prefix + path]) {
+ // path = str_replace(prefix, '', files[prefix + path]);
+ //}
+ }
+
+ return path
+}
+
+/**
+ * templateClass - parse template name to css-classname,
+ * use prefix, default is "page"
+ *
+ * @param {Object} entity
+ * @param {String} [prefix='page']
+ * @return {String}
+ *
+ */
+function templateClass(entity, prefix = 'page') {
+ if (entity.data && entity.data.template) {
+ prefix += '-' + entity.data.template
+ }
+
+ return prefix
+}
+
+
+/**
+ * isHome - check if entity is home,
+ * checks for permalink
+ *
+ * @param {Object} entity
+ * @return {Boolean}
+ *
+ */
+function isHome(entity) {
+
+ let result = false
+
+ if (entity.data && entity.data.permalink && entity.data.permalink === "/") {
+ result = true
+ }
+
+ return result
+}
+
+
+/**
+ * injectStore
+ *
+ *
+ * @param {String} name
+ * @return {Object}
+ *
+ */
+async function injectStore(name) {
+
+ const path = './../stores/' + name + '.js'
+
+ // if file
+ //if (!fs.existsSync(path)) {
+ //throw new Error(name + ' not exists!')
+ //}
+
+ const StoreClass = await import(path)
+ const store = new StoreClass.default()
+
+ return store
+}
+
+export { asset, templateClass, isHome, injectStore }
\ No newline at end of file
diff --git a/packages/server/stores/page.js b/packages/server/stores/page.js
index 21d0769..4fb43fb 100644
--- a/packages/server/stores/page.js
+++ b/packages/server/stores/page.js
@@ -32,6 +32,7 @@ class PageStore extends DirectusAbstractStore {
'title',
'status',
'permalink',
+ 'template',
'meta',
'content'
],