Форум русской поддержки Joomla!® CMS
03.12.2016, 23:50:56 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: [1]   Вниз
  Добавить закладку  |  Печать  
Автор

Почему <head> остаётся тем же??

 (Прочитано 1987 раз)
0 Пользователей и 1 Гость смотрят эту тему.
borro
Живу я здесь
******

Репутация: +21/-0
Offline Offline

Пол: Мужской
Сообщений: 1150


желаю вам счастья


« : 20.12.2013, 13:16:31 »

Добрый день.

Решаю проблему с дублями. Для этого по совету размещаю в index.php шаблона следующий код:
Код:
...
<head>
<?php if(preg_match('#\?|^/orders|^/search|/notify$|^/cart|^/manufacturer|^/user|^/2-uncategorised|^/component/|askquestion|vasha-korzina#', $_SERVER['REQUEST_URI'])){ ?>
<meta name="robots" content="noindex, nofollow" />
<?php } ?>
<jdoc:include type="head" />
...
Т.е., например, если текущая ссылка страницы вида сайт/component/..., то в секции head страницы должна появиться строка <meta name="robots" content="noindex, nofollow" />
На практике этого не происходит.

Кто-нибудь знает, почему?

На всякий случай привожу начало index.php
Показать текстовый блок
Записан
rudakoff
Захожу иногда
**

Репутация: +1/-0
Offline Offline

Пол: Мужской
Сообщений: 20



« Ответ #1 : 20.12.2013, 13:21:30 »

Поправьте регулярку:
Код:
<?php
if(preg_match('#/(orders|search|notify|cart|manufacturer|user|2\-uncategorised|component|askquestion|vasha-korzina)#', $_SERVER['REQUEST_URI'])){ ?>
На счет notify не совсем понял, Вам нужно, чтобы она строго в конце ссылки шла или просто в ссылке встречалась, начиная с символа "/" ?
Записан
borro
Живу я здесь
******

Репутация: +21/-0
Offline Offline

Пол: Мужской
Сообщений: 1150


желаю вам счастья


« Ответ #2 : 20.12.2013, 13:30:57 »

Поправьте регулярку:
Код:
<?php
if(preg_match('#/(orders|search|notify|cart|manufacturer|user|2\-uncategorised|component|askquestion|vasha-korzina)#', $_SERVER['REQUEST_URI'])){ ?>
На счет notify не совсем понял, Вам нужно, чтобы она строго в конце ссылки шла или просто в ссылке встречалась, начиная с символа "/" ?
строго в конце. сейчас попробую. благодарю
Записан
rudakoff
Захожу иногда
**

Репутация: +1/-0
Offline Offline

Пол: Мужской
Сообщений: 20



« Ответ #3 : 20.12.2013, 13:36:31 »

..тогда в самой регулярке:
Код:
.. |notify$|
а для 2\-uncategorised обратный слеш можно убрать. Это я перестраховался.
Записан
borro
Живу я здесь
******

Репутация: +21/-0
Offline Offline

Пол: Мужской
Сообщений: 1150


желаю вам счастья


« Ответ #4 : 20.12.2013, 14:06:28 »

..тогда в самой регулярке:
Код:
.. |notify$|
а для 2\-uncategorised обратный слеш можно убрать. Это я перестраховался.
и ваше выражение не сработало. что за напасть?.. Azn
Записан
rudakoff
Захожу иногда
**

Репутация: +1/-0
Offline Offline

Пол: Мужской
Сообщений: 20



« Ответ #5 : 20.12.2013, 14:08:16 »

Покажите значение $_SERVER['REQUEST_URI'] или адрес ссылки дайте.
Записан
borro
Живу я здесь
******

Репутация: +21/-0
Offline Offline

Пол: Мужской
Сообщений: 1150


желаю вам счастья


« Ответ #6 : 20.12.2013, 14:27:01 »

Покажите значение $_SERVER['REQUEST_URI'] или адрес ссылки дайте.
вот пример "/component/virtuemart/tekhnika/model-vertolet-mi-38-2-detail?Itemid=0" И вроде согласно проверке выражение работает
« Последнее редактирование: 20.12.2013, 14:32:11 от borro » Записан
rudakoff
Захожу иногда
**

Репутация: +1/-0
Offline Offline

Пол: Мужской
Сообщений: 20



« Ответ #7 : 20.12.2013, 14:33:44 »

Попробуйте выполнить так:
Код:
if(preg_match("/\/(orders|search|notify|cart|manufacturer|user|2-uncategorised|component|askquestion|vasha-korzina)/si", $_SERVER['REQUEST_URI']))
Если у Вас на сервере стоит utf-8, то в конце первого стринга указывайте /sui

А что view-source страницы в этом месте содержит?
Записан
Fedor Vlasenko
Профи
********

Репутация: +696/-5
Offline Offline

Пол: Мужской
Сообщений: 3820


Все начинается с Value


« Ответ #8 : 20.12.2013, 14:54:43 »

Какой то не ахти подход. Зачем проверять адресную строку регуляркой да еще все значения.
По ходу лучше проверять в массиве $_REQUEST есть ли нужная строка при совпадении выводить
Код
$this->addCustomTag('<meta name="robots" content="noindex, nofollow" />');
break;
Записан
borro
Живу я здесь
******

Репутация: +21/-0
Offline Offline

Пол: Мужской
Сообщений: 1150


желаю вам счастья


« Ответ #9 : 20.12.2013, 15:02:55 »

вы будете смеяться наверно Azn если написать в <meta name="robots" content="noindex, nofollow" /> robots c большой R, то строка появляется с любым регвыражением Azn Это такой строгий синтаксис? Или какой нибудь скрипт метрики/аналитики ищет и удаляет если robots с маленькой "r"? Azn
« Последнее редактирование: 20.12.2013, 15:06:35 от borro » Записан
Fedor Vlasenko
Профи
********

Репутация: +696/-5
Offline Offline

Пол: Мужской
Сообщений: 3820


Все начинается с Value


« Ответ #10 : 21.12.2013, 04:13:00 »

Код
<?php
$dataArr = array(
                   'orders',
                   'com_search',
                   'notify',
                   'cart',
                   'com_users'
               );
foreach ($dataArr as $value){
   if(in_array($value, $_REQUEST)){
       $this->addCustomTag('<meta name="robots" content="noindex, nofollow" />');
       break;
   }
}
//var_dump($_REQUEST);
?>
код можно вставить в конец шаблона
И переделанный ваш вариант
Код
<?php
$dataArr = array(
                   'orders',
                   'search',
                   'notify',
                   'cart',
                   'aa/bb',
                   'Featured'
               );
$url = $_SERVER['REQUEST_URI'];
foreach ($dataArr as $value){
   if(strripos($url, $value)!== false){
       $this->addCustomTag('<meta name="robots" content="noindex, nofollow" />');
       break;
   }
}
?>
« Последнее редактирование: 21.12.2013, 05:09:45 от Fedor Vlasenko » Записан
Arkantos
Давно я тут
****

Репутация: +17/-0
Offline Offline

Пол: Мужской
Сообщений: 218


Всё о создании сайтов: http://site-on.net


« Ответ #11 : 21.12.2013, 11:07:45 »

Код
<?php
$dataArr = array(
                   'orders',
                   'com_search',
                   'notify',
                   'cart',
                   'com_users'
               );
foreach ($dataArr as $value){
   if(in_array($value, $_REQUEST)){
       $this->addCustomTag('<meta name="robots" content="noindex, nofollow" />');
       break;
   }
}
//var_dump($_REQUEST);
?>
код можно вставить в конец шаблона
И переделанный ваш вариант
Код
<?php
$dataArr = array(
                   'orders',
                   'search',
                   'notify',
                   'cart',
                   'aa/bb',
                   'Featured'
               );
$url = $_SERVER['REQUEST_URI'];
foreach ($dataArr as $value){
   if(strripos($url, $value)!== false){
       $this->addCustomTag('<meta name="robots" content="noindex, nofollow" />');
       break;
   }
}
?>

И как здесь обозначено, что notify должно быть строго в конце URL, а cart строго в начале?
Записан
Arkantos
Давно я тут
****

Репутация: +17/-0
Offline Offline

Пол: Мужской
Сообщений: 218


Всё о создании сайтов: http://site-on.net


« Ответ #12 : 21.12.2013, 11:10:28 »

вы будете смеяться наверно Azn если написать в <meta name="robots" content="noindex, nofollow" /> robots c большой R, то строка появляется с любым регвыражением Azn Это такой строгий синтаксис? Или какой нибудь скрипт метрики/аналитики ищет и удаляет если robots с маленькой "r"? Azn

Вообще-то больше похоже, что у вас был, например, серверный кеш Azn С моей регуляркой всё ок Wink

P.S. На правах рекламы:
Как создать свой собственный шаблон для Joomla 2.5 и Joomla 3

Автоматический импорт, экспорт и обновление товаров из прайс-листа в VirtueMart 2

Скрипты быстрой покупки для Joomla 2.5 + VirtueMart 2
« Последнее редактирование: 21.12.2013, 11:22:00 от Arkantos » Записан
Fedor Vlasenko
Профи
********

Репутация: +696/-5
Offline Offline

Пол: Мужской
Сообщений: 3820


Все начинается с Value


« Ответ #13 : 21.12.2013, 14:14:51 »

И как здесь обозначено, что notify должно быть строго в конце URL, а cart строго в начале?

Используйте 1 вариант смотрите, что такое notify или cart
или вставьте регулярку в цикл с проверкой value, где value - регулярное выражение
Записан
borro
Живу я здесь
******

Репутация: +21/-0
Offline Offline

Пол: Мужской
Сообщений: 1150


желаю вам счастья


« Ответ #14 : 26.12.2013, 12:09:28 »

Опять вернулся к вставке noindex на страницы после его временного удаления. И опять двадцать пять - если пишу Robots с большой буквы R - изменения сразу же отображаются на сайте. Если пишу robots - как будто ничего не писал Azn Кибернетика
Записан
pberit
Захожу иногда
**

Репутация: +0/-0
Offline Offline

Пол: Мужской
Сообщений: 17


« Ответ #15 : 27.06.2014, 01:16:16 »

У меня не работают все варианты... Вернее в cart появляется мета тег, а в ссылках типа /orderDesc/results,1-4?tmpl=component нету...
Записан
Fedor Vlasenko
Профи
********

Репутация: +696/-5
Offline Offline

Пол: Мужской
Сообщений: 3820


Все начинается с Value


« Ответ #16 : 27.06.2014, 01:51:07 »

Почти мини роутер получился  laugh
Код
$result = false;
$router = array(
   "aaaa",
   "bbbb",
   "cccc",
   "(\/hi\/?)"
);
$uri = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH);
foreach ($router as $route) {
   if ($uri === $route || preg_match('#^' . $route . '$#', $uri, $params)) {
       $result = true;
       break;
   }
}
if($result): ?>
<meta name="robots" content="noindex, nofollow" />
<?php endif;?>
« Последнее редактирование: 27.06.2014, 02:59:21 от Fedor Vlasenko » Записан
Stasweb
Живу я здесь
******

Репутация: +15/-0
Offline Offline

Пол: Мужской
Сообщений: 949



« Ответ #17 : 24.10.2016, 08:21:04 »

Подскажите почему этот код
Код
<?php
$dataArr = array(
'askquestion',
'service',
'results',
'search',
'product_name',
'dirDesc',
'mf_name',
'by,ordering',
'vkhod-na-sajt'
               );
foreach ($dataArr as $value){
   if(in_array($value, $_REQUEST)){
       $this->addCustomTag('<meta name="robots" content="noindex, nofollow" />');
       break;
   }
}
 
?>
 
Срабатывает на всех страницах а не на указанных
Тут он должен быть _https://lik-astana.kz/poligrafiya/by,ordering.html и он есть.
Тут его не должно быть https://lik-astana.kz/poligrafiya.html а он есть.
Подскажите в чем проблема. Использую Joomla 3.6.3 и VirtueMart 3.0.18
Записан
Страниц: [1]   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet