@f_u_s_s
Любопытный кодер

Как правильно реализовать ссылки на записи в модальном окне?

Натягиваю шаблон на WP, столкнулся с такой проблемой: дело в том, что все посты открываются в модальном окне (использую Magnific Popup). Соответственно если я захочу отправить ссылку на конкретный пост - у меня ничего не выйдет, т.к. в адресной строке у меня корневой адрес сайта. Временно решил проблему с помощью JX:
ссылкам на посты задал параметр rel="<?php $post->ID; ?>", и прописал в JS файл такой код:
$('.grid_item a').click(function(){
        location.hash = $(this).attr('rel');
});
var required_uri = location.href;
var post_id = required_uri.split('#')[1]; 
if(empty(post_id) == false)
{
    $.magnificPopup.open({
        items: {
                src: '/?p='+post_id,
                type: 'ajax'
        },
        mainClass: 'mfp-fade', 
        gallery:{
            enabled:true
        }
    });
}


Но это не ведь не совсем верное решение. Я частично решил проблему - функция, которая подпихивает адрес в адресную строку без перезагрузки:
function setLocation(curLoc){
    try {
      history.pushState(null, null, curLoc);
      return;
    } catch(e) {}
    location.hash = '#' + curLoc;
}


Не совсем верно работает в старых браузерах, но с этим потом. Сейчас проблема вот в чем: если я юзаю эту функцию - подставляется реальный адрес записи. Но если я обновлю страницу - то WP загрузит ее не в модальном окне, а на странице по шаблону single.php, а он имеет сл. вид:
<?php 
$thumbnail_attributes = wp_get_attachment_image_src( get_post_thumbnail_id(), 'full' );
?>
<div class="single_post">
	<div class="post_image">
		<img src="<? echo $thumbnail_attributes[0]; ?>" />
	</div>
	<div class="post_header">
		<h1><?php the_title(); ?></h1>
	</div>
	<div class="post_text">
		<?php while (have_posts()): the_post();?>
		<?php the_content();?>
	</div>
		<?php
			if ( comments_open() || get_comments_number() ) : ?>
				<div class="post_comment">
					<?php comments_template(); ?>
				</div>
			<?php endif; ?>
		?>
	<?php endwhile; ?>
</div>

Тут не случайно отсутствуют get_header() и get_footer() - мне не нужны еще раз стили и JS в модальном окне, а если их оставить - то у меня происходит наслоение событий открытия окна...

Вопрос вот в чем: как мне все запросы на посты (site.ru/2016/12/21/post-tittle/) открывать в модальном окне на главной странице? В какую сторону копать маны?)
  • Вопрос задан
  • 227 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы