CakePHP: добавление тега meta nofollow в макет из представления - PullRequest
4 голосов
/ 03 января 2012

Я хочу иметь возможность добавить метатег из представления (или контроллера, если возможно) в CakePHP

У меня есть страница типа /mycontroller/myview, но когда к ней обращаются фильтры вроде:

/mycontroller/myview/page:2/max_price:500

Затем я хочу добавить мета-теги no follow.

В классе HtmlHelper есть метод meta .

Когда я называю это так:

$this->Html->meta('keywords', 'test test test', array('inline'=>false));

Создает метатег, подобный этому:

<meta name="keywords" content="test test test" />

Однако, когда я называю это так:

$this->Html->meta('robots', 'noindex, nofollow', array('inline'=>false));

Я бы, конечно, ожидал и хотел бы , чтобы создать это:

<meta name="robots" content="noindex, nofollow" />

Вместо этого я получаю это:

<link href="http://www.example.com/mycontroller/noindex, nofollow" type="application/rss+xml" rel="alternate" title="robots" />

Что я делаю не так?

Ответы [ 3 ]

8 голосов
/ 03 января 2012

Со страницы документации (последняя строка)

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

echo $this->Html->meta(array('name' => 'robots', 'content' => 'noindex'));

В вашем случае:

echo $this->Html->meta(array('name' => 'robots', 'content' => 'noindex, nofollow'),null,array('inline'=>false));

Надеюсь, это поможет

3 голосов
/ 03 января 2012

Вот измененная версия кода с этой страницы . Я проверил это, и оно работает:

<?php
echo $this->Html->meta(
    array('name' => 'robots', 'content' => 'noindex, nofollow'),
    null,
    array('inline'=>false));
?>

Очевидно, что вы можете написать это в одну строку - я просто разбил его на части для облегчения просмотра здесь.

1 голос
/ 03 января 2012

Вы можете установить переменные из вида в макет точно так же, как вы установили из контроллера для просмотра, используя $this->set(), у меня будет такая установка:

// View
if($condition) {
    $this->set('nofollow', true);
}

// Layout (in <head>)
if(isset($nofollow) && $nofollow) {
    echo $this->Html->meta(array('name' => 'robots', 'content' => 'noindex, nofollow'));

}

Теперь у вас есть короткий1 строка для добавления директивы nofollow из любого файла представления.

...