Как добавить meta tag в CMS Drupal

7 ноября, 2017

Считаю Drupal крайне непонятной системой управления контентом. Мне до сих пор не совсем понятно под какие задачи делали эту систему. А видел я их этих систем управления контентом несколько десятков. И не то чтобы просто видел, а под капотом видел.

И вот сейчас я делаю некоторый набор примитивных правок на Drupal. Они решаемые. И я их почти все уже решил. Но то, как они решаются, описывается вот этим одним комментарием:

В MODX я бы сделал это за 10 минут. В Drupal 7 мне не может помочь даже тот, кто этот сайт делал!

И да, в MODx я бы сделал то, что делаю уже три часа, за 10 минут. Нет, я все же поясню. Переопределять мета-теги в шаблонах, вот таким образом, это все равно что удалять гланды через анус. А Drupal он весь в этом. Обычно такие вещи выносятся в шаблоны, в которые поступают данные из контролеров. Но тут что-то пошло не так.

function YOUR_THEME_NAME_preprocess_html(&$vars) {

  $relap = array(
    '#type' => 'html_tag',
    '#tag' => 'meta',
    '#attributes' => array(
      'property' => 'relap:article',
      'content' => 'false',
    )
  );

  drupal_add_html_head($relap, 'relap');
}

Если нет времени разбираться то есть более простые решения, в категорию, ой смотрите еще один костыль. Например. Вот так можно забрать meta description из переменной $head. Просто парсится обычная строка по регэкспам и конечно получается нечитаемый код.

$start_str = '<meta name="description" content="';
$stop_str = '" />';
$rule = "!".$start_str."(.*?)".$stop_str."!si";
preg_match($rule,$head,$res);
$description = $res['1'];

По мотивам: https://qna.habr.com/q/281909

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *