Вы здесь

Как поменять текст в мета-теге description?

0

Подскажите каким хуком можно добраться до текста в [node:summary]? В идеале бы еще ему фильтры применить.

Может быть можно использовать [node:body:?] (это свойство может быть расширено добавлением: value, summary, format)? Но что-то я не соображу как одновременно указать summary и format.

Для вывода текста в description используется модуль Metatag.

Версия Drupal: 
7.x
Категория: 
Field API
Связанные проекты: 
Metatag
Вопрос задан 24.01.2016 - 11:57

Ответы

1
Ответ дан 24.01.2016 - 12:27
Аватар пользователя shu
shu
178

Короче как всегда все не просто. Может кому пригодится сниппет:

<?php
/**
 * Implements hook_token_info().
 */
function token_node_summary_token_info()
{
    $summary_filter['summary-filter'] = [
        'name' => t('Node summary with filter'),
        'description' => t('Node summary with filter.'),
    ];
    return [
        'tokens' => [
            'node' => $summary_filter,
        ],
    ];
}

/**
 * Implements hook_tokens().
 */
function token_node_summary_tokens($type, $tokens, array $data = [], array $options = [])
{
    $replacements = [];
    if ($type == 'node') {
        foreach ($tokens as $name => $original) {
            switch ($name) {
                case 'summary-filter':
                    if (isset($data['node']->body)) {
                        if (!empty($data['node']->body[LANGUAGE_NONE][0]['summary'])) {
                            $body = $data['node']->body[LANGUAGE_NONE][0]['summary'];
                        } else if (!empty($data['node']->body[LANGUAGE_NONE][0]['value'])) {
                            $body = $data['node']->body[LANGUAGE_NONE][0]['value'];
                        } else {
                            $body = $data['node']->title;
                        }
                        $body = check_markup($body, 'meta_description');
                        $body = html_entity_decode($body, ENT_QUOTES, 'UTF-8');
                        $body = truncate_utf8($body, 300, true, true);
                        $replacements[$original] = $body;
                    } else {
                        $replacements[$original] = '';
                    }
                    break;
            }
        }
    }
    return $replacements;
}
Комментарий оставлен 26.01.2016 - 20:38