Как вывести описание термина (или блок) только на первой странице пейджера? [Решено]

Главные вкладки

Аватар пользователя VasyOK VasyOK 14 октября 2013 в 15:00

Ноды термина выводятся по 10 шт. на страницу. Страницы листаются AJAX-ом.

Вопрос: как (и возможно ли) вывести описание термина только на первой странице пейджера?

Решение:
1) Вставляем описание термина в отдельный блок (вьюху)
2) через модуль block query добавляем условие в этот блок:
Queries - Все страницы, кроме перечисленных - page=*

и все.

Комментарии

Аватар пользователя alex_shut alex_shut 14 октября 2013 в 23:21
<?php
if (arg(1)=='термин таксономии') {
return !isset(
$_GET['page']);
};
?>

таким макаром блок вывел на первой странице пагинатора

Аватар пользователя alex_shut alex_shut 18 октября 2013 в 15:21

не уточнил, сори.
это алиас термина таксономии.
например: exemple.com/devki/siski
devki - словарь. в нем сиски, письки, лысые....
siski - непосредственно страница с сиськами )) вот это туда и вписывал.

Аватар пользователя VasyOK VasyOK 10 ноября 2015 в 11:49

Или я тебя не понял или что-то не так делаю.
Вот так я сделал настройки у блока:

Вот термин Лапочки
http://test.u5154.ph.vps-private.net/lampochki

Но на странице термина я не вижу текст блока.

/*Добавлено*/
Поставил 0 вместо 1. Теперь так:
if (arg(0)=='lampochki') {
return !isset($_GET['page']);
};
?>
Все равно не вижу блок тут http://test.u5154.ph.vps-private.net/lampochki.

Аватар пользователя alex_shut alex_shut 18 октября 2013 в 17:55

поставь (0) вместо (1).
у меня в примере иерархия адреса из двух ступеней.
arg(0) == devki
arg(1) == siski

у тебя ток один шаг. следовательно - arg(0)

Аватар пользователя drupby drupby 18 октября 2013 в 20:15

"alex_shut" wrote:
хм.. а попробуй с выключенным аяксом

во-первых аякс пейджер не передает параметры методом get - он шлет все через post
а во-вторых условие в таком случае для блока не прокатит ,тк аякс перегружает только контентную часть

Аватар пользователя VasyOK VasyOK 18 октября 2013 в 20:33

С выключенным AJAX не получается тоже.

"drupby" wrote:
тк аякс перегружает только контентную часть

А можно как-то сделать, чтобы вы этой части было описание термина
и оно выводилось к примеру только на первой странице?

Аватар пользователя drupby drupby 18 октября 2013 в 21:57

попробуй модулем views_php в шапке вьюхи к примеру вывести $_POST['page']- посмотри будет ли меняться значение
у тебя меняется <div class="view view-tblock view-id-tblock view-display-id-block_1 view-dom-id-b2e834132b9bd8accaad36a759a71a92 jquery-once-1-processed"> ...</div>
тобишь вся вьюха - вот и выводи свое описание внутри вьюхи в шапке или подвале в зависимости от $_POST['page'] - на первой странице его вообще не будет

Аватар пользователя VasyOK VasyOK 18 октября 2013 в 21:56

"drupby" wrote:
модулем views_php в шапке вьюхи

Это понял
"drupby" wrote:
вывести $_POST['page']

Это нет.
Какой код там написать?

Аватар пользователя VasyOK VasyOK 18 октября 2013 в 22:34

О да - это то что надо! Сделал так:
<?php
if(!isset($_POST['page'])) {
$current = taxonomy_term_load(arg(2));
if ($current->description) {print '

'. $current->description .'

'; }
}
?>

А как не отображать на страницах фильтров и сортировки?

Аватар пользователя drupby drupby 18 октября 2013 в 22:55

"VasyOK" wrote:
А как не отображать на страницах фильтров и сортировки?

if(!isset($_POST['page']) && $_POST['field_lpow_value_selective'] == 'All' && $_POST['field_light_value_selective'] == 'All'
 && $_POST['field_tavto_value_selective'] == 'All') {
$current = taxonomy_term_load(arg(2));
  if  ($current->description) {print '<div class="taxonomy-description">'. $current->description .'</div>'; }
}
Аватар пользователя VasyOK VasyOK 19 октября 2013 в 1:05

Прописал так:
if(!isset($_POST['page']) && $_POST['field_light_value_selective'] == 'All') {
$current = taxonomy_term_load(arg(2));
if ($current->description) {print '

'. $current->description .'

'; }
}
}
Высвечивает ошибку (посетителям не видна)
Notice: Undefined index: field_light_value_selective in __lambda_func() (line 2 of ...sites/all/modules/views_php/plugins/views/views_php_handler_area.inc(39) : runtime-created function)

Когда заходишь на
http://test.u5154.ph.vps-private.net/lampochki
текст не выводится Sad

А вот когда, на страницы пейджера понажимаешь и на первую перейдешь
Выводится: "Лампочки нужны чтобы светить."

Аватар пользователя drupby drupby 19 октября 2013 в 1:21

"VasyOK" wrote:
А вот когда, на страницы пейджера понажимаешь и на первую перейдешь
Выводится: "Лампочки нужны чтобы светить."

это потому что у тебя сразу вообще нету $_POST['field_light_value_selective'] - он появляется только при аякс запросах - надо как то менять условия
тебе обязательно еще фильтры задействовать?
а если так

if(!isset($_POST['page']) && (!isset($_POST['field_light_value_selective']) || $_POST['field_light_value_selective'] == 'All')) {
$current = taxonomy_term_load(arg(2));
if ($current->description) {print ''. $current->description .''; }
}
}
Аватар пользователя alex_shut alex_shut 19 октября 2013 в 1:43

"drupby" wrote:
сразу вообще нету $_POST['field_light_value_selective'] - он появляется только при аякс запросах

а если объявить с пустым значением перед всем этим делом? Или не вариант?

Аватар пользователя drupby drupby 19 октября 2013 в 1:47

"alex_shut" wrote:
а если объявить с пустым значением перед всем этим делом? Или не вариант?

ну так я же выше написал условие !isset($_POST['field_light_value_selective']) или $_POST['field_light_value_selective'] == 'All'

Аватар пользователя drupby drupby 19 октября 2013 в 2:06

"alex_shut" wrote:
а.. ну да. пойду спать. туплю безбожно. две строки кода прочитать не могу

ну да день тяжелый был - столько перепетий

Аватар пользователя VasyOK VasyOK 19 октября 2013 в 23:27

Да получилось. Спасибо!

Сейчас обкатываю технологию на разных типах фильтров.

Собственно весь сыр бор из-за того, что сеошники утверждают, что описание термина выведенное на всех страницах пейджера создает дубли. А без AJAX сложно подключить page title к вьюхе таксономии.

Аватар пользователя alex_shut alex_shut 19 октября 2013 в 23:52

сео... я мутил ради няшности. галерея на 20+ страниц пагинатора. некрасиво было, когда блочок с описанием вываливался на каждой странице)

Аватар пользователя drupby drupby 19 октября 2013 в 23:52

"VasyOK" wrote:
Собственно весь сыр бор из-за того, что сеошники утверждают, что описание термина выведенное на всех страницах пейджера создает дубли

а вот тут я совсем не понял - страница всегда одна , в урле у тебя никаких get параметров нет - все передается через post параметры
какие вообще могут быть дубли

Аватар пользователя sergeybelya sergeybelya 20 октября 2013 в 0:46

drupby wrote:
"VasyOK" wrote:
Собственно весь сыр бор из-за того, что сеошники утверждают, что описание термина выведенное на всех страницах пейджера создает дубли

а вот тут я совсем не понял - страница всегда одна , в урле у тебя никаких get параметров нет - все передается через post параметры
какие вообще могут быть дубли

При включенном Ajax во вьюшке ссылки пейджера все равно содержат ?page= и роботы соответственно могут ходить по ним. Похожая тема уже поднималась, там человек пошел по более простому пути - закрыл ссылки пейджера через rel=nofollow

Аватар пользователя drupby drupby 20 октября 2013 в 0:54

"sergeybelya" wrote:
При включенном Ajax во вьюшке ссылки пейджера все равно содержат ?page= и роботы соответственно могут ходить по ним

в данном случае http://test.u5154.ph.vps-private.net/lampochki вьюха выводится в блоке и пейджер соответственно тоже в блоке - какие могут быть параметры в урле для блока?

Аватар пользователя sergeybelya sergeybelya 20 октября 2013 в 1:02

drupby wrote:
"sergeybelya" wrote:
При включенном Ajax во вьюшке ссылки пейджера все равно содержат ?page= и роботы соответственно могут ходить по ним

в данном случае http://test.u5154.ph.vps-private.net/lampochki вьюха выводится в блоке и пейджер соответственно тоже в блоке - какие могут быть параметры в урле для блока?

В вопросе указано "Ноды термина выводятся по 10 шт. на страницу. Страницы листаются AJAX-ом.". Про блок не сказано было ничего, а комменты я не все прочитал, их тут уже много:) Ну в блоке вьюха и что - ссылки-то все равно параметры содержат дополнительные. Не поленитесь навести на них:)

Аватар пользователя drupby drupby 20 октября 2013 в 1:07

"sergeybelya" wrote:
Ну в блоке вьюха и что - ссылки-то все равно параметры содержат дополнительные.

так там же все данные -фильтры , сортировки - долго придется изголяться со всеми условиями трехэтажными - проще действительно nofollow добавить ссылкам
просто у VasyOK-а сеошники жесточайшие

Аватар пользователя VasyOK VasyOK 23 октября 2013 в 5:08

"drupby" wrote:
в данном случае http://test.u5154.ph.vps-private.net/lampochki вьюха выводится в блоке и пейджер соответственно тоже в блоке - какие могут быть параметры в урле для блока?

Дубли на страницах типа (В robots.txt закрыты, но все равно):
http://test.u5154.ph.vps-private.net/lampochki?field_light_value_selecti...

А можно ли реализовать тоже самое для пользователей с отключенным Джаваскриптом?
Т.е. с русского на php-стский:

Если JavaScript отключен и Страница=Первая и Фильтр=Все то {
 ...
}

И все ли значения для условия нужны?

Аватар пользователя drupby drupby 23 октября 2013 в 13:42

"VasyOK" wrote:
А можно ли реализовать тоже самое для пользователей с отключенным Джаваскриптом?

if (!$_COOKIE['has_js'])

Аватар пользователя VasyOK VasyOK 23 октября 2013 в 20:35

Чисто для тренировки поставил в верх вьюхи вариант для отключенного JavaScript:
<?php
if ((!$_COOKIE['has_js']) && isset($_GET['page'])
&& (!isset($_POST['field_light_value_selective']) || $_POST['field_light_value_selective'] == 'All')
&& (!isset($_POST['sort_bef_combine']) || $_POST['sort_bef_combine'] == 'sell_price_1 ASC')
) {
$current = taxonomy_term_load(arg(2));
if ($current->description) {print '

'. $current->description .'

'; }
}
?>
Что-то не то...

Аватар пользователя drupby drupby 23 октября 2013 в 22:22

"VasyOK" wrote:
Что-то не то...

открой вкладку в режиме инкогнито(или почисти куки для домена на котором проверяешь),
если ты просто выключишь скрипты в браузере - кука все равно останется
да и должно быть вроде !isset($_GET['page'])

можешь еще попробывать !isset($_COOKIE['has_js'])

$_POST['sort_bef_combine'] == 'sell_price_1 ASC' - это откуда?
чей то ты намудрил и перемудрил

Аватар пользователя VasyOK VasyOK 24 октября 2013 в 2:09

Поставил в заголовке вьюхи специально для тех, у кого JS отключен. И для Гугла.
<?php
if (!isset($_COOKIE['has_js']) && !isset($_GET['page'])) {
$current = taxonomy_term_load(arg(2));
if ($current->description) {print '

'. $current->description .'

'; }
}
?>

В Опере:

отключены JavaSсript и куки - работает
отключены JavaSсript, но куки включены - не работает. Не выводится текст в заголовке вьюхи.

В Хроме (с чистыми настройками):

Заходит 1й раз - видит текст переназначенный для пользователей с отключенным JavaScript (почему это?)
Заходит 2-й раз - уже не видит.

Аватар пользователя drupby drupby 10 ноября 2015 в 11:49

не дури голову если приходит пользователь с отключенными скриптами и до этого он не авторизовался на этом домене и не получал куки при включенном яваскрипте -
$_COOKIE['has_js'] просто напросто не будет существовать
разлогинься на том сайте на котором проверяешь , потом почисти куки , к примеру в хроме(F12)
выбери домен и правой кнопкой мыши выбираешь clear

ни яндекс ни гугл точно не получат эту куку

Аватар пользователя drupby drupby 24 октября 2013 в 3:38

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

kpr($_COOKIE);
kpr($_POST);
kpr($_GET);
Аватар пользователя VasyOK VasyOK 24 октября 2013 в 3:48

Добавил так:
<?php
if (!isset($_COOKIE['has_js']) && !isset($_GET['page'])) {
$current = taxonomy_term_load(arg(2));
if ($current->description) {
print '

'. $current->description .'

';
kpr($_COOKIE);
kpr($_POST);
kpr($_GET);
}
}
?>
Тогда при оключенном JS и куках выдает белую страницу с описанием термина. Что это дает?

Аватар пользователя drupby drupby 10 ноября 2015 в 11:49

"VasyOK" wrote:
Тогда при оключенном JS

не подумал , krumo же на яваскрипте ведь
тогда

if (!isset($_COOKIE['has_js']) && !isset($_GET['page'])) {
$current = taxonomy_term_load(arg(2));
  if  ($current->description) {
   print '<div class="taxonomy-description">'. $current->description .'</div>';
   print_r($_COOKIE);
   print_r($_POST);
   print_r($_GET);
  }
}

да и зачем ты отключаешь куки в браузере?
ты когда проверяешь , после отключения яваскрипта , надо просто удалить существующие куки

вот у меня с отключенным js

а вот с включенным

Аватар пользователя VasyOK VasyOK 25 декабря 2013 в 21:44

Привет всем! Лучше поздно чем никогда.
После некоторых размышлений вывел описание термина так (тут http://test.u5154.ph.vps-private.net/lampochki):
<?php
if (
!isset($_GET['page'])
&& (!isset($_POST['field_light_value_selective']) || $_POST['field_light_value_selective'] == 'All')
&& (!isset($_POST['sort_bef_combine']) || $_POST['sort_bef_combine'] == 'sell_price_1 ASC')
) {
$current = taxonomy_term_load(arg(2));
if ($current->description) {print '

'. $current->description .'

';}
}
?>

Как бы работает описание выводит, но если нажать на вторую страницу пейджера, а потом опять перейти на первую, описание "забывается" и не выводится.

Аватар пользователя VasyOK VasyOK 26 декабря 2013 в 21:23

Блин

"VasyOK" wrote:
Как бы работает описание выводит, но если нажать на вторую страницу пейджера, а потом опять перейти на первую, описание "забывается" и не выводится.

Оказалось, что это так и надо сеонистам.

Ведь урл с указанием именно первой страницы тоже дубль генерирует.

Аватар пользователя drupby drupby 27 декабря 2013 в 1:16

"alex_shut" wrote:
Саня, тебе таки дешевле убить этих умников.

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

Аватар пользователя alex_shut alex_shut 27 декабря 2013 в 1:26

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

Так вот, зачем гугл вкидывает бабос в робототехнику!!!
Роботов-СЕОкиллеров будут массово хренячить!!! (злорадный смех)