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

Тема в разделе "Как сделать...", создана пользователем k0missar, 14 апр 2013.

  1. k0missar

    k0missar

    Регистр.:
    20 сен 2008
    Сообщения:
    200
    Симпатии:
    25
    Есть html шаблоны для сайтов. Что бы не засераться кучей файлов и уменьшить геморойность процесса нужно что бы контент подтягивался из txt файла в зависимости от урла.
    Например при переходе mysite.ru выводился content.txt, при переходе по внутренним страницам сайта соответственно content2.txt content3.txt и т.д.
     
  2. ne4to

    ne4to Постоялец

    Регистр.:
    16 ноя 2012
    Сообщения:
    107
    Симпатии:
    50
    Код:
    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');
    }
     
  3. k0missar

    k0missar

    Регистр.:
    20 сен 2008
    Сообщения:
    200
    Симпатии:
    25
    Соль еще в том что мне нужно чтобы вся обработка была в одном файле. Поковырявшись в мануалах и своих микро знаниях я пришел вот к такой конструкции
    создал файл .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
     
  4. ne4to

    ne4to Постоялец

    Регистр.:
    16 ноя 2012
    Сообщения:
    107
    Симпатии:
    50
    Код:
    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');
     
    k0missar нравится это.
  5. t3s

    t3s

    Регистр.:
    16 фев 2008
    Сообщения:
    719
    Симпатии:
    290
    ne4to, k0missar
    парни, немного туда копаете
    свитч или иф-елсе возможно и прокатит для нескольких файлов, а если их будет десятки или сотни?

    PHP:
    $page $_GET['page'].'txt';
    echo 
    file_get_contents($page);
    + проверки, такие как отсечь лишннее из $_GET или проверить на существование файла
     
  6. k0missar

    k0missar

    Регистр.:
    20 сен 2008
    Сообщения:
    200
    Симпатии:
    25
    Еду дальше и ни как.
    Что я имею.
    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 комментарий.
     
  7. bozzafresco

    bozzafresco Создатель

    Регистр.:
    13 мар 2013
    Сообщения:
    44
    Симпатии:
    9
    Не проще ли взять ЦМСку на файлах простую
    Сгенерить ей конфиг и скормить ваши файлы будет проще, чем сначала писать свой костыль, потом искать баги, а потом каждый раз дописывать функции
     
  8. k0missar

    k0missar

    Регистр.:
    20 сен 2008
    Сообщения:
    200
    Симпатии:
    25
    Было бы проще сделал бы давно так.
     
  9. tan_81

    tan_81 Постоялец

    Регистр.:
    18 окт 2006
    Сообщения:
    128
    Симпатии:
    30
    Эм. Вы цепляете файлы txt, у вас апач настроен распознавать их как php и выполнять?
    Да и вообще при чем здесь file_get_contents... Вам include/require надо
     
  10. k0missar

    k0missar

    Регистр.:
    20 сен 2008
    Сообщения:
    200
    Симпатии:
    25
    Думаю если бы не был настроен то он бы не выводил содержимое текстов ниже.
    Вы кодом можете пример привести, выводил инклудом но тут посоветовали file_get_contents