Можно ли сделать так что б, По основному адресу (test.ru) блок был виден всем пользователям, а когда заходят через зеркало на сайт (tester.ru) блок не отображался?
о пля. не заню что сделалось, удалил первый вариант <?php if ($_SERVER['HTTP_REFERER'] == 'test.ru' || $_SERVER['HTTP_REFERER'] == 'www.test.ru') {return TRUE;) ?> и потом вставил <?php print $_SERVER['HTTP_REFERER']; ?> Исчез по одному адресу, а по другому виден.
Вторично, просто вставляю <?php print $_SERVER['HTTP_REFERER']; ?> нечего не даёт. Опять проделываю последовательность вставки удаления как написал выше, тогда работает -( что за хрень -(
Да, оно самое.
"Установки видимости для страницы"
Выбирай -> "Показать, если данный PHP-код возвращает TRUE (PHP-режим, только для экспертов)"
Там должно быть только <?phpif($_SERVER['HTTP_REFERER'] == 'http://test.ru'||$_SERVER['HTTP_REFERER'] == 'http://www.test.ru'){returnTRUE;)?>
Подскажите, а возможно ли что настройки хостинга не позволяют это делать?
Я о таком не слышал.
Отчисти блок.
В поле "Текст блока" напиши "<?php print $_SERVER['HTTP_REFERER']; ?>".
Установи "формат ввода" в "PHP code" (если нет такого - включи модуль "PHP filter", он идёт вместе с друплом).
Убедись, что в фильтре видимости пусто и он установлен в "Показывать на всех страницах кроме перечисленных".
Установи этот блок в один из регионов. И напиши чего он выводит при переходе на сайт "test.ru" с сайта "tester.ru", и чего пишет при переходах внутри сайта "test.ru".
Вот твой рабочий код фильтра видимости «Показать, если данный PHP-код возвращает TRUE (PHP-режим, только для экспертов)» <?phpif($_SERVER['HTTP_REFERER'] == 'http://test.ru'){returnTRUE;)?>
Ставлю, и по двум адресам пусто стало. вот скриншот, кривоватый так как целиком сделать не могу в экран не влазил, по частям. всё что я делаю. а убераю строчку в фильтре видно на обоих
Этот фильтр будет показывать блок только внутри сайта "test.ru" или если юзер зашёл на "test.ru" не по внешней ссылке (открыл "test.ru" в новой влкадке браузера и т.п.).
Комментарии
В блоке есть формат видимости - по коду PHP. Впишите код, который анализирует результат вызова функции request_uri
<?php
function request_uri() {
if (isset(
$_SERVER['REQUEST_URI'])) {$uri = $_SERVER['REQUEST_URI'];
}
else {
if (isset($_SERVER['argv'])) {
$uri = $_SERVER['SCRIPT_NAME'] . '?' . $_SERVER['argv'][0];
}
elseif (isset($_SERVER['QUERY_STRING'])) {
$uri = $_SERVER['SCRIPT_NAME'] . '?' . $_SERVER['QUERY_STRING'];
}
else {
$uri = $_SERVER['SCRIPT_NAME'];
}
}
// Prevent multiple slashes to avoid cross site requests via the Form API.
$uri = '/' . ltrim($uri, '/');
return
$uri;}
?>
Подскажи пожалуйста куда свой адрес тут вставлять что б не отображался блок на tester.ru. Куда в блоке это вставить я нашёл.
там типа так:
<?php
if ( preg_match('/^http:\/\/tester.ru/ui', request_uri())) return FALSE;
else return TRUE;
?>
-( всё равно отображается (
А что выведет
<?php
print request_uri();?>
?
добовляю, включаю Показать, если данный PHP-код возвращает TRUE (PHP-режим, только для экспертов). всё без изменений
Не то. Надо смотреть в $_SERVER['HTTP_REFERER'].
а это где? я новичок, можно как бы по подробнее
Вот этот код вставь PHP-фильтр видимости блока:
<?php if ($_SERVER['HTTP_REFERER'] == 'test.ru') {return TRUE;) ?>
В этом случае блок будет показываться каждый раз, когда пользователь заходит на страницу с домена "test.ru".
вообще перестал появляться на основном домене и на зеркале
Возможно, в этом проблема.
Если по-прежнему не работает, вставь в тело блока (не забудь поставить PHP формат)
и напиши, что выводит блок при заходе с "test.ru", а что с "tester.ru".
отображается текст тот что я ввёл в блоке, вот картинка. Отображается одинаково на обоих адресах.
Последний код даже места текста вставил и тоже нечего не пишет.
PHP режим ставил
Вот 100%-ый вариант.
<?php if ($_SERVER['HTTP_REFERER'] == 'http://test.ru' || $_SERVER['HTTP_REFERER'] == 'http://www.test.ru') {return TRUE;) ?>
Этот сниппет вставляй в PHP фильтр видимости блока.
Фильтр видимости, это то поле что на картинке?
о пля. не заню что сделалось, удалил первый вариант
<?php if ($_SERVER['HTTP_REFERER'] == 'test.ru' || $_SERVER['HTTP_REFERER'] == 'www.test.ru') {return TRUE;) ?>
и потом вставил<?php print $_SERVER['HTTP_REFERER']; ?>
Исчез по одному адресу, а по другому виден.Вторично, просто вставляю
<?php print $_SERVER['HTTP_REFERER']; ?>
нечего не даёт. Опять проделываю последовательность вставки удаления как написал выше, тогда работает -( что за хрень -(Да, оно самое.
"Установки видимости для страницы"
Выбирай -> "Показать, если данный PHP-код возвращает TRUE (PHP-режим, только для экспертов)"
Там должно быть только
<?php if ($_SERVER['HTTP_REFERER'] == 'http://test.ru' || $_SERVER['HTTP_REFERER'] == 'http://www.test.ru') {return TRUE;) ?>
Подскажите, а возможно ли что настройки хостинга не позволяют это делать?
Я о таком не слышал.
Установи этот блок в один из регионов. И напиши чего он выводит при переходе на сайт "test.ru" с сайта "tester.ru", и чего пишет при переходах внутри сайта "test.ru".
только адреса вот эти:
на test.ru выдаёт вот это - http://test.ru/?q=admin/build/block/configure/block/7
На tester.ru выдаёт вот это http://tester.ru/?q=admin/build/block/configure/block/7
Вот твой рабочий код фильтра видимости «Показать, если данный PHP-код возвращает TRUE (PHP-режим, только для экспертов)»
<?php if ($_SERVER['HTTP_REFERER'] == 'http://test.ru') {return TRUE;) ?>
Ставлю, и по двум адресам пусто стало. вот скриншот, кривоватый так как целиком сделать не могу в экран не влазил, по частям. всё что я делаю. а убераю строчку в фильтре видно на обоих
Ок. Вот новый вариант фильтра.
<?php
$ref = array();
$ref = explode('/', $_SERVER['HTTP_REFERER']);
if (in_array('test.ru', $ref)) {return TRUE;}
?>
Ура!!! Спасибо большое!!!! теперь работает!!! Вы гений!!!
Одна только фигня когда заходишь на сайт tester.ru или test.ru блок не виден но как только жму на любую новость или лажу где угодно, всё как надо.
<?php
$ref = array();
$ref = explode('/', $_SERVER['HTTP_REFERER']);
if (in_array('test.ru', $ref) || is_empty($_SERVER['HTTP_REFERER']) {return TRUE;}
?>
Этот фильтр будет показывать блок только внутри сайта "test.ru" или если юзер зашёл на "test.ru" не по внешней ссылке (открыл "test.ru" в новой влкадке браузера и т.п.).
спасибо вам