Как автоматически показать заголовок записей / статей в строке заголовка браузера в ExpressionEngine 2? - PullRequest
3 голосов
/ 31 мая 2011

Как мне вывести заголовок записи в ExpressionEngine и отобразить ее в строке заголовка браузера?

Вот содержимое заголовка моей страницы:

<head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Test Site</title>
    <link rel="stylesheet" href="{stylesheet=site/site_css}" type="text/css" media="screen" />
</head>

Мне нужно, чтобы каждая страница отображала заголовок записи в строке заголовка моего браузера & mdash; как мне этого добиться?


Часть ОБНОВЛЕННОГО кода:

Вот как я это сделал:

{exp:channel:entries channel="news_articles" status="open|Featured Top Story|Top Story" limit="1" disable="member_data|trackbacks|pagination"}

{embed="includes/document_header" page_title=" | {title}"}

<body class="home">
<div id="layoutWrapper">
    {embed="includes/masthead_navigation"}
    <div id="content">
        <div id="article">
            <img src="{article_image}" alt="News Article Image" />
            <h4>{title}</h4>
            <h5><span class="by">By</span> {article_author}</h5>
            <p>{entry_date format="%M %d, %Y"} -- Updated {gmt_edit_date format="%M %d, %Y"}</p>                    
            {article_body}    
{/exp:channel:entries}
        </div>

Что вы думаете?

Ответы [ 4 ]

8 голосов
/ 23 октября 2012

Другим относительно новым способом решения этой проблемы является использование надстройки Stash и подхода с использованием шаблонов.Этот метод сводит вас к одной вставке и имеет дополнительное преимущество, заключающееся в предоставлении вам централизованного шаблона «обертки» - по одному для каждой основной разметки страницы.В приведенном ниже примере предполагается, что вы просто добавили настраиваемые поля для обработки любых метаданных, относящихся к записи, которые вы хотите вставить в заголовок.Имея в виду эту идею, вот упрощенное представление базовой структуры, которую я недавно применял:

В вашем шаблоне вы применяете теги EE, чтобы определить логику того, что отправляется во внутреннюю оболочку

{embed="embeds/.inside-wrapper"}

{exp:channel:entries channel="channel_name" limit="1" dynamic="yes" disable="whatever|you|can|live|without"}

{!-- ENTRY SEO META DATA --}
{exp:stash:set name="entry_seo_title" scope="site"}{cf_channelprefix_seo_title}{/exp:stash:set}
{exp:stash:set name="entry_seo_description" scope="site"}{cf_channelprefix_seo_description}{/exp:stash:set}
{exp:stash:set name="entry_seo_keywords" scope="site"}{cf_channelprefix_seo_keywords}{/exp:stash:set}

{!-- ENTRY/PAGE CONTENT --}
{exp:stash:set name="entry_body_content" parse_tags="yes" parse_conditionals="yes" scope="site"}
Your page content here
{/exp:stash:set}

{/exp:channel:entries}

И затем в вашем шаблоне-обертке, который в конечном итоге будет содержать весь ваш HTML-код, но может быть разбит на фрагменты.для чего-то вроде заголовка, поскольку он будет использоваться совместно с другими шаблонами-оболочками, например:

<html>
<head>
<title>{exp:stash:get name="entry_seo_title"}</title>
<meta name="description" content="{exp:stash:get name="entry_seo_description"}" />
<meta name="keywords" content="{exp:stash:get name="entry_seo_keywords"}" />
</head>

<body>

{exp:stash:get name="entry_body_content"}

</body>
</html>
6 голосов
/ 31 мая 2011

Если вы хотите показать только имя вашего сайта ExpressionEngine (как определено в CP Home> Admin> General Configuration), используйте глобальную переменную name name :

<title>{site_name}</title>

Если вы хотите отобразить только текущий заголовок записи с данного канала, используйте следующее:

<title>
    {exp:channel:entries channel="channel_name" limit="1" dynamic="yes"}
        {title}
    {/exp:weblog:entries}
</title>

Многие веб-разработчики будут использовать переменную Embed со встроенным шаблоном для передачи `{entry_title} в глобальный шаблон для вставки, что позволяет динамический заголовок страницы :

{embed="includes/header" title="{exp:channel:entries channel="{channel_name}"}{title}{/exp:channel:entries}"}

Если вы используете EE2, SEO Lite Module позаботится обо всей тяжелой работе за вас с помощью одной строки кода:

<html lang="en">
<head>
    <meta charset="utf-8" />
    {exp:seo_lite url_title="{url_title}"}
</head>

Другие решения включают плагин Low Title (EE1, EE2) .

2 голосов
/ 25 октября 2012

NSM Better Meta - более полный способ передачи метаданных канала в тег.

Для небольших сайтов я использую плагин String .

https://devot -ee.com / дополнения / строка

Очень простой синтаксис.

2 голосов
/ 31 мая 2011

Одно дополнение к методу вложения Райана (который, безусловно, является наиболее гибким методом): есть вероятность, что вы можете обернуть большую часть своей страницы в тег {exp:channel:entries} при просмотре отдельной записи, избегая дополнительного (и дорогого) канала: записи вызов. Так это будет выглядеть примерно так:

{exp:channel:entries channel="channel_name" limit="1"}
    {embed="includes/header" title="{title}"}
    <h1>{title}</h1>
    {page_content}
    {embed="includes/footer"}
    {if no_results}{redirect="404"}{/if}
{/exp:channel:entries}
...