-
+
+
{{{ this }}}
{{/each}} {{ htmlWebpackPlugin.options.content.translations.anketa }} diff --git a/src/pages/feedbacks-page/index.hbs b/src/pages/feedbacks-page/index.hbs index 892fbe3..e45cb57 100644 --- a/src/pages/feedbacks-page/index.hbs +++ b/src/pages/feedbacks-page/index.hbs @@ -15,7 +15,7 @@ {{ htmlWebpackPlugin.options.content.translations.feedback_button }} diff --git a/src/pages/index-page/index.hbs b/src/pages/index-page/index.hbs index 0b14ee3..a9f479b 100644 --- a/src/pages/index-page/index.hbs +++ b/src/pages/index-page/index.hbs @@ -29,7 +29,7 @@{{ htmlWebpackPlugin.options.content.translations.home.intro.courses.adults.title }} @@ -44,7 +44,7 @@
{{ htmlWebpackPlugin.options.content.translations.home.intro.courses.teens.title }}
@@ -123,12 +123,12 @@
{{ htmlWebpackPlugin.options.content.translations.feedback_button }}
{{ htmlWebpackPlugin.options.content.translations.adults.feedbacks.see_all }}
@@ -161,19 +161,19 @@
@@ -181,7 +181,7 @@
@@ -191,7 +191,7 @@
@@ -199,13 +199,13 @@
@@ -213,7 +213,7 @@
@@ -223,7 +223,7 @@
@@ -233,7 +233,7 @@
@@ -243,7 +243,7 @@
@@ -251,7 +251,7 @@
@@ -259,7 +259,7 @@
@@ -267,13 +267,13 @@
@@ -281,7 +281,7 @@
@@ -289,19 +289,19 @@
diff --git a/src/template-partials/meta.hbs b/src/template-partials/meta.hbs
index fb92c0a..228cdec 100644
--- a/src/template-partials/meta.hbs
+++ b/src/template-partials/meta.hbs
@@ -16,10 +16,10 @@
-
-
-
-
+
+
+
+
{{ pageTranslations.meta.title }}
{{#each htmlWebpackPlugin.options.content.alternativeLocales}}
diff --git a/utils/handlebars-helpers/headerMenuLink.js b/utils/handlebars-helpers/headerMenuLink.js
index e3ce161..5250196 100644
--- a/utils/handlebars-helpers/headerMenuLink.js
+++ b/utils/handlebars-helpers/headerMenuLink.js
@@ -3,12 +3,13 @@ const Handlebars = require('handlebars/runtime');
module.exports = function (
textTranslationKey,
url,
- { langPrefix, relativePagePath, translations }
+ { langPrefix, langPrefixPath, baseHref, relativePagePath, translations }
) {
const isActive = relativePagePath.replace(/\/$/, '') === url.replace(/#.+/, '');
const text = textTranslationKey.split('.').reduce((acc, val) => acc[val], translations);
+ const relativeUrl = url.replace(/^\//, '');
return new Handlebars.SafeString(
- `${text} `
+ `${text} `
);
};
diff --git a/webpack.config.js b/webpack.config.js
index e069e11..7431b12 100644
--- a/webpack.config.js
+++ b/webpack.config.js
@@ -311,6 +311,24 @@ const mediaMentionsConfig = [
},
];
const BASE_URL = 'https://programming.org.ua';
+const fixPaths = (obj, baseHref) => {
+ if (typeof obj === 'string') {
+ return obj
+ .replace(/href='\/([^']+)'/g, `href='${baseHref}$1'`)
+ .replace(/href="\/([^"]+)"/g, `href="${baseHref}$1"`);
+ } else if (Array.isArray(obj)) {
+ return obj.map((o) => fixPaths(o, baseHref));
+ } else if (obj && typeof obj === 'object') {
+ return Object.fromEntries(Object.entries(obj).map(([k, v]) => [k, fixPaths(v, baseHref)]));
+ }
+ return obj;
+};
+
+const getBaseHref = (filenamePrefix, relativePagePath) => {
+ const fullPath = (filenamePrefix + relativePagePath).replace(/^\//, '').replace(/\/$/, '');
+ const depth = fullPath ? fullPath.split('/').length : 0;
+ return depth === 0 ? './' : '../'.repeat(depth);
+};
module.exports = async (_, { mode = 'development' }) => ({
entry: {
@@ -332,6 +350,7 @@ module.exports = async (_, { mode = 'development' }) => ({
output: {
filename: '[name].js',
path: path.resolve(__dirname, 'dist'),
+ publicPath: 'auto',
clean: true,
},
plugins: [
@@ -393,19 +412,24 @@ module.exports = async (_, { mode = 'development' }) => ({
.filter((l) => l !== lang)
.map((l) => localesConfig[l]);
- const getCommonContent = (relativePagePath) => ({
- lang,
- translations,
- locale,
- langPrefix,
- relativePagePath,
- canonicalUrl: `${BASE_URL}${filenamePrefix}${relativePagePath}`,
- alternativeLocales: alternativeLocales.map(({ langPrefix, lang }) => ({
+ const getCommonContent = (relativePagePath) => {
+ const baseHref = getBaseHref(filenamePrefix, relativePagePath);
+ return {
lang,
- url: `${BASE_URL}${langPrefix}${relativePagePath}`,
- })),
- currentYear: new Date().getFullYear(),
- });
+ translations: fixPaths(translations, baseHref),
+ locale,
+ langPrefix,
+ baseHref,
+ langPrefixPath: langPrefix ? langPrefix.replace(/^\//, '') + '/' : '',
+ relativePagePath,
+ canonicalUrl: `${BASE_URL}${filenamePrefix}${relativePagePath}`,
+ alternativeLocales: alternativeLocales.map(({ langPrefix, lang }) => ({
+ lang,
+ url: `${BASE_URL}${langPrefix}${relativePagePath}`,
+ })),
+ currentYear: new Date().getFullYear(),
+ };
+ };
return [
...htmlWebpackPlugins,
@@ -181,7 +181,7 @@
@@ -191,7 +191,7 @@
@@ -199,13 +199,13 @@
@@ -213,7 +213,7 @@
@@ -223,7 +223,7 @@
@@ -233,7 +233,7 @@
@@ -243,7 +243,7 @@
@@ -251,7 +251,7 @@
@@ -259,7 +259,7 @@
@@ -267,13 +267,13 @@
@@ -281,7 +281,7 @@
@@ -289,19 +289,19 @@
diff --git a/src/template-partials/meta.hbs b/src/template-partials/meta.hbs
index fb92c0a..228cdec 100644
--- a/src/template-partials/meta.hbs
+++ b/src/template-partials/meta.hbs
@@ -16,10 +16,10 @@
-
-
-
-
+
+
+
+
@@ -191,7 +191,7 @@
@@ -223,7 +223,7 @@
@@ -233,7 +233,7 @@
@@ -243,7 +243,7 @@
@@ -251,7 +251,7 @@
@@ -259,7 +259,7 @@
@@ -289,19 +289,19 @@
+
+
+
+
+
+
+
+
+
+
+
+