PavelScron
@PavelScron

Натяжка на WP — как реализовать вывод страницы на странице?

Натягиваем на ВП данный html шаблон

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

подскажите как лучше на WP реализовать вывод такой же этих страниц с разделов чтобы это были при обычные wp страницы(блог, записи, страница с портфолио)?
  • Вопрос задан
  • 242 просмотра
Пригласить эксперта
Ответы на вопрос 1
alone_lion1987
@alone_lion1987
Веб-разработчик
Так как это по сути модальные окошки на главной странице можно поступить следующим образом, приведу часть кода с реального проекта, может поможет:

В стандартном, а точнее настраиваемом ( get_posts( ... ) ) Loop WordPress выводим что хотим, ну к примеру пускай постами (пускай они обязательно относятся к одной какой то интересующей категории, назовем ее как нибудь, исходя из твоего контекста, я бы назвал рубрику Главная):

<?php
$posts = get_posts(array(
   'numberposts' => -1,
   'offset' => 0,
   'category' => 'номер категории твоей интересующей — id, число, подсмотреть в админке можно',
   'orderby' => 'post_date',
   'order' => 'ASC',
   'post_type' => 'post',
   'post_status' => 'publish'
));
foreach($posts as $post){ 
   setup_postdata($post);  
   // формат вывода
	$id = str_replace('/', '', str_replace('http://' . $_SERVER['SERVER_NAME'], '', get_the_permalink()));
        // возьмем к примеру, что h2, а в нем a ссылка — это тот элемент, по клику на который вылазит модальное окно
        <h2><a href="#" data-toggle="modal" data-target="#<?= $id ?>"><? the_title() ?></a></h2>
        <div class="modal fade" id="<?= $id ?>" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
   <div class="modal-dialog">
      <div class="modal-content">
         <button type="button" class="close" data-dismiss="modal" aria-hidden="true"></button>
            <div class="modal-body">
               <?the_content()?>
             </div>
          </div>
      </div>
    </div>
}  
wp_reset_postdata();
if(isset($_GET['post_id']) && !empty($_GET['post_id'])){
   $post_id = trim(strip_tags($_GET['post_id']));
       ?>
          <script>
             $(function(){
                  $('#<?=$post_id?>').modal();
              });
           </script>
         <?
 }


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

В файле functions.php:

function my_single_template($single)
{
    global $wp_query, $post;
    foreach ((array)get_the_category() as $cat) {
        if (file_exists(get_template_directory() . '/single-' . $cat->slug . '.php')) {
            return get_template_directory() . '/single-' . $cat->slug . '.php';
        } elseif (file_exists('/single-' . $cat->term_id . '.php')) {
            return get_template_directory() . '/single-' . $cat->term_id . '.php';
        }
    }
}

// подключим еще jquery, если в твоей теме он не используется, ну можно как то так, так как он нужен модальных окон бутстрап
function my_scripts_method()
{
    wp_deregister_script('jquery');
    wp_register_script('jquery', 'http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js');
    wp_enqueue_script('jquery');
}
add_action('wp_enqueue_scripts', 'my_scripts_method');


Потом идем и создаем файл в теме single-{слаг-категории}.php, отвечающий за показ отдельного поста, относящийся к твоей интересующей категории, в нем надо задать будет:

<?php
header('Location: http://' . $_SERVER["SERVER_NAME"] . '/?post_id=' . str_replace('/', '', str_replace('http://' . $_SERVER['SERVER_NAME'], '', get_the_permalink($post->ID))));
exit;


Это надо чтобы не переходило на url такого поста, а открывало модальное окно определенное на главной.

Проблематика была схожая в одном из моих проектов, решение рабочее. Как я уже сказал, ранее

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


Нужно смотреть и адаптировать под себя:
  • Разметку модальных окон в твоей теме
  • В том месте, где окно вызывается в бутстрапе через .modal( ... ) надо заменить на вызов показа модального окна соответственно в твоих Js modal, а там уже смотри сам как работает вызов


P.S: Шаблон прикольный, кстати)
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Похожие вопросы