Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   Разработка юмор-портала (https://forum.antichat.xyz/showthread.php?t=68320)

Ru}{eeZ 24.04.2008 23:20

Разработка юмор-портала
 
Решил создать юморной сайт цытатник с анекдотами. Всё продумав я понял, что на пути ещё много проблем. В этой теме я решил их задавать по одной.
Один вариант вёрсти вы можете посмотреть по адресу http://ptv.spb.su/ , второе в прикреплённых файлах.

Можете внести свои предложения, а за одно можете помотреть подобные сайты анекдотники/цетатники:
http://bash.org.ru/
http://www.thehumor.ru/
http://anekdots.ru/

Первый вопрос:
Как сделать, чтобы один шаблон использовался для всех страниц как это делает DLE, т.е. каждая страница брала его и подгружал в свою информацию. Или мне придётся сделать, как я это делал всегда, ... т.е. создать папку system и накидать в неё файлов наподобие "header.php", "footer.php", "module.php", название файлов говорит само за себя, а точнее в них верх страницы, низ, всякие титлы и т.д. ... и создавать всё новые страницы и вписывать в них <? echo $... ?>
Вот и вопрос...

.:EnoT:. 24.04.2008 23:54

Ну например делаешь два файла header.php и footer.php и в них делаешь диз. Потом в каждый файл инклудишь эти два файла и соответственно то что у тебя будет между твоими файлми то и будет основным контентом. Способ стар как мир, но в целом для небольших проектов, как например ты хочешь цитатник замутить вполне пойдёт.
Простой пример:
PHP код:

#header.php
<html><head><title>Превед</title></head>
<
body>
<
div align="center">

#Остальные файлы
Приветствую вас на моём бомжатском сайте ))

#footer.php
</div></body></html

Но если хочешь делать с шаблонизаторами, то почитай хотя бы вот эту статейку http://www.codenet.ru/webmast/php/Templater.php не прям супер, но хотя бы поймёшь принцип шаблонизаторов.

nerezus 24.04.2008 23:55

Mvc, Xslt

SchmeL 25.04.2008 07:23

хм, я так понимаю хочешь на своей собственной cms сделать?...тогда да - используй как говорилось выше шаблонизатор, если нет то имхо лучше взять уже написанную cms.

nerezus 25.04.2008 08:52

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

Ru}{eeZ 25.04.2008 13:21

Цитата:

Сообщение от nerezus
Прежде чем писать программы для веб, автору темы надо научиться просто писать программы.

Чегото я не понял смысла этого сообщения, и что означает "просто писать программы"?

Ru}{eeZ 25.04.2008 13:23

Цитата:

Сообщение от .:EnoT:.
Ну например делаешь два файла header.php и footer.php и в них делаешь диз. Потом в каждый файл инклудишь эти два файла и соответственно то что у тебя будет между твоими файлми то и будет основным контентом. Способ стар как мир, но в целом для небольших проектов, как например ты хочешь цитатник замутить вполне пойдёт.
Простой пример:
PHP код:

#header.php
<html><head><title>Превед</title></head>
<
body>
<
div align="center">

#Остальные файлы
Приветствую вас на моём бомжатском сайте ))

#footer.php
</div></body></html


Ну этот способ как я понял аналогичен моему :) , только я не совсем понял как его осуществить....

А насчёт ссылки - там с мускулами (я их сейчас изучаю, но не хотелось бы пока применять), но впринципе если врубиться, то можно и переработать.

krypt3r 25.04.2008 14:01

Цитата:

только я не совсем понял как его осуществить....
Все просто. В корне своего йуморного сайта создаешь каталог system. Кидаешь в этот каталог файл header.php следующего содержания
PHP код:

<html><head><title>Превед</title></head
<
body
<
div align="center"

Туда же кидаешь файл footer.php
PHP код:

</div></body></html

В корень сайта кладешь index.php
PHP код:

<?php
  
include 'system/header.php';
  ...
?>
...
Приветствую вас на моём бомжатском сайте ))
...
<?php
...
  include 
'system/footer.php';
?>

В остальных скриптах делаешь точно также - в начале скрипта инклудишь хедер, в конце - футер

Ru}{eeZ 25.04.2008 14:07

Ладно, понял, сделаю старым способом, а потом перейду на смарти... И так - далее...

В таких системах, как Dle, Php-nuke и т.д. реализована такая хрень, что создаётся куча страниц и внизу ссылки на переходы по ним, т.е. [1] [2] [3] [4]... так вот, как я понимаю, все статьи заносятся в мускулы, забиваются под эти цифры и при переходах они подгружаются. И ещё не понятно, страницы ведь не создаются ([1] [2] [3] [4]...) в файлах, а просто как-то подгружаются в определённый шаблон... как ето есть???

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

Конечно сложный вопрос, сложно объяснить и сложно было задать, на всякий случай прошу по-подробнее:)

Ru}{eeZ 25.04.2008 14:09

Цитата:

Сообщение от krypt3r
Все просто. В корне своего йуморного сайта создаешь каталог system. Кидаешь в этот каталог файл header.php следующего содержания
PHP код:

<html><head><title>Превед</title></head
<
body
<
div align="center"

Туда же кидаешь файл footer.php
...


Фореве, чел :p , это и есть мой старый способ! :D

krypt3r 25.04.2008 14:18

А в новом тогда замени include на require =)

Ru}{eeZ 25.04.2008 14:23

Цитата:

Сообщение от krypt3r
А в новом тогда замени include на require =)

:D , не, я лучше пока старым способом (в том числе так-же как ты сказал :D ) а потом перейду на смарти

Ru}{eeZ 25.04.2008 14:26

АП!!!

Цитата:

Сообщение от Ru}{eeZ
Ладно, понял, сделаю старым способом, а потом перейду на смарти... И так - далее...

В таких системах, как Dle, Php-nuke и т.д. реализована такая хрень, что создаётся куча страниц и внизу ссылки на переходы по ним, т.е. [1] [2] [3] [4]... так вот, как я понимаю, все статьи заносятся в мускулы, забиваются под эти цифры и при переходах они подгружаются. И ещё не понятно, страницы ведь не создаются ([1] [2] [3] [4]...) в файлах, а просто как-то подгружаются в определённый шаблон... как ето есть???

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

Конечно сложный вопрос, сложно объяснить и сложно было задать, на всякий случай прошу по-подробнее:)


Ru}{eeZ 25.04.2008 15:18

ещё:
анекдоты и цитаты будут храниться в .dat файлах (или .txt) в папке tut (к примеру), чтобы скрипты могли различать один анекдот от другого их наверное нужно разделять какими-то определёнными символами, например "&_" + номер анекдота (если с номерами, то думаю, если не решить вопрос выше, то можно создать несколько страниц и в них указать типа "показывать анекдоты с &_1 по &_10, на следующей странице &_11-&_20...), и ещё всё это добро мне кажется нужно будет поместить в <pre>, это к тому, что не только я буду добавлять анекдоты, но и пользователи, через формы, и они-то я думаю не будут писать на html :D )) т.е. будет:

<pre>
&_1
- И что у вас есть в кремле?
- Ну... царь-колокол! Только он не звонит!
- Ага а ещё?
- Царь-пушка! Только она не стреляет!
- Гы! А ещё что есть?
- А ещё есть Дума...
&_2
У адвоката спрашивают:
- Сколько вы берёте?
- 1000 долларов за 3 вопроса.
- Так дорого?
- Да. И каков будет ваш третий вопрос?
&_3
Женщины бывают двух типов:
- Прелесть какая глупенькая...
- Ужас какая дура!!!
</pre>

Дюша 25.04.2008 15:58

Цитата:

просто как-то подгружаются в определённый шаблон
просто подгружают таблицу на нужные данные

Дюша 25.04.2008 16:02

тебе надоест добавлять, возьми цитатник иссиса на сорцы какрсас под учишь php + myqsl

zythar 25.04.2008 16:26

тс
а че бд не юзаешь?
с файлами гемор имхо. учи Sql

nerezus 25.04.2008 17:10

Так. Автор не умеет программировать, но сразу взялся за веб.
Последствия:
1) Куча ошибок.
2) Нерасширяемость архитектуры. Хотя в данном примере даже до гаденькой архитектуры далеко.

Советую прочитать хорошие книжки по программированию либо много заниматься практикой. И тем более не спрашивать таких вопросов, а думать над их реализацией.

Ru}{eeZ 25.04.2008 18:14

Цитата:

Сообщение от nerezus
Советую прочитать хорошие книжки по программированию либо много заниматься практикой. И тем более не спрашивать таких вопросов, а думать над их реализацией.

Странно, а я думал, что здесь делятся опытом и помогают другим...

п.с. кому не сложно - ответьте пожалуйста на мои вопросы
п.с.2. мускулы немного поизучал, но не хочу пока к ним примыкать, пока лучше с файлами поработаю

VenTeL 25.04.2008 18:47

А мой совет - это тебе надо сначало потусить на www.ucoz.ru
Регани там себе сайт и по тренируйся по делай там шаблонов себе на сайт глядишь уже многое познаешь!!!!!:)))

SchmeL 25.04.2008 18:58

Цитата:

ещё:
анекдоты и цитаты будут храниться в .dat файлах (или .txt) в папке tut (к примеру), чтобы скрипты могли различать один анекдот от другого их наверное нужно разделять какими-то определёнными символами, например "&_" + номер анекдота (если с номерами, то думаю, если не решить вопрос выше, то можно создать несколько страниц и в них указать типа "показывать анекдоты с &_1 по &_10, на следующей странице &_11-&_20...), и ещё всё это добро мне кажется нужно будет поместить в <pre>, это к тому, что не только я буду добавлять анекдоты, но и пользователи, через формы, и они-то я думаю не будут писать на html ))
без капчи тебя спапом за 4 дня завалят

nerezus 25.04.2008 19:06

Цитата:

Странно, а я думал, что здесь делятся опытом и помогают другим...
Я тебе помог советом - смотри мой первый пост. А ты им не воспользовался - значит помощь тебе совсем не нужна и ты нас дуришь.
Как некрасиво.

NOmeR1 25.04.2008 20:54

Кстате, вопрос очень интересен, но тут масса вариантов. Я обычно делаю так:
Вначале создаю файл шаблона.
Код:

<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
Код:

<?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
Код:

include('func_tpl.php');
Вот пример работы с этой функцией
Код:

<?php
        echo Templated(array(
                // {
                        'TITLE' => 'Это заменится на {TITLE}',
                        'NAVIGATION' => 'Это заменится на {NAVIGATION}',
                        'CONTENT' => 'Это заменится на {CONTENT}'
                // }
        ));
?>


InfernoNet 25.04.2008 21:29

Цитата:

Сообщение от Ru}{eeZ
ещё:
анекдоты и цитаты будут храниться в .dat файлах (или .txt) в папке tut

Собственно сам изучаю от лени всё на практике, даже жалею, нужно книжку почитать будет.
А так вот тебе похожие: https://forum.antichat.ru/thread66464.html

Ru}{eeZ 26.04.2008 00:28

NOmeR1, спасибо большое! Ты для меня мини-Америку открыл))

я создал файл func_tpl.php в одной папке с main.php, немного изменил код:
Код:

<?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

InfernoNet 26.04.2008 01:39

Цитата:

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

Ru}{eeZ 26.04.2008 01:46

ой, теперь то я понял почему у меня страница повторялась, просто в сам фалй main.php не нужно было вставлять include('func_tpl.php');...))))

InfernoNet 26.04.2008 02:13

Если не сложно, объясните мне подетально вот этот код, а то ни черта не понимаю:
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;
    }
?>


Ru}{eeZ 26.04.2008 02:22

Как я понял, этот файл задаёт азы смарти, т.е.
$content = str_replace('{'.$tag.'}', $value, $content); // то, что между символами "{" и "}" - объекты смарти. Остальное разные пропорции....

NOmeR1 26.04.2008 09:09

Код:

<?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; // Возвращаем получившийся исходник
        }
?>

Как видно, ничего проще нет

Ru}{eeZ 26.04.2008 14:33

теперь.... как сделать, чтобы в {content} подгружались анекдоты не создавая при этом новых страниц. И все страницы, по которым будут ходить пользователи тоже не нужно было создавать, а просто, чтобы в них подгружалась информация.

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

NOmeR1 26.04.2008 14:39

Проще за тебя написать сайт, чем тебе всё разжовывать, ведь ты всё ровно ничего не поймёшь. Задавать вопросы, не зная язык програмирования - это только тратить своё и чужое время. И ещё, если ты не заметил, я это уже объяснил.

Ru}{eeZ 26.04.2008 16:48

С шаблонами разобрался... кому надо - спрашивайте...
```````````````````````````````````````
Пока вот что получается... http://depositfiles.com/files/4979477

Ru}{eeZ 29.04.2008 19:28

Сейчас пишу модуль добавления контента

Вот форма:
Код:

<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"; из набора символов придумать не смог, чтобы пользователи не ввели их в поля, но я думаю, что на это можно будет поставить ограничения.

InfernoNet 29.04.2008 19:42

Кстати, тоже интересует похожий вопрос, как сделать так, чтоб информацию вписать перед добавленной информацией, а не после. И еще как поставить фильтры на формы. К примеру писать в данной строке можно только цифры, а где-то только буквы и ограничение по кол-ву символов на строке.

NOmeR1 30.04.2008 11:23

Вы дали недостаточно информации.
Я тут попарился, написал небольшой новостной движок основанный на шаблонах.
http://dump.ru/files/p/p19804734/

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

Ru}{eeZ 30.04.2008 12:09

Спасибо конечно за скрипт, классная штука, только ошибок много, буквально на каждой странице...
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
и т.д.

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


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

InfernoNet 30.04.2008 17:33

Цитата:

Сообщение от NOmeR1
Если честно, я вообще не понимаю, зачем вам сайт? Выебнуться перед друзьями? Если и есть нормальная причина, то зачем писать новый движок? Тем более у вас нет навыков програмирования на PHP. Да и вообще, для таких вещей хватило бы и хтмл'а. Ещё раз говорю, это пустая трата своего и чужого времени.

Я не пишу движок. Я познаю язык и просто пытаюсь влезть куда нибудь, чтобы узнать больше.
Кстати вопрос по поводу фильтра актуален.
NOmeR1, если допишешь движок так, чтоб каждая новость открывалась на отдельной странице и на этой отдельной странице можно было добавить еще какую-то инфу к этой новости которой не будет на главной странице, тогда будет прекрасно.
Ru}{eeZ, зетестил, движок прекрасно работает.

Ru}{eeZ 02.05.2008 22:18

Мои вопросы ещё актуальны
Кстати, NOmeR1, огромное спасибо за движок, отличная вещь, особенно для изучения

Ru}{eeZ 10.05.2008 23:35

ап


Время: 04:59