Разработка юмор-портала

Discussion in 'PHP' started by Ru}{eeZ, 24 Apr 2008.

  1. SchmeL

    SchmeL Elder - Старейшина

    Joined:
    16 Jun 2007
    Messages:
    64
    Likes Received:
    38
    Reputations:
    5
    без капчи тебя спапом за 4 дня завалят
     
  2. nerezus

    nerezus Banned

    Joined:
    12 Aug 2004
    Messages:
    3,191
    Likes Received:
    727
    Reputations:
    266
    Я тебе помог советом - смотри мой первый пост. А ты им не воспользовался - значит помощь тебе совсем не нужна и ты нас дуришь.
    Как некрасиво.
     
    1 person likes this.
  3. NOmeR1

    NOmeR1 Everybody lies

    Joined:
    2 Jun 2006
    Messages:
    1,068
    Likes Received:
    783
    Reputations:
    213
    Кстате, вопрос очень интересен, но тут масса вариантов. Я обычно делаю так:
    Вначале создаю файл шаблона.
    Code:
    <html>
    <head>
    <style>
    body {
    background: #3F3F3F;
    }
    table {
    text-size: 11px;
    color: #FFFFFF;
    }
    </style>
    <title>{TITLE}</title>
    </head>
    <body>
    <table align="center" width="70%"><tr><td valign="top" width="30%">
    	{NAVIGATION}
    </td><td valign="top">
    	{CONTENT}
    </td></tr></table>
    </body>
    </html>
    Затем пишу простейшую функцию к примеру в файл func_tpl.php
    Code:
    <?php
    	function Templated($array) {
    		// {
    			$file = 'template/main.php'; // Файл шаблона
    		// }
    		$content = file_get_contents($file);
    		foreach($array as $tag => $value) {
    			$content = str_replace('{'.$tag.'}', $value, $content);
    		}
    		return $content;
    	}
    ?>
    Далее в каждом файле надо будет проинклудить func_tpl.php
    Code:
    include('func_tpl.php');
    Вот пример работы с этой функцией
    Code:
    <?php
    	echo Templated(array(
    		// {
    			'TITLE' => 'Это заменится на {TITLE}',
    			'NAVIGATION' => 'Это заменится на {NAVIGATION}',
    			'CONTENT' => 'Это заменится на {CONTENT}'
    		// }
    	));
    ?>
     
    #23 NOmeR1, 25 Apr 2008
    Last edited: 25 Apr 2008
    2 people like this.
  4. InfernoNet

    InfernoNet Elder - Старейшина

    Joined:
    7 Nov 2007
    Messages:
    248
    Likes Received:
    228
    Reputations:
    -20
    Собственно сам изучаю от лени всё на практике, даже жалею, нужно книжку почитать будет.
    А так вот тебе похожие: /thread66464.html
     
    1 person likes this.
  5. Ru}{eeZ

    Ru}{eeZ Elder - Старейшина

    Joined:
    19 Feb 2008
    Messages:
    454
    Likes Received:
    73
    Reputations:
    -5
    NOmeR1, спасибо большое! Ты для меня мини-Америку открыл))

    я создал файл func_tpl.php в одной папке с main.php, немного изменил код:
    Code:
    <?php
    	function Templated($array) {
    		 $file = 'main.php'; // Файл шаблона
    		 $content = file_get_contents($file);
    		foreach($array as $tag => $value) {
    	         $content = str_replace('{'.$tag.'}', $value, $content);
    		}
    		return $content;
    	}
    	echo Templated(array(
    			'TITLE' => 'Анекдоты',
    			'NAVIGATION' => 'Это заменится на {NAVIGATION}',
    			'CONTENT' => 'Текстовое поле'
    	));
    ?>
    
    Как я понял, это - смарти
    В шаблоне задал теги....
    А как теперь сделать, чтобы 'CONTENT' => 'Текстовое поле' вместо "Текстовое поле" можно было разместить инклуду на файл (menu.php).

    И как ещё теперь сделать, чтобы остальные страницы сайта использовали main.php не создавая для них тогоже кода десять раз?

    ````````````````````````````
    Блин, только сейчас заметил, всё нормально за исключением того, что если каплю прокрутить страницу - там точно такаяже страница за исключением того, что прямо отображается "{CONTENT}" вместо "Текстовое поле", чё за хрень??? :confused:


    то, что получилось: http://depositfiles.com/files/4969383
     
    #25 Ru}{eeZ, 26 Apr 2008
    Last edited: 26 Apr 2008
  6. InfernoNet

    InfernoNet Elder - Старейшина

    Joined:
    7 Nov 2007
    Messages:
    248
    Likes Received:
    228
    Reputations:
    -20
    На каждой странице в коде просто приписывай: include('func_tpl.php');
     
  7. Ru}{eeZ

    Ru}{eeZ Elder - Старейшина

    Joined:
    19 Feb 2008
    Messages:
    454
    Likes Received:
    73
    Reputations:
    -5
    ой, теперь то я понял почему у меня страница повторялась, просто в сам фалй main.php не нужно было вставлять include('func_tpl.php');...))))
     
  8. InfernoNet

    InfernoNet Elder - Старейшина

    Joined:
    7 Nov 2007
    Messages:
    248
    Likes Received:
    228
    Reputations:
    -20
    Если не сложно, объясните мне подетально вот этот код, а то ни черта не понимаю:
    PHP:
    <?php
        
    function Templated($array) {
            
    // {
                
    $file 'template/main.php'// Файл шаблона
            // }
            
    $content file_get_contents($file);
            foreach(
    $array as $tag => $value) {
                
    $content str_replace('{'.$tag.'}'$value$content);
            }
            return 
    $content;
        }
    ?>
     
  9. Ru}{eeZ

    Ru}{eeZ Elder - Старейшина

    Joined:
    19 Feb 2008
    Messages:
    454
    Likes Received:
    73
    Reputations:
    -5
    Как я понял, этот файл задаёт азы смарти, т.е.
    $content = str_replace('{'.$tag.'}', $value, $content); // то, что между символами "{" и "}" - объекты смарти. Остальное разные пропорции....
     
    1 person likes this.
  10. NOmeR1

    NOmeR1 Everybody lies

    Joined:
    2 Jun 2006
    Messages:
    1,068
    Likes Received:
    783
    Reputations:
    213
    Code:
    <?php
    	function Templated($array) {
    		// {
    			$file = 'template/main.php'; [SIZE=1][COLOR=Green]// Файл шаблона[/COLOR][/SIZE]
    		// }
    		$content = file_get_contents($file); [SIZE=1][COLOR=Green]// Получаем исодник шаблона[/COLOR][/SIZE]
    		foreach($array as $tag => $value) { [SIZE=1][COLOR=Green]// Перебираем массив с шаблонными тегами[/COLOR][/SIZE]
    			$content = str_replace('{'.$tag.'}', $value, $content); [SIZE=1][COLOR=Green]// Заменяем в исходнике шаблона {НАЗВАНИЕ_ТЕГА} на значение элемента массива с ключём НАЗВАНИЕ_ТЕГА[/COLOR][/SIZE]
    		}
    		return $content; [SIZE=1][COLOR=Green]// Возвращаем получившийся исходник[/COLOR][/SIZE]
    	}
    ?>
    Как видно, ничего проще нет
     
  11. Ru}{eeZ

    Ru}{eeZ Elder - Старейшина

    Joined:
    19 Feb 2008
    Messages:
    454
    Likes Received:
    73
    Reputations:
    -5
    теперь.... как сделать, чтобы в {content} подгружались анекдоты не создавая при этом новых страниц. И все страницы, по которым будут ходить пользователи тоже не нужно было создавать, а просто, чтобы в них подгружалась информация.

    или хотябы для начала скажите по примеру -
    Раздел меню "О сайте", пользователь переходит по ссылке, а там на самом деле не страница, а шаблон с подгруженным {content} (подгрузка из указанного файла)....
     
  12. NOmeR1

    NOmeR1 Everybody lies

    Joined:
    2 Jun 2006
    Messages:
    1,068
    Likes Received:
    783
    Reputations:
    213
    Проще за тебя написать сайт, чем тебе всё разжовывать, ведь ты всё ровно ничего не поймёшь. Задавать вопросы, не зная язык програмирования - это только тратить своё и чужое время. И ещё, если ты не заметил, я это уже объяснил.
     
  13. Ru}{eeZ

    Ru}{eeZ Elder - Старейшина

    Joined:
    19 Feb 2008
    Messages:
    454
    Likes Received:
    73
    Reputations:
    -5
    С шаблонами разобрался... кому надо - спрашивайте...
    ```````````````````````````````````````
    Пока вот что получается... http://depositfiles.com/files/4979477
     
    #33 Ru}{eeZ, 26 Apr 2008
    Last edited: 26 Apr 2008
  14. Ru}{eeZ

    Ru}{eeZ Elder - Старейшина

    Joined:
    19 Feb 2008
    Messages:
    454
    Likes Received:
    73
    Reputations:
    -5
    Сейчас пишу модуль добавления контента

    Вот форма:
    Code:
    <form method="POST" action="system/news/add.php">
    <table border="0" width="100%">
    <tr><td>
    Ваше имя:</td><td width="85%"><input type="text" name="user_name" style="width: 200px">
    </td><td></td></tr>
    <tr><td>
    Ваш E-mail:</td><td><input type="text" name="email" style="width: 200px">
    </td><td></td></tr>
    <tr><td>
    Автор:</td><td width="85%"><input type="text" name="author" style="width: 200px">
    </td><td></td></tr>
    <tr><td>
    Раздел:</td><td><select name="section" size="1" style="width: 200px">
     <option selected value="kat1">KAT1
     <option value="kat2">KAT2
     <option value="kat3">KAT3
     <option value="kat4">KAT4
    </select>
    </td><td></td></tr>
    <tr><td colspan="2">
    <textarea style="width:100%;height:250px" name="text_news">
    
    </textarea>
    </td></tr>
    <tr><td colspan="2">
    <input type="submit" value="Отправить">
    <input type="reset" value="Очистить">
    </td></tr>
    </table>
    </form>
    
    Вот PHP код:
    PHP:
    <?php
    $user_name 
    $_POST['user_name'];
    $email $_POST['email'];
    $author $_POST['author'];
    $section $_POST['section'];
    $text_news $_POST['text_news'];

    @
    $fp fopen ("news_new.txt""w");
    if (!
    $fp)
    {
     echo 
    "<p>Типа облом...</p>";
     exit;
    }
    $contents "/1<$user_name>/2<$email>/3<$author>/4<$section>/5<$text_news>\n";
    $res fwrite($fp$contents);
    fclose($fp);
    ?>


    1. Как сделать так, чтобы вносимая информация не заменяла старую, а какбы вписывалась перед той?

    2. Как сделать так, чтобы перед каждой новостью появлялась надпись со свойственной ей цыфрой, типа "&_1, &_2, &_3..."?

    3. Как сделать фильтры, чтобы категория (section) и поле для ввода новости (text_news) были обязательными и при отсутствии осуществлялся переход на определённую страницу?

    4. Как сделать, чтобы поле для ввода новостей не принимало новости, которые короче 50и символов и при недопустимом значении происходило перенаправление на туже страниуц, что выше?

    5. Как сделать фильтры на "http://" и "www"? При использовании таковых комбинаций происходит переход на туже страницу, что и выше.

    п.с. Тут ничего умнее, как $contents = "/1<$user_name>/2<$email>/3<$author>/4<$section>/5<$text_news>\n"; из набора символов придумать не смог, чтобы пользователи не ввели их в поля, но я думаю, что на это можно будет поставить ограничения.
     
    #34 Ru}{eeZ, 29 Apr 2008
    Last edited: 29 Apr 2008
  15. InfernoNet

    InfernoNet Elder - Старейшина

    Joined:
    7 Nov 2007
    Messages:
    248
    Likes Received:
    228
    Reputations:
    -20
    Кстати, тоже интересует похожий вопрос, как сделать так, чтоб информацию вписать перед добавленной информацией, а не после. И еще как поставить фильтры на формы. К примеру писать в данной строке можно только цифры, а где-то только буквы и ограничение по кол-ву символов на строке.
     
  16. NOmeR1

    NOmeR1 Everybody lies

    Joined:
    2 Jun 2006
    Messages:
    1,068
    Likes Received:
    783
    Reputations:
    213
    Вы дали недостаточно информации.
    Я тут попарился, написал небольшой новостной движок основанный на шаблонах.
    http://dump.ru/files/p/p19804734/

    Если честно, я вообще не понимаю, зачем вам сайт? Выебнуться перед друзьями? Если и есть нормальная причина, то зачем писать новый движок? Тем более у вас нет навыков програмирования на PHP. Да и вообще, для таких вещей хватило бы и хтмл'а. Ещё раз говорю, это пустая трата своего и чужого времени.
     
    1 person likes this.
  17. Ru}{eeZ

    Ru}{eeZ Elder - Старейшина

    Joined:
    19 Feb 2008
    Messages:
    454
    Likes Received:
    73
    Reputations:
    -5
    Спасибо конечно за скрипт, классная штука, только ошибок много, буквально на каждой странице...
    Notice: Undefined index: login in T:\home\localhost\site\admin.php on line 11

    Notice: Undefined index: login in T:\home\localhost\site\admin.php on line 12

    Notice: Undefined index: password in T:\home\localhost\site\admin.php on line 13

    Notice: Undefined index: do in T:\home\localhost\site\admin.php on line 16

    Notice: Undefined index: do in T:\home\localhost\site\admin.php on line 51
    и т.д.

    И вообще, плсему сражу выебнуться? Надо же ведь с чего-то начинать??? Вот я и учусь, а как видишь начиная на создании новостного движка, интереснее ведь самому создать, чем ипользовате чей-то!


    И всёже, я жду ответов на свои вопросы от тех, кто может помочь!
     
  18. InfernoNet

    InfernoNet Elder - Старейшина

    Joined:
    7 Nov 2007
    Messages:
    248
    Likes Received:
    228
    Reputations:
    -20
    Я не пишу движок. Я познаю язык и просто пытаюсь влезть куда нибудь, чтобы узнать больше.
    Кстати вопрос по поводу фильтра актуален.
    NOmeR1, если допишешь движок так, чтоб каждая новость открывалась на отдельной странице и на этой отдельной странице можно было добавить еще какую-то инфу к этой новости которой не будет на главной странице, тогда будет прекрасно.
    Ru}{eeZ, зетестил, движок прекрасно работает.
     
    #38 InfernoNet, 30 Apr 2008
    Last edited: 30 Apr 2008
    2 people like this.
  19. Ru}{eeZ

    Ru}{eeZ Elder - Старейшина

    Joined:
    19 Feb 2008
    Messages:
    454
    Likes Received:
    73
    Reputations:
    -5
    Мои вопросы ещё актуальны
    Кстати, NOmeR1, огромное спасибо за движок, отличная вещь, особенно для изучения
     
  20. Ru}{eeZ

    Ru}{eeZ Elder - Старейшина

    Joined:
    19 Feb 2008
    Messages:
    454
    Likes Received:
    73
    Reputations:
    -5