С помощью PHP, как бы я смог загрузить привязанный раздел в свой шаблон контента, прочитанный на основе идентификатора из имени файла?

#php #include-path

#php #включить-path

Вопрос:

Итак, вот мой макет:

     randompagenumber.php
             |
             |
           / | header.php
php include -| content.php
            | footer.php
  

В нижнем колонтитуле есть php-скрипт, который вызывает имя файла randompagenumer.php удаляет его расширение и тире в его имени и выводит этот номер имени файла в виде номера страницы в нижнем углу.
(слева или справа, в зависимости от того, четное это число или нечетное).

У меня есть пара страниц (на данный момент 10), я назвал их —1.php, —2.php, —3.php, —4.php, —5.php, —6.php, —7.php, —8.php, —9.php, -10.php, …

Таким образом, скрипт просто превращает их в 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, …

Код, который у меня есть для нижнего колонтитула:

 <?php
$pagenr = basename($_SERVER['PHP_SELF']);
$pagenr = str_replace( array( '.php', '.htm', '.html', '-', '_' ), '', $pagenr ); // Remove extensions and spaces in filename

if ($pagenr % 2 == 0) {
$footlr = "footerlinks";
$pcontainer = "pcontainerl";
} else{
$footlr = "footerrechts";
$pcontainer = "pcontainerr";
}
?>

<div id="<?=$footlr?>">
<div id="pnummer" class="pcontainer"><?=$pagenr?></div>
  

Таким образом, div с идентификатором « <?=$footlr?> » изменил бы имя при проверке четного или нечетного числа и, таким образом, прочитал бы другой стиль css ( #footerlinks и #footerrechts ).

Теперь то, что я пытался выполнить, связано с content.php Я знаю из html, что можно ссылаться на привязки в его собственном файле, и поэтому я попытался получить примерно такой же результат с php, но мне нужно управлять им только для загрузки страницы php, но он выводит весь content.php

Итак, в основном я хотел бы добиться этого, если randompagenumber.php считывает его имя файла (через footer.php ), он загружает содержимое из определенного раздела с идентификатором, соответствующим номеру страницы.

Вот как я мой randompagenumber.php на данный момент выглядит так:

 <?php    
$PageName = str_replace( array( $PageName ),  '#p', $pagenr, $PageName );
?>
<!DOCTYPE html>
<html>
<?php include('templates/pheaderhst.php'); ?>
<?php include("templates/content.php$PageName"); ?>
<?php include('templates/pfooter.php'); ?>
  

Итак, что я здесь сделал, это создаю новую строку с именем PageName, которая вызывает строку pagenr, вычисляемую из footer.php и пусть это повторяется как страница php для загрузки <?php include("templates/content.php$PageName"); ?>

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

Итак, зная, что php-скрипт изменяет имя файла из 006.php чтобы просто ввести число 6, затем измените 6 на #p6 (поскольку идентификатор не может начинаться с числа, я назвал его сначала с помощью p).. Как получилось, что он загружает всю страницу, а не только содержимое моей <section id="p6">content of page 6</section> ?

Для тех, кому интересно, вот как content.php выглядит так;

 <?php
?>
<section id="p1">
<div id="contentwrapperpaginas"><?php echo 'Content from page 1' ?></div>
</section>
<section id="p2">
<div id="contentwrapperpaginas"><?php echo 'Content from page 2' ?></div>
</section>
<section id="p3">
<div id="contentwrapperpaginas"><?php echo 'Content from page 3' ?></div>
</section>
<section id="p4">
<div id="contentwrapperpaginas"><?php echo 'Content from page 4' ?></div>
</section>
<section id="p5">
<div id="contentwrapperpaginas"><?php echo 'Content from page 5' ?></div>
</section>
<section id="p6">
<div id="contentwrapperpaginas"><?php echo 'Content from page 6' ?></div>
</section>
  

Комментарии:

1. Он всегда будет загружать всю страницу, привязка используется для «перехода» к указанному вами разделу

2. Спасибо за быстрый ответ, @RomainB. есть ли способ перечислить только желаемый привязанный элемент при загрузке страницы после вычисления randompagenumber.php число?

Ответ №1:

ОБНОВЛЕНИЕ с решением

Итак, я заставил это работать!

Сначала мой content.php:

 <?php
?>
...some div's with page id's here...
<div id="p5">
<div id="contentwrapperpaginas">Content from page 5</div>
</div>
<div id="p6">
<div id="contentwrapperpaginas"><p style="color:yellow;margin-left:-25px;">Content from page 6</p></div>
</div>
...some more div's with page id's here...
  

Итак, с помощью следующего скрипта я получил возможность загружать только один div и его элементы внутри. Примером, используемым в моем копировании / вставке, будет загрузка <div id="p6"> . Скрипт находится внутри index.php и загружается с помощью <?php echo $content_div[0]; ?> . :

 $url = 'templates/content.php';
$content = file_get_contents($url);
$first_step = explode( '<div id="p6">' , $content );
$content_div = explode("</div>" , $first_step[1] );
  

Решением было изменение <?php include("templates/content.php$pagenr"); ?> на <?php echo $content_div[0]; ?>