Instruction

Copy and paste (override) the following code where Loader::element('header_required'); is.

[Page Title] - [1st Level's Page Title] | [Site Name]

Page Title Format:

  • Page Title - Site name
  • Page Title | Page Title of 1st page - Site name

Since concrete5.7.5.7, the site name supports multilingual. Register your site name in Engish at [Dashboard] - [System & Setting] - [Basics] - [Site Name]. And then, use [Dashboard] - [System and Setting] - [Multilingual] - [Translation Interface] to enter the multilingual site name.

Page Description & Page Keyword

You can define your page description and page keyword programmatically. My sample code will try to use the programmatically defined $pageDescrition and $pageMetaKeywords, but if the admin already set Meta Description or Collection Descriton, then concrete5 will try to use those first.

Sample

<?php
    $metaTitle = $c->getCollectionAttributeValue('meta_title');
    if ($metaTitle) $pageTitle = $metaTitle;

    if (!$pageTitle)
    {
        $siteName = h(\Config::get('concrete.site'));
        $collentionName = $c->getCollectionName();

        $isRoot = null;
        $trail = $nh->getTrailToCollection($c);
        if (is_array($trail) && count($trail) > 1) {
            $count = count($trail);
            array_splice($trail, $count - 1);
            $deptC = array_pop($trail);
            $deptName = h($deptC->getCollectionName());
        } else {
            $isRoot = true;
        }           
        if ($isRoot) {
            $pageTitle = $collentionName . ' - ' . $siteName;
        } else {
            $pageTitle = $collentionName . ' | ' . $deptName . ' - ' . $siteName;
        }
    }

    $thisPageDescription = $c->getAttribute('meta_description');
    if (!$thisPageDescription) $thisPageDescription = $c->getCollectionDescription();
    if ($thisPageDescription) $pageDescription = $thisPageDescription;

    $thisPageMetaKeywords = $c->getAttribute('meta_keywords');
    if ($thisPageMetaKeywords) $pageMetaKeywords = $thisPageMetaKeywords;

    Loader::element('header_required',
        array(
            'pageTitle' => $pageTitle,
            'pageDescription' => isset($pageDescription) ? $pageDescription : '',
            'pageMetaKeywords' => isset($pageMetaKeywords) ? $pageMetaKeywords : '',
        )
    );

[Page Title] - [Previous level's Page Title] | [Sitename]

Page Title Format:

  • Page Title - Site name
  • Page Title | Page Title of Parent page - Site name

The rest is the same as first one.

Sample Code

<?php
    $metaTitle = $c->getCollectionAttributeValue('meta_title');
    if ($metaTitle) $pageTitle = $metaTitle;

    if (!$pageTitle)
    {
        $siteName = h(\Config::get('concrete.site'));
        $collentionName = $c->getCollectionName();

        $isRoot = null;
        $trail = $nh->getTrailToCollection($c);
        if (is_array($trail) && count($trail) > 1) {
            $deptC = array_shift($trail);
            $deptName = h($deptC->getCollectionName());
        } else {
            $isRoot = true;
        }           
        if ($isRoot) {
            $pageTitle = $collentionName . ' - ' . $siteName;
        } else {
            $pageTitle = $collentionName . ' | ' . $deptName . ' - ' . $siteName;
        }
    }

    $thisPageDescription = $c->getAttribute('meta_description');
    if (!$thisPageDescription) $thisPageDescription = $c->getCollectionDescription();
    if ($thisPageDescription) $pageDescription = $thisPageDescription;

    $thisPageMetaKeywords = $c->getAttribute('meta_keywords');
     if ($thisPageMetaKeywords) $pageMetaKeywords = $thisPageMetaKeywords;

    Loader::element('header_required',
        array(
            'pageTitle' => $pageTitle,
            'pageDescription' => isset($pageDescription) ? $pageDescription : '',
            'pageMetaKeywords' => isset($pageMetaKeywords) ? $pageMetaKeywords : '',
        )
    );

If you have more detail and specific way of doing it. I can help you as well.

Loading Conversation