Как вывести содержимое текстового файла в зависимости от урла

k0missar

Знаток
Регистрация
20 Сен 2008
Сообщения
200
Реакции
25
Есть html шаблоны для сайтов. Что бы не засераться кучей файлов и уменьшить геморойность процесса нужно что бы контент подтягивался из txt файла в зависимости от урла.
Например при переходе mysite.ru выводился content.txt, при переходе по внутренним страницам сайта соответственно content2.txt content3.txt и т.д.
 
Код:
if($_SERVER['REQUEST_URI'] == '/test')
{
echo file_get_contents('content2.txt');
}
elseif($_SERVER['REQUEST_URI'] == '/test1')
{
echo file_get_contents('content3.txt');
}
else
{
echo file_get_contents('content.txt');
}
 
Соль еще в том что мне нужно чтобы вся обработка была в одном файле. Поковырявшись в мануалах и своих микро знаниях я пришел вот к такой конструкции
создал файл .htaccess
PHP:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-z0-9]+) index.php?page=$1
и файл index.php
PHP:
<?php
$a=$_GET['page'];
switch ($a) {
                case false; include('article/content1.txt'); break;
                case "index2"; include('article/content2.txt'); break;
                case "index3"; include('article/content3.txt'); break;               
}
?>

Следующая задача, которую нужно решить - это чтобы в адресной строке оканчивалось расширением html
Например, /index2.html
 
Код:
RewriteRule ^([a-z0-9]+) index.php?page=$1
заменить на

Код:
RewriteRule ^([a-z0-9\.]+) index.php?page=$1


и в case соответственно указывать не index2, а index2.html

и include('article/content3.txt'); лучше заменить на echo file_get_contents('article/content3.txt');
 
ne4to, k0missar
парни, немного туда копаете
свитч или иф-елсе возможно и прокатит для нескольких файлов, а если их будет десятки или сотни?

PHP:
$page = $_GET['page'].'txt';
echo file_get_contents($page);
+ проверки, такие как отсечь лишннее из $_GET или проверить на существование файла
 
Еду дальше и ни как.
Что я имею.
htaccess
Код:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([a-z0-9\.]+) index.php?page=$1
и файл index.php
PHP:
<?php
    echo file_get_contents('header.php');
?>
 
        <div id="service">
            <?php
                $a=$_GET['page'];
                switch ($a) {
                    case false; echo file_get_contents('article/content1.txt'); break;
                    case "company.html"; echo file_get_contents('article/company.txt'); break;
                    case "contacts.html"; echo file_get_contents('article/contacts.txt'); break;
                    case "programs.html"; echo file_get_contents('article/programs.txt'); break;               
                }
            ?>
                <!-- end vector -->
       
        </div><!-- end service-->
    </div> <!--! end container -->
   
 
<?php
    echo file_get_contents('footer.php');
?>
который в нужный div блок мне выводит необходимый контент.
Это все работает, но таким же макаром я хотел подключить и вывод мета тегов дискрипшн, кейворд и тителе.
Т.е. предполагаетя наличие директории title с текстовыми файлами идентичными по названию с текстовыми файлами статей но содержащие
Код:
<title>blablabla</title>
<meta>
Но использую такой же код в header.php и изменив article/.....txt на title/.....txt, код
PHP:
<?php
                $t=$_GET['page'];
                switch ($t) {
                    case false; echo file_get_contents('title/content1.txt'); break;
                    case "company.html"; echo file_get_contents('title/company.txt'); break;
                    case "contacts.html"; echo file_get_contents('title/contacts.txt'); break;
                    case "programs.html"; echo file_get_contents('title/programs.txt'); break;               
                }
    ?>
Переменная у меня была хоть a хоть t
Результат одинаков, вместо вывода данных из текста я получаю вот такую ерунду
Код:
<!--?php
                $t=$_GET['page'];
                switch ($t) {
                    case false; echo file_get_contents('title/content1.txt'); break;
                    case "company.html"; echo file_get_contents('title/company.txt'); break;
                    case "contacts.html"; echo file_get_contents('title/contacts.txt'); break;
                    case "programs.html"; echo file_get_contents('title/programs.txt'); break;               
                }
    ?-->
Не знаю почему он добавляет эти -- и получается не php код а html комментарий.
 
Не проще ли взять ЦМСку на файлах простую
Сгенерить ей конфиг и скормить ваши файлы будет проще, чем сначала писать свой костыль, потом искать баги, а потом каждый раз дописывать функции
 
Не проще ли взять ЦМСку на файлах простую
Сгенерить ей конфиг и скормить ваши файлы будет проще, чем сначала писать свой костыль, потом искать баги, а потом каждый раз дописывать функции
Было бы проще сделал бы давно так.
 
Еду дальше и ни как.

Результат одинаков, вместо вывода данных из текста я получаю вот такую ерунду
Код:
<!--?php
                $t=$_GET['page'];
                switch ($t) {
                    case false; echo file_get_contents('title/content1.txt'); break;
                    case "company.html"; echo file_get_contents('title/company.txt'); break;
                    case "contacts.html"; echo file_get_contents('title/contacts.txt'); break;
                    case "programs.html"; echo file_get_contents('title/programs.txt'); break;         
                }
    ?-->
Не знаю почему он добавляет эти -- и получается не php код а html комментарий.
Эм. Вы цепляете файлы txt, у вас апач настроен распознавать их как php и выполнять?
Да и вообще при чем здесь file_get_contents... Вам include/require надо
 
Эм. Вы цепляете файлы txt, у вас апач настроен распознавать их как php и выполнять?
Да и вообще при чем здесь file_get_contents... Вам include/require надо
Думаю если бы не был настроен то он бы не выводил содержимое текстов ниже.
Вы кодом можете пример привести, выводил инклудом но тут посоветовали file_get_contents
 
Назад
Сверху