PDA

Просмотр полной версии : Разработка юмор-портала


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

#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
Прежде чем писать программы для веб, автору темы надо научиться просто писать программы.

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

Ru}{eeZ
25.04.2008, 13:23
Ну например делаешь два файла header.php и footer.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 следующего содержания

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

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

</div></body></html>

В корень сайта кладешь index.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
Все просто. В корне своего йуморного сайта создаешь каталог system. Кидаешь в этот каталог файл header.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
А в новом тогда замени include на require =)

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

Ru}{eeZ
25.04.2008, 14:26
АП!!!

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

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

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

п.с. кому не сложно - ответьте пожалуйста на мои вопросы
п.с.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
ещё:
анекдоты и цитаты будут храниться в .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
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
$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
Если честно, я вообще не понимаю, зачем вам сайт? Выебнуться перед друзьями? Если и есть нормальная причина, то зачем писать новый движок? Тем более у вас нет навыков програмирования на PHP. Да и вообще, для таких вещей хватило бы и хтмл'а. Ещё раз говорю, это пустая трата своего и чужого времени.
Я не пишу движок. Я познаю язык и просто пытаюсь влезть куда нибудь, чтобы узнать больше.
Кстати вопрос по поводу фильтра актуален.
NOmeR1, если допишешь движок так, чтоб каждая новость открывалась на отдельной странице и на этой отдельной странице можно было добавить еще какую-то инфу к этой новости которой не будет на главной странице, тогда будет прекрасно.
Ru}{eeZ, зетестил, движок прекрасно работает.

Ru}{eeZ
02.05.2008, 22:18
Мои вопросы ещё актуальны
Кстати, NOmeR1, огромное спасибо за движок, отличная вещь, особенно для изучения

Ru}{eeZ
10.05.2008, 23:35
ап