С PHP, как я смогу загрузить привязанный раздел в моем шаблоне контента, основанный на id, прочитанном из имени файла? - PullRequest
2 голосов
/ 13 марта 2019

Так вот мой макет:

    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 (поскольку идентификатор не может начинаться с цифры, я назвал его сначала с помощью ap) .. Почему он загружает всю страницу, а не только содержимое моего <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 Ответ

0 голосов
/ 14 марта 2019

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

Итак, я получил его на работу!

Сначала мой 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]; ?>

...