Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 19.12.2023, 05:48
Кандидат Javascript-наук
Отправить личное сообщение для StartGames Посмотреть профиль Найти все сообщения от StartGames
 
Регистрация: 13.06.2014
Сообщений: 138

Скрыть часть текста на странице от поисковиков
Здравствуйте.

Если коротко, то есть страница на которой может быть разное описание товара в зависимости от выбранных параметров. И чтобы не нагружать сервер запросами, хочу прятать куски описания в виде html https://prnt.sc/PuvHHzw6DpWB

Можно просто запихнуть в блок <div class="des">кусок html кода</div>
и потомвставлять в нужное место с помощью $('.des').html();

Но боюсь поисковикам это не понравиться.

Хотел хранить в <div data-description="кусок html кода"></div> но так как в описании есть двойные кавычки " я думаю оно все сломается. Да и текст может быть немного длинным.

Вопрос:
Есть ли какой то безопасный способ хранить куски кода в js или <noindex> или еще какой то трюк? Заранее спасибо
Ответить с цитированием
  #2 (permalink)  
Старый 19.12.2023, 13:47
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

StartGames, способов много, но кажется, что не очень хорошая идея хранить html в БД (если я правильно понял). Если у вас потом поменяется дизайн/логика, то будет больно и обратного пути не будет. Храните данные в БД в формате JSON, чтобы не привязываться к разметке и на клиенте было проще с этим работать.

Если отвечать конкретно на Ваш вопрос, то можно это сделать несколькими способами:

1. Хранить разметку в глобальном свойстве:

<script>
window._entityData = '<div>123</div>';
</script>

...

<script>
console.log(window._entityData);
</script>


2. Хранить разметку в тэге:

<script id="entityData" type="text/template">
  <div>123</div>
</script>


<script>
console.log(document.getElementById('entityData').innerHTML);
</script>

3. Хранить в data-атрибуте, но в "закодированном" формате

<div data-entity="%3Cdiv%20class%3D%22foo%22%3E123%3C%2Fdiv%3E">..</div>


<script>
console.log(
  decodeURIComponent(
    document.querySelector('[data-entity]').dataset.entity
  )
);
</script>


P.S.: учтите, что в первом варианте нужно будет экранировать кавычки, перенос строки и желательно слэш.
Ответить с цитированием
  #3 (permalink)  
Старый 19.12.2023, 17:00
Аватар для voraa
Профессор
Отправить личное сообщение для voraa Посмотреть профиль Найти все сообщения от voraa
 
Регистрация: 03.02.2020
Сообщений: 2,707

Я думаю можно и в <template> загнать все, что со временем может понадобится.
И ничего экранировать не нужно и достать просто и быстро.
Ответить с цитированием
  #4 (permalink)  
Старый 20.12.2023, 03:50
Кандидат Javascript-наук
Отправить личное сообщение для StartGames Посмотреть профиль Найти все сообщения от StartGames
 
Регистрация: 13.06.2014
Сообщений: 138

ruslan_mart,
Спасибо, просто топ)) Есть еще вопросы если можно:

1. Сколько символов можно держать в <div data-entity="12345..."></div>
2. Поисковики не будут видеть текст в <div data-entity="12345..."></div>
3. Как в php закодировать нужные данные, а уже на сайте с помощью js раскодировать?

например:

В php:

$data['description'] = 'нужный текст';

в .twig (html)

<div id="entityData" data-entity="{{ description }}"></div>

в js:

alert($('#entityData').attr('data-entity'));

Последний раз редактировалось StartGames, 20.12.2023 в 03:56.
Ответить с цитированием
  #5 (permalink)  
Старый 20.12.2023, 03:53
Кандидат Javascript-наук
Отправить личное сообщение для StartGames Посмотреть профиль Найти все сообщения от StartGames
 
Регистрация: 13.06.2014
Сообщений: 138

Сообщение от voraa Посмотреть сообщение
Я думаю можно и в <template> загнать все, что со временем может понадобится.
И ничего экранировать не нужно и достать просто и быстро.
а это как?) можно пример
Ответить с цитированием
  #6 (permalink)  
Старый 20.12.2023, 13:56
Аватар для ruslan_mart
Профессор
Отправить личное сообщение для ruslan_mart Посмотреть профиль Найти все сообщения от ruslan_mart
 
Регистрация: 30.04.2012
Сообщений: 3,018

Цитата:
Сколько символов можно держать в <div data-entity="12345..."></div>
Да сколько угодно, ограничений нет

Цитата:
Поисковики не будут видеть текст в <div data-entity="12345..."></div>
Не будут

Цитата:
Поисковики не будут видеть текст в <div data-entity="12345..."></div>
На PHP давно не писал, но возможно как-то так:

$data['description'] = urlencode('text');


Потом в JS:

alert(decodeURIComponent($('#entityData').data('entry')));


Цитата:
а это как?) можно пример
Примерно то же самое, что я привел во втором пункте

<template id="entity">{{ description }}</template>


const entityElement = document.getElementById('entity');

alert(entityElement.content);


Так конечно будет гораздо проще, ничего не нужно будет кодировать и раскодировать.

Но нет гарантии, что поисковики сюда не начнут смотреть. Особенно поисковики на древних движках, которые вообще не знают такой тэг. Но могу с уверенностью сказать, что гугл сюда смотреть не должен. У меня нет достаточной экспертизы в этом вопросе, все это лишь моё логическое предположение.

Почему боитесь поисковиков? Ну пусть смотрят, если хочется

Последний раз редактировалось ruslan_mart, 20.12.2023 в 14:02.
Ответить с цитированием
  #7 (permalink)  
Старый 20.12.2023, 22:04
Кандидат Javascript-наук
Отправить личное сообщение для StartGames Посмотреть профиль Найти все сообщения от StartGames
 
Регистрация: 13.06.2014
Сообщений: 138

Сообщение от ruslan_mart
Да сколько угодно, ограничений нет
Просто огонь!))) Пасиб))

Сообщение от ruslan_mart
Почему боитесь поисковиков? Ну пусть смотрят, если хочется
Да я хз. Паранойя) Но суть в общем такая. Есть магазин, в нем в основном один товар может иметь несколько цветов в виде страниц отдельных товаров. Ну и чтобы не гонять покупателя по сайту и не нагружать сервак запросами, я вывожу список доступных для этой модели цветов. Теперь в дату записываю все важные данные связанных товаров из бд (название, ид, фото, цена, описание и т.д.). И просто подставляю ява скриптом при клике на нужный цвет. В итоге молниеносная смена данных в зависимости от цвета без переходов на другие страницы. И я не хотел, чтобы гугл увидел описание на странице конкретного товара от другого. Ну и остальные данные. А то получается что смотрим такую то красную модель, а в теле страницы еще описание и данные от 10 связанных товаров разных цветов.

В любом случае очень благодарен за помощь. Для новичков это топ. Никогда бы не подумал, что data это такая полезная вещь))
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Получение позиции текста по координатам traa Events/DOM/Window 20 08.02.2011 14:19
Поиск текста на странице derwish Opera, Safari и др. 5 25.09.2009 13:13
Вставка текста с одной страницы в форму на другой странице Dima Общие вопросы Javascript 19 22.01.2009 17:35
Скрытие текста на странице за ссылкой Vlad44 Общие вопросы Javascript 2 13.01.2009 18:02
Подскажите как убрать часть текста при нажатии на кномпу или гиперссылку. potkin Общие вопросы Javascript 6 10.10.2008 07:55