Поддержка Проблемы и решения Проблема с дублирующимися [H1] в кастомной теме

  • Всем доброго дня!

    Пару лет назад делался сайт, сейчас идут работы по оптимизации для поисковиков.
    Всплыла проблема наличия дублирующегося заголовка <h1>, в шаблоне это выглядит так:

    	<h1 class="hide">Museums,<br/> Galleries, Exhibition Halls</h1>
    	<h1 class="show">Museums,<br/> Galleries, Exhibition Halls</h1>
    	<div class="h1Area"></div>

    При этом в браузере заголовок показывается нормально, только один раз.
    Но для поисковой системы это ошибка.
    Начал разбираться почему так сделано и понял что так программист завязался на адаптивный дизайн.
    В версии с большим экраном заголовок выводится ВЕРТИКАЛЬНО слева от текста — http://prntscr.com/excjm9
    На меленьких разрешениях заголовок принимает обычный вид и пишется горизонтально — http://prntscr.com/exck1a

    Программист реализовал это так (CSS):

    .content .mosaic h1.show,
    .content .mosaic h1.hide {
    	margin:0;
    	font-family:"MullerBold", Arial, "Helvetica CY", "Nimbus Sans L", sans-serif;
    	font-size:30pt;
    	line-height:30pt;
    	color:#fff;
    	letter-spacing:4px;
    	text-transform:uppercase;
    }
    .content .mosaic h1.show {
    	position:absolute;
    	right:100%;
    	top:0;
    	padding:25px 35px 16px 0;
    	white-space:nowrap;
    	word-wrap:normal;
    
    	-webkit-transform-origin:100% 0;
    	-moz-transform-origin:100% 0;
    	-o-transform-origin:100% 0;
    	transform-origin:100% 0;
    	-ms-transform-origin:100% 53%;
    
    	/* Переворачиваем текст */
    /*	writing-mode:tb-rl;*/
    	-webkit-transform:rotate(-90deg);
    	-moz-transform:rotate(-90deg);
    	-o-transform:rotate(-90deg);
    	transform:rotate(-90deg);
    	-ms-transform:rotate(180deg);
    }
    .content .mosaic h1.hide {
    	display:none;
    	padding:0 0 16px 0;
    	font-size:20pt;
    	line-height:20pt;
    }
    @media screen and (max-width: 970px) {
    	.content .mosaic h1.show {
    		display:none;
    	}
    	.content .mosaic h1.hide {
    		display:block;
    	}
    }
    
    .content .mosaic .h1Area {
    	float:left;
    	height:100%;
    }
    @media screen and (max-width: 970px) {
    	.content .mosaic .h1Area {
    		display:none;
    	}
    }

    И на jQuery:

    if ($.browser.msie)
    		{
    			$('.content .mosaic.subcats h1.show').css({
    				'writing-mode': 'tb-rl'
    			});
    			$('.content .mosaic.subcats .h1Area').css({
    				'width': $('.content .mosaic.subcats h1.show').outerWidth() + 'px',
    				'min-height': $('.content .mosaic.subcats h1.show').height() + 'px'
    			});
    		}
    		else
    		{
    			$('.content .mosaic.subcats .h1Area').css({
    				'width': $('.content .mosaic.subcats h1.show').outerHeight() + 'px',
    				'min-height': $('.content .mosaic.subcats h1.show').width() + 'px'
    			});
    		}

    Т.е. он разруливает работу с отображением заголовков полностью на клиенте.
    Для больших разрешений выводится
    <h1 class="show">Museums,<br/> Galleries, Exhibition Halls</h1>
    для маленьких
    <h1 class="hide">Museums,<br/> Galleries, Exhibition Halls</h1>

    Смотрю я на это всё и не могу сообразить каким образом избавиться от лишнего заголовка не ломая адаптивной верстки и чтобы не нажить новых проблем…

    Собственно вопрос — как решить эту задачу?

    Заранее благодарен за ответы!

Просмотр 11 ответов — с 1 по 11 (всего 11)
  • Собственно вопрос — как решить эту задачу?

    В html оставить одну строку и переименовать класс. В css использовать определение размеров экрана

    • Ответ изменён 7 лет назад пользователем SeVlad.

    почему для поисковой системы это ошибка то?
    насколько я вижу — там есть display:none;, поисковик текст не должен учитывать, раз он скрыт.

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

    поисковик текст не должен учитывать, раз он скрыт.

    С чего бы? 🙂 Куча скрытых ссылок в помоешниых темах — ни о чем разве не говорит? 🙂

    У «поисковика» же есть же много разных ботов и далеко не все понимают css, а что из этого учитывают (и КАК!) — это вообще разговоры в большинстве случаев на грани фантазий. Просто надо делать по стандартам и всё будет хорошо.

    Автор noindex

    (@noindex)

    @sevlad, да там уже в CSS используется определение размера экрана, через него собственно и меняются свойства у этих <H1>.

    У меня была мысль собрать этот набор CSS в одно условие, но этот код писал довольно опытный программист, и он даже с использованием @media screen max-width оставил 2 заголовка + на jQuery происходят не до конца понятные мне вещи.
    Есть опасение что не всё так просто.

    @flector, на сколько я понимаю, поисковики в массе своей игнорируют всё что происходит на клиенте (CSS/JS).
    Соответственно он видит то что ему отдал сервер, а это 2 заголовка с указанием классов, что там с этими классами происходит, поисковику знать не нужно.

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

    Черт его знает, может болел… 😉

    В общем мысль я понял, попробую всё в одно условие загнать.

    на сколько я понимаю, поисковики в массе своей игнорируют всё что происходит на клиенте (CSS/JS).

    они игнорируют js, да и то не всегда.
    а вот css они учитывают всегда.
    еще с тем времен, когда в display:none пихали туеву кучу ключевиков.

    С чего бы? 🙂 Куча скрытых ссылок в помоешниых темах — ни о чем разве не говорит? 🙂

    и меня всегда это удивляло — бессмысленная работа получается.

    Автор noindex

    (@noindex)

    @flector,

    а вот css они учитывают всегда.
    еще с тем времен, когда в display:none пихали туеву кучу ключевиков.

    Совершенно верно, только это означает как раз обратное — в то время когда юзер не видит ссылок в display:none, поисковику абсолютно пофиг что display:none, поэтому он и видит все ссылки в коде.

    бессмысленная работа получается.

    Проставление скрытых ссылок? Вовсе нет. Именно поэтому помойки и лезли в ТОП. ЛезлИ — тому что сейчас их зависимость может и снизилась + много других факторов. Но ссылки, вне зависимости от их скрытности, активности и даже нофолв/ноиндекс играют немалую роль для реципиентов.

    Совершенно верно, только это означает как раз обратное — в то время когда юзер не видит ссылок в display:none, поисковику абсолютно пофиг что display:none, поэтому он и видит все ссылки в коде.

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

    впрочем, это мое мнение и я его навязывать не буду.

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

    Всё так.. Но не полностью — видят не все боты и как/зачем/когда реагируют — тут вопрос очень мутный.
    display:none служит вовсе не для того, чтобы что-то скрыть от ПС, а для того, чтобы это скрытое показать юзеру при определённых условиях. Отсюда видно, что ПСы это видят (обязаны видеть!) скрытое, тк все возможные «условия» не могут воспроизвести со 100%й достоверностью.

    Автор noindex

    (@noindex)

    @flector,

    относительно недавно поисковики стали требовать к индексации и стили и скрипты

    IMHO, это для защиты с другого фронта, когда в отданном сервером HTML ссылок нет, а через JS они подставляются. Ссылки это как частный случай, там могут быть и редиректы и вирусы и т.д., в общем всё нежелательное что можно подтянуть через клиента не засвечивая в отданом HTML.
    + сейчас отдельные боты поисковиков оценивают качество сайта (пользовательские факторы, оптимизация картинок скриптов и т.д.), поэтому им уже нужно обрабатывать клиентскую часть как обычному браузеру. При этом они работают параллельно с ботами, которые клиентскую часть игнорят.

    Поэтому в максимуме нужно постараться угодить всем ботам.

    Тем временем я маленько переделал HTML/CSS по своей проблеме.
    Получилось HTML:

    <h1 class="show">Museums,<br/> Galleries, Exhibition Halls</h1>
    <div class="h1Area"></div>

    CSS

    .content .mosaic .h1Area {
    	float:left;
    	height:100%;
    }
    .content .mosaic h1.show {
    	margin:0;
    	font-family:"MullerBold", Arial, "Helvetica CY", "Nimbus Sans L", sans-serif;
    	font-size:30pt;
    	line-height:30pt;
    	color:#fff;
    	letter-spacing:4px;
    	text-transform:uppercase;
    }
    @media screen and (min-width: 971px) {
    	.content .mosaic h1.show{
    	position:absolute;
    	right:100%;
    	top:0;
    	padding:25px 35px 16px 0;
    	white-space:nowrap;
    	word-wrap:normal;
    	-webkit-transform-origin:100% 0;
    	-moz-transform-origin:100% 0;
    	-o-transform-origin:100% 0;
    	transform-origin:100% 0;
    	-ms-transform-origin:100% 53%;
    	/* Переворачиваем текст */
    	-webkit-transform:rotate(-90deg);
    	-moz-transform:rotate(-90deg);
    	-o-transform:rotate(-90deg);
    	transform:rotate(-90deg);
    	-ms-transform:rotate(180deg);
    	}
    }
    @media screen and (max-width: 970px) {
    	.content .mosaic .h1Area {
    	display:none;
    	}
    	.content .mosaic h1.show{
    	padding:0 0 16px 0;
    	font-size:20pt;
    	line-height:20pt;
    	}
    }

    Всё вроде работает как нужно, но смущает конструкция

    @media screen and (min-width: 971px) {...}
    .....
    @media screen and (max-width: 970px) {...}

    Есть ощущение что не очень изящная конструкция.

Просмотр 11 ответов — с 1 по 11 (всего 11)
  • Тема «Проблема с дублирующимися [H1] в кастомной теме» закрыта для новых ответов.