Jump to content
  • 0

Вот такой вопрос (поисковики, аджакс, цмс)


Zverushka
 Share

Question

А самое важное: здесь потребуется сделать чтобы сайт был одностраничный, но был с джакс подгрузкой. ЧТобы для поисковиков он был много страничный. поясняю свои кривые объяснения:
главная сайта xxx.ru
страница магазина xxx.ru/shop
страница для профессионалов xxx.ru/prof
когда человек выбирает раздел, то он без перезагрузки страницы попадает куда нужно, а в адресной строке автоматом появляется /shop
например.
 
а когда человек находит на странице товара. то адрес должен быть expsalon.ru/shop/redken/tovar1
 
сможем ли мы это сделать без ЦМС? ))

 

Помогите, пожалуйста, ответить на эти вопросы

И...

Что проще  сделать " сделать самую простую в мире админку по добавлению товара / услуг :)" или воспользоваться чем-нибудь готовым? Сам макет представляет из себя по сути по большей части страницу, похожу на лендинг и заказ товара осуществляется просто заявкой на почту. Меня смущает "простая админка для добавления товаров".

Кто что может посоветовать?

Edited by Zverushka
Link to comment
Share on other sites

23 answers to this question

Recommended Posts

  • 0

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

Как можно сделать, что при подгрузке аджаксксом в адресной строке появлялось /shop. - разве это возможно?

Link to comment
Share on other sites

  • 0

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

Как можно сделать, что при подгрузке аджаксксом в адресной строке появлялось /shop. - разве это возможно?

это невозможно.

если ajax, то без меняющегося url.

Link to comment
Share on other sites

  • 0
если ajax, то без меняющегося url.

А подделать отдельным скриптом строку адреса можно?

А что на счет поисковиков? Кто-нибудь может подсказать путь индексации сайта на ajax?

Edited by Zverushka
Link to comment
Share on other sites

  • 0

вот на счет этого я сам когда-то задумывался, но так что-то и не докопался до истины.

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

Link to comment
Share on other sites

  • 0

Если подумать, то сайт должен работать и без js то есть ссылки должны быть обычные типо /page/1.html но вот на клиенте где есть js они должны работать через ajax. В принципе на клиенте можно сделать скрипт который при загрузке страницы к примеру на все ссылки навесит обработчик который будет перехватывать нажатие и делать запрос через ajax.
 
что-то типо:

$(document).ready(function(){  $( document ).on( "click", "a", function(e) {    e.preventDefault();    $('#' + $(this).data('box')).load('/ajax.php?url='+$(this).attr('href'));    return false;  });});

в ajax.php принимать параметр url и в зависимости от него отдавать части контента. Индексирование данного файла отключить с помощью robots.txt

 

а html вида:

<a href="/page1.html" data-box="result-page1">link</a><div id="result-page1"></div>

Для работающих кнопок назад/вперед в браузере можно использовать history api

 

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

 

Пишем правило для него чтобы все запросы кроме запросов к ajax.php перекидывать к примеру на файл index.php

 

.htaccess

RewriteEngine OnRewriteBase /RewriteCond %{REQUEST_FILENAME} !-fRewriteCond %{REQUEST_FILENAME} !-dRewriteCond %{REQUEST_URI} !=^/ajax.php.*RewriteRule ^(.*)$ /index.php?url=$1 [L,QSA]

В итоге получается что файл index.php отдает контент по прямым ссылкам оборачивая его в ваш шаблон (это будут получать поисковики). Файл ajax.php отдает контент по ajax запросам.

 

Ну как то так ))

  • Like 1
Link to comment
Share on other sites

  • 0

Слушай. А поисковик  просто будет ссылку брать и сам создавать новое соединение по этому адресу или имитировать клик по ней и в итоге получать подгруженный контент, вместо перехода?

Link to comment
Share on other sites

  • 0
Меня смущает "простая админка для добавления товаров".

 

сразу в голову пришло использовать phpmyadmin )) пусть напрямую в базу добавляет ахаха )))И писать ничо не надо )))


Слушай. А поисковик  просто будет ссылку брать и сам создавать новое соединение по этому адресу или имитировать клик по ней и в итоге получать подгруженный контент, вместо перехода?

поисковик не навесит обработчики на ссылки ибо js там не исполняется, поисковику ненужен функционал ему нужен контент )) он будет брать ссылки из href тега А ))

 

ЗЫ Кстати если  не ошибаюсь у гугла есть api для аякс ссылок, а вот у других поисковиков нет.

Link to comment
Share on other sites

  • 0

по-быстрому накидал на локалке рабочий пример

index.php (дописал кусочек чтоб менялся хэш в строке браузера когда работает подгрузка контента через ajax и работали кнопки назад/вперед в браузере)

<?require_once('content.php');?><!DOCTYPE html><html><head>	<title></title>	<script type="text/javascript" src="http://code.jquery.com/jquery-1.11.0.min.js"></script>	<script type="text/javascript" src="/jquery.history.js"></script>	<script type="text/javascript">	$(document).ready(function(){		if(History.enabled){			$(document).on( "click", "a", function(e) {				e.preventDefault();				History.pushState(null, null, $(this).attr('href'));				return false;			});			History.Adapter.bind(window, "statechange", function () {				var state = History.getState();				var url = state.hash.replace('/', '');				var box = $('a[href="'+url+'"]').data('box');				$('#'+box).empty().load('/ajax.php?url='+url);			});			if(History.getHash()){				History.replaceState(null, null, History.getHash());			};		}	});	</script></head><body>	<a href="page1.html" data-box="result-page">link to page1.html</a>	<a href="page2.html" data-box="result-page">link to page2.html</a>	<a href="page3.html" data-box="result-page">link to page3.html</a>	<div id="result-page"><?=$content;?></div></body></html>
ajax.php

<?require_once('content.php');echo $content;?>
content.php

<?if(isset($_GET['url'])){	switch(trim($_GET['url']))	{		case 'page1.html':			$content =  "page1.html content";		break;		case 'page2.html':			$content =  "page2.html content";		break;		case 'page3.html':			$content =  "page3.html content";		break;		default:			$content = 'index.php content';		break;	}}else{$content = 'index.php content';}?>
.htaccess

RewriteEngine OnRewriteBase /RewriteCond %{REQUEST_FILENAME} !-fRewriteCond %{REQUEST_FILENAME} !-dRewriteCond %{REQUEST_URI} !=^/ajax.php.*RewriteRule ^(.*)$ /index.php?url=$1 [L,QSA]
В итоге сайт работает и при включенном js(контент грузится через ajax) и по прямым ссылкам.

 

UPD Немного дописал js под history.js

UPD2 ещё немного изменил.

Edited by wwt
  • Like 1
Link to comment
Share on other sites

  • 0

я раньше делал так:

все адреса в ссылка идут нормальные, например /shop/, /home/, /contact/...
боты и пользователи без js по ним скачут хорошо

 

для пользователей c js я заменяю адрес при клике по ссылкам на #/shop/, #/home/, #/contact/...
и подгружаю нужный контент в нужное место,

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

 

можно воспользоваться historyAPI, но это может быть не кроссбраузерно, на сколько я помню 

Link to comment
Share on other sites

  • 0

...

можно воспользоваться historyAPI, но это может быть не кроссбраузерно, на сколько я помню

Hystory api да поддерживают только новые браузеры, но есть библиотека Hystory.js где есть поддержка и старых браузеров с помощью хэшей, они помечены как HTML4 браузеры:

HTML5 Browsers

Firefox 4+

Chrome 8+

Opera 11.5+

Safari 5.0+

Safari iOS 4.3+

HTML4 Browsers

IE 6, 7, 8, 9, (10)

Firefox 3

Opera 10, 11.0

Safari 4

Safari iOS 4.2, 4.1, 4.0, 3.2

Edited by wwt
Link to comment
Share on other sites

  • 0

http://help.yandex.ru/webmaster/robot-workings/ajax-indexing.xml

 

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

по идее, ты берешь либу и работаешь с ней. В либе можно включить флаг "html4" (например) . По умолчанию либа работает html5 для новых и html4 для старых.

Link to comment
Share on other sites

  • 0

Будет список товаров в разных категориях - вроде "все для волос", "ногтей," "лица", "инструмент", "оборудование"

Как бы вы сделали для "очень простой админки" - на mysql или json (легко переносить с сайта на сайт, не требуется первая инициализация сайта с созданием таблиц в базе данных)? Может xml? При работе с xml данными  файл полностью перезаписывается или есть какие-то встроенные функции вроде перезаписать конкретную переменную? А то боюсь перезатереть Json файл полностью - кривым скриптом или еще каким-нибудь образом и потерять в итоге все "базу данных".

Edited by Zverushka
Link to comment
Share on other sites

  • 0

Вопрос - как вконтакт меняет контент - при этом, что в адресе у него появляется /name - без префиксов ?...Как это реализовано?

И еще такой вопрос

 

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

Это как-то будет самое автоматически осущевтляться при ajax запросе?

Link to comment
Share on other sites

  • 0

контакт меняет контент с помощью комбинированного подхода, используются и реальная адресация и ajax . Плюс не забывайте любые ajax запросы могут быть с передачей параметров . А на стороне клиента может использоваться опять же history api технология. В наш век уже не важно что написано в адресной строке, важно какие запросы осуществляются ))

Link to comment
Share on other sites

  • 0

Ничего не поняла - происходит переход по странице - так?
Почему не перезагружается меню?

Адрес можно подделывать в пределах сайта?

Как это все-таки реализовано, если рассмотреть самый простецкий пример?

 

Кстати, может кто-нибудь подскажет - может есть простой вариант движка, в который мне нужно внести данные о товаре - название, бренд товара, доп поля - вроде для поврежденных волос, три лейбла будет - топ продаж, новый, скидка, старая новая цена и описание, +подарок к акции? Как вы думаете - ведь писать подобный костыль вручную - достаточно напряжно или нет? Дело в том, что на странице 3х уровневое меню, где можно выбрать - и тип товара, и бренд товара - выводятся эти айтемы и их нужно динамически перезагружать...

Edited by Zverushka
Link to comment
Share on other sites

  • 0

про движки не скажу, переход по странице блокируется js, чтобы не грузить все что там есть и запрашивается через ajax. php анализирует адрес страницы которую запросили и отдает скажем только контентную часть, js естестно вставляет ее на странице и меняет в адресной строке адрес, типа мы перешли на нужную нам страничку. Как уже говорилось выше подобное реализуется Hystory api

Link to comment
Share on other sites

  • 0

По поводу первой части вопроса, если клиенту это нужно для индексации сайта, то есть следующее:

https://support.google.com/webmasters/answer/174992?hl=ru для поисковика Google и http://help.yandex.ru/webmaster/robot-workings/ajax-indexing.xml для Yandex.

 

Коротко:

Роботы и Google и Yandex могут проиндексировать ajax сайт, если

 

 

структура сайта подчиняется определенным правилам.

Каждая индексируемая AJAX-страница должна иметь HTML-версию. Чтобы показать роботу наличие HTML-версии страницы, включите восклицательный знак в URL страницы:

http://www.example.com/#blog   >   http://www.example.com/#!blog

Обнаружив в ссылке на страницу сочетание «#!», робот запросит HTML-версию.

 HTML-версия контента этой страницы размещается на URL, где #! заменен на ?_escaped_fragment_=.

 
Edited by Анна
  • Like 1
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy