Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

[Решено] Можно ли находясь в отличном от header.php "модуле", добавить meta в <head>?


cha0s

Recommended Posts

Почему нужен такой заплёт, дело в том что для robots.txt файла(а точнее мета <meta name="robots" content="noindex">) должен добавляться выборочно в отмеченные для этого категории, и я не могу сделать в header.php запрет, так как не знаю в какой категории будет находится пользователь.

 

Задача в нужные категории добавить в шапку 

<meta name="robots" content="noindex">

в контроллере у меня уже определяются такие категории, и в шаблоне тоже, но черт побери а как это залепить в <head>? если шаблон(category.tpl) начинается 

<?php echo $header; ?>
...................

??????

Надіслати
Поділитися на інших сайтах


Конечно можно

system\library\document.php

    private $metas = array();
    public function addMeta($name, $content) {
        $this->metas[md5($name)] = array(
            'name'  => $name,
            'content'   => $content,
        );
    }
$this->document->addMeta('robots', 'noindex');
<?php foreach ($metas as $meta) { ?>
<meta name="<?php echo $meta['name']; ?>" content="<?php echo $meta['content']; ?>" />
<?php } ?>

Если нигде не ошибся... должно заработать

Надіслати
Поділитися на інших сайтах

спасиб за ответ, я совсем забыл что можно заюзать 

$('head').prepend('<meta name="robots" content="noindex">')

:) тогда когда if выполняет условия в category.tpl.

$this->document->addMeta('robots', 'noindex');

<?php foreach ($metas as $meta) { ?>
<meta name="<?php echo $meta['name']; ?>" content="<?php echo $meta['content']; ?>" />
<?php } ?>

первое понял что в саму document.php а остальное?:) foreach в header.tpl, а вызов ->addMeta делать в контроллере category.php? 

Надіслати
Поділитися на інших сайтах


1.

('head').prepend('<meta name="robots" content="noindex">')

 

можно, а смысл?

 

грубо... ПС не отрабатывает js

 

2. Скажу по секрету

ПС метатеги читает везде и в body конечно же ....

Если не верите, то посмотрите  рекомендации schema

 

3

 

первое понял что в саму document.php а остальное? :) foreach в header.tpl, а вызов ->addMeta делать в контроллере category.php?

Да.

Красиво, понятно, правильно

Заодно расширите функционал, и возможно будете  добавлять тогда любые теги

Надіслати
Поділитися на інших сайтах

ок сделаем так как надо знач :)

 

собственно шаблон header.tpl не знает что такое $metas, так как в контроллере header.php этого нету.

<?php foreach ($metas as $meta) { ?>
<meta name="<?php echo $meta['name']; ?>" content="<?php echo $meta['content']; ?>" />
<?php } ?>
Надіслати
Поділитися на інших сайтах


ах да

в контроллере header

$this->data['metas'] = $this->document->getMetas();   

Еще и метод дописать в document

    public function getMetas() {
        return $this->metas;
    }
  
Надіслати
Поділитися на інших сайтах

Окончательный вариант решения
system\library\document.php

    private $metas = array();
    public function addMeta($name, $content) {
        $this->metas[md5($name)] = array(
            'name'  => $name,
            'content'   => $content,
        );
    }
    public function getMetas() {
        return $this->metas;
    }

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

$this->document->addMeta('robots', 'noindex');

В контроллере header.php

$this->data['metas'] = $this->document->getMetas();

В header.tpl

<?php foreach ($metas as $meta) { ?>
<meta name="<?php echo $meta['name']; ?>" content="<?php echo $meta['content']; ?>" />
<?php } ?>
Змінено користувачем chukcha
Надіслати
Поділитися на інших сайтах

chukcha
Спасибо! Все получилось. Вот только, не появляется этот тег на странице возврата товара. Добавляю у файл: catalog/controller/account/return.php, но ничего не получается. Не подскажите, где его добавить?
 

Надіслати
Поділитися на інших сайтах


Как добавляете?

 

и где

 

return доступна после регистрации - для ПС эта страница недоступна - и смысла в добавлении тега нет.

 

Для незарегистрированных происходит редирект на account/login

поэтому тег нужно добавлять в контроллер login

Надіслати
Поділитися на інших сайтах

так

 

$this->document->addMeta('robots', 'noindex');

Нужно делать в методе insert

 

index.php?route=account/return/insert

 

 

Показывайте как вы это делаете...

Надіслати
Поділитися на інших сайтах

так

 

$this->document->addMeta('robots', 'noindex');

Нужно делать в методе insert

 

Спасибо большое, за подсказку - помогло.

 

PS. К сожалению, + не могу поставить, так как нет такой возможности у меня.

Надіслати
Поділитися на інших сайтах


  • 2 weeks later...
  • 1 month later...

То, что указывается в роботс, все равно индексируется некоторыми сканерами, в частности Googlebot. Возможно, даже появится в результатах поиска. Правила из этого файла воспринимаются им как рекомендации. А конструкция <meta name="robots" content="noindex"> для ботов работает как "кирпич" для транспорта.

 

chukcha, спасибо за подсказку, как раз нужен был подобный инструмент.

Надіслати
Поділитися на інших сайтах


А может хто более красивее решение набросать для определенных ИД категорий?

Сейчас у себя в контроллере сделал банальное

if ($category_info['category_id'] == 111) {
$this->document->addMeta('robots', 'noindex,nofollow');
}
Таких категорий у меня около 10 и мозгов хватает только на одно длинное условие типа "или" "или" "или" и т.д.
Надіслати
Поділитися на інших сайтах


Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.