CMS Expression Engine Как динамически заполнять метатеги? - PullRequest
0 голосов
/ 12 июня 2018

Я пытаюсь добавить мета-теги для описания и ключевых слов на мой сайт механизма выражения.

Моя структура такова: у меня есть {top} фрагмент, который вызывается в каждом шаблоне

Внутри тега head у меня есть это

<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="description" content="{exp:channel:entries}{blog_seo_description}{/exp:channel:entries}">
<meta name="author" content="http://epicsoftware.com" >
<meta name="keywords"  content="{blog_seo_keywords}" />
{if segment_1 == ""}
<title>Epic Software Group, Inc.</title>
{if:else}
{exp:channel:entries channel="main|blog|projects" limit="1" disable="categories|category_fields|custom_fields|member_data|pagination"}
<title>Epic Software Group, Inc. - {title}</title>
{/exp:channel:entries}
{/if}

Когда я пишуописание для одной страницы, везде применяется одно и то же описание, я думаю, это потому, что верхний фрагмент не знает, откуда поступает информация.Кроме того, я не могу создать другое поле канала с тем же именем в другой группе полей канала

Мне нужно создать поле канала для каждого канала и показать информацию о записи канала ТО в метатеге.

Версия Expression Engine: 2.11.2

1 Ответ

0 голосов
/ 12 июня 2018

Вы можете сделать это намного проще, используя макеты: https://docs.expressionengine.com/v2/templates/layouts.html в основном, у вас будет шаблон-обертка, который содержит ваш базовый шаблон, и вы будете передавать содержимое из другого шаблона в этот шаблон.Таким образом, вам нужно всего лишь использовать тег channel: records один раз, чтобы установить все данные.это базовый шаблон, в котором я устанавливаю переменные:

{layout="_partials/_wrapper"}
{exp:channel:entries 
 channel="pages" 
 disable="categories|pagination|member_data|relationships"}
{layout:set name="extra_header_content"}<script src="/assets/js/my_extra_script.js">{/layout:set}
{layout:set name="browser_title"}{browser_title}{/layout:set}
{layout:set name="seo_description"}{seo_description}{/layout:set}
{layout:set name="page_title"}{page_title}{/layout:set}
{layout:set name="body_content"}{body_text}{/layout:set}
{/exp:channel:entries}

смотрите, как я встраиваю шаблон макета в первую строку.Мой шаблон оболочки выглядит так:

<!doctype html>
<html class="no-js" lang="nl" dir="ltr">
<head>
<meta charset="utf-8">
<meta http-equiv="x-ua-compatible" content="ie=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>{layout:browser_title}</title>
<meta name='description' content='{layout:seo_description}' />
<meta name="twitter:description" content="{layout:seo_description}" />
<meta property="og:description" content="{layout:seo_description}">
{layout:extra_header_content}
</head>
<body>
<h1>{layout:page_title}</h1>
{layout:body_content}
</body>
</html>

, так как вы находитесь в EE 2, вам нужно будет создать поля для каждого заголовка браузера в его собственной группе полей.это может быть утомительно, однако, если вы называете поля немного логически, вы можете использовать preload_replace https://docs.expressionengine.com/v2/templates/globals/preload_replacement.html, чтобы упростить ваши шаблоны:

скажем, у вас есть канал с названием news, вызовите ваше поле "news_browser_title"и для канала под названием pages создайте поле с именем" pages_browser_title "

Теперь в своем шаблоне вы можете использовать его следующим образом:

{layout="_partials/_wrapper"}
{preload_replace:channel="pages"}
{exp:channel:entries 
 channel="pages" 
 disable="categories|pagination|member_data|relationships"}
{layout:set name="extra_header_content"}<script src="/assets/js/my_extra_script.js">{/layout:set}
{layout:set name="browser_title"}{{channel}_browser_title}{/layout:set}
{layout:set name="seo_description"}{{channel}_seo_description}{/layout:set}
{layout:set name="page_title"}{{channel}_page_title}{/layout:set}
{layout:set name="body_content"}{{channel}_body_text}{/layout:set}
{/exp:channel:entries}

Обновление: Вы можетеПоместите шаблон оболочки в любую группу шаблонов, которые вам нравятся.У меня есть папка _partials, в которой хранятся все мои шаблоны, которые я встраиваю в другие шаблоны.Скажем, у вас есть настройка группы шаблонов, подобная этой:

_partials
    -_wrapper
    -_another_template
    -_some_other_template
blog
    -index
    -item
news
    -index
    -item

в каждом из ваших шаблонов в блоге или новостях, вы можете встроить один и тот же шаблон-оболочку с {layout = "_ partials / _wrapper"}, потому что он просто беретtemplate_group / template_name в качестве входных данных.

Если вам нужна дополнительная помощь, просто перейдите на https://expressionengine.stackexchange.com/ для получения более конкретных рекомендаций EE

...