X   Сообщение сайта
(Сообщение закроется через 3 секунды)



 

Здравствуйте, гость (

| Вход | Регистрация )

2 страниц V   1 2 >
Открыть тему
Тема закрыта
> Легкая CMS для малостраничных сайтов
alexperec
alexperec
Topic Starter сообщение 22.8.2011, 19:31; Ответить: alexperec
Сообщение #1


Если вы еще не читали, вначеле советую прочитать Урок: основы PHP программирования

Пока появилось время решил заняться делом. А именно в качестве бонуса к своей конкурсной работе написать небольшую супер мини легкую CMS. Работает она на файлах, без использования баз данных. Что идеально подходит для небольших малостраничных сайтов, сателлитов, доров и т.д. Благодаря тому, что базы данных не нужны, и плюс ко всему, сам PHP не создаст практически никакой нагрузки на сервер, то можно найти более, даже значительно дешевый, или вовсе бесплатный хостинг для своих сайтов.

Функционал данной CMS не велик, только вывод страниц, но как говорится было бы желание и нет ничего невозможного. Однако, еще есть ЧПУ и админка, с функцией добавления новых страниц (без редактирования имеющихся).

Теперь суть работы с разбором полетов:

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

В данном скрипте я использовал файл .htaccess, который будет выполнять роль ЧПУ, а скрипту передавать нужные данные из адресной строки - имя страницы, по которому скрипт загрузит нужный файл.

Уже известной нам функцией file() мы будем считывать эти файлы построчно, создавая массив из четырех элементов. Потом каждый из элементов массива поместим в шаблон в соответствующие теги и выведем все это на экран.

Теперь ближе «к коду»)) :

код файла index.php с коментариями
$url=$_GET['url']; //получаем переменную url, посланную нам редиректом .htaccess, методом GET
$content=file("$url"); // читаем нужный файл в массив (переменная url содержит имя файла с расширением)
include ('theme/main.html'); // подключаем файл шаблона. функция include() подключает файлы к коду. не просто открывает, а именно ПОДКЛЮЧАЕТ! т.е. файл открытый её будет внедрен в код программы. В данном случае она задействована для того чтобы в шаблоне работала переменная $content


как видите всего ТРИ строки кода, но все прекрасно работает!

код файла .htaccess:
DirectoryIndex main.html
RewriteEngine on
RewriteRule ^([a-zA-Z0-9-]+).html$  index.php?url=$1.html [L]


первой строкой мы указываем главную страницу сайта
вторая строка включает (разрешает) редиректы
треться строка собственно сам редирект. редирект написан с помощью регулярных выражений. [a-zA-Z0-9-] - означает что может содержаться любые символы лат. алфавита и цифры, а также тире. плюс за этим выр-ем значит, что таких символов может быть сколько угодно, но не меньше одного. далее за таким набором символов долно следовать расширение .html. скобки служат для сохранения данных, чтоб мы из потом могли вставить в следующее выражение index.php?url=$1.html на место $1. знак доллара после .html означает конец первого выр-ия.

файл админки admin.php:
if (!isset($_POST['is'])) {  // если переменная is не передана, то:
include ('admin.html');  // подключаем файл admin.html с формой добавления страниц
}
else { // если переменная is передана, то:
$name="../".$_POST['url'].".html";  // переменной $name присваиваем имя начинающееся с ../ потом следует текст из переменной url полученой из формы добавления новости, в качестве ЧПУ и имени файла, потом следует расширение .html; следует заметить, что точка "." означает "приклеить к имеющемуся". т.е к "../" мы приклеим значение $_POST['url'], а к этому еще далее приклеим расширение - и получим путь к файлу, который теперь содержит  $name
fopen ($name, "a+"); // создаем новый файл. путь к нужному каталогу и имя файла содержит $name.


file_put_contents ($name, $_POST['title']."\r\n" , FILE_APPEND); // функция file_put_contents() записывает строку в файл. здесь мы записываем в файл $name данные полученные из формы, в данном случае заголовок. к заголовку приклеиваем новую строку (\r\n). FILE_APPEND - это так называемый флаг, указывает, чьто строку надо записать в конец файла.
file_put_contents ($name, $_POST['desk']."\r\n",FILE_APPEND); // аналогично, благодаря \r\n в предыдущей строке кора, новые данные (описание - дескрипшен) будут записаны с новой строки. и в свою очередь тут мы опять оставляем за собой пустую строку для следующих данных.
file_put_contents ($name, $_POST['keyword']."\r\n",FILE_APPEND); //  аналогично
file_put_contents ($name, $_POST['cont'],FILE_APPEND); //  строка с данными последняя, поэтому пустую строку оставлять не следует, т.к. она не нужна - "\r\n" здесь не пишем


echo '<h2><a href=/admin/admin.php>В админку</a></h2><br><br><br><h2><a href=/ target=blank>Перейти на сайт</a></h2>'; // выводим ссылки чтоб вернуться в админку или уйти на сайт
}


этот файл немного похож по своему строению на файл админки из динамических блоков

HTML код страницы редактора админки:
<html>
    <head>
        <title>АДМИНКА</title>
                <script type=text/javascript src=scripts/wysiwyg.js></script>
        <script type=text/javascript src=scripts/wysiwyg-settings.js></script>
                <script type=text/javascript>
            WYSIWYG.attach('textarea1');
            </script>
    </head>
    <body>
    <table>
  <tr><td>
  <form action=/admin/admin.php  method=post>
  <!-- данные из формы будем посылать файлу /admin/admin.php методом post -->
  Заголовок TITLE:<input type=text name=title />
  <!-- поле для заголовка страницы -->
  <td></tr>
  <tr><td>
  Мета описание:<input type=text name=desk />
  <!-- поле для мета описания -->
  <td></tr>
  <tr><td>
  Ключевые слова:<input type=text name=keyword />
  <!-- поле для ключевых слов -->
  <td></tr>
  <tr><td>
  ЧПУ страницы (только английские буквы,цыфры и тире):<input type=text name=url />
  <!-- поле имени файла, оно же ЧПУ адрес страницы -->
  <td></tr>
  <tr>
  <td><!-- -->
    <input type=text name=cont id=textarea1 />
    <!-- поле для ввода текста страницы. id=textarea1 поставлено специально, чтобы в этом поле выводился HTML редактор -->
    <br>
<input type=checkbox name=is value=yes />
<!-- переключатель, который передает переменную is -->
сохранить<br>
<input type=submit value=отправить />
<!-- кнопка для отправки -->
</form>
    </td>
  </tr>
</table>
</body>
</html>


здесь я использовал готовый бесплатный HTML редактор openwysiwyg_v1.4.7, кстати основной вес дистрибутива он и составляет. непосредственно код движка всего 856 Байт! Остальное шаблон, страницы, редактор

Функционал данной CMS можно естественно расширить, например защатить админку паролем, сделать возможность редактирования уже имеющихся страниц, но все это как будет время, а самое главное как будет желание среди пользователей! :) Ибо что мучиться, если не кому оно не надо. Так что будьте активнее, и будет обновление! :)

Для защиты админки можете переименовать файл admin.php и его каталог, только не забудьте поменять и все пути к нему в других файлах!

За столь красочный дефолтный шалнон не обессутьте :D

Текст тоже взял свой, чтоб права ничьи не нарушать.

переменные шаблона:
<?php echo $content[0]; ?> - title, H1, при желании можно H1 другой из редактора поставить
<?php echo $content[1]; ?> - description
<?php echo $content[2]; ?> - keywords
<?php echo $content[3]; ?> - контент

Пользуйтесь на здоровье! Жду все вопросы, дополнения, пожелания! :)

//////////////////////////////////////////////

P.S. При добавлении новых страниц, следите чтобы не создавать файлов с именем уже существующих! Новые данные будут записаны в конец файла, старые не затрутся, но все-таки лучше так не делать! И вспомните гляньте на код выше, после последней четвертой строки с контентом перенос не оставляется, следовательно если вы запишите еще какието данные, то "новый тайтл" будет дописан в четвертую строку со старым контентом, а это нам не нужно. остальные "новые данные" отображаться нигде не будут, но зачем нам лишняя нагрузка и вес страниц?
0
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
HelenaNois
HelenaNois
сообщение 23.8.2011, 2:08; Ответить: HelenaNois
Сообщение #2


Завидую белой завистью, я в этих кодах, как блондинка в каштанах разбираюсь, т.е. совсем не соображаю :) .
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
alexperec
alexperec
Topic Starter сообщение 23.8.2011, 8:38; Ответить: alexperec
Сообщение #3


elenachkin, поверьте, не много времени прошло с тех пор, когда я сам на подобные листинги смотрел как на китайскую газету. и тоже завидовал тем людям которые все это понимают:-)главное понять суть, выехать, а запомнить функции и операторы дело времени и опыта.
почитайте мой предыдущий урок, возможно он вам поможет)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
alexperec
alexperec
Topic Starter сообщение 25.8.2011, 13:11; Ответить: alexperec
Сообщение #4


Извините друзья, но недожидаюсь вашего на то желания и согласия, я решил заняться доведением CMS до ума :)

Только я вот думаю, оставить так же на файлах, или переписать на базе данных? Кто как считает? Целесообразно отказываться от базы данных? Реально ли найти бесплатный хостинг для CMS на файлах?

В новый дистрибутив войдет следующее:

динамичные страницы и их категории (как в блогах)
статичные страницы
меню категорий дин. страниц
блоки для определенных страниц ( за основу бедет взят http://ruseo.net/moy-modul-dlya-dle-bloki-dlya-opredelennih-stranic-t2535.html)
обратная связь
система шаблонов
админка (на этот раз с защитой :D )
и автоматическая перелинковка

Если есть что добавить в этот список или пожелания - с удовольствием выслушаю! Важно мнение каждого, ибо делается это для всех :)

Завтра обновления не ждите, процесс все-таки трудоемкий, требующий времени :)
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
prolisk
prolisk
сообщение 25.8.2011, 13:34; Ответить: prolisk
Сообщение #5


динамичные страницы и их категории (как в блогах)
статичные страницы
меню категорий дин. страниц
блоки для определенных страниц ( за основу бедет взят Мой модуль для DLE - блоки для определенных страниц)
обратная связь
система шаблонов
админка (на этот раз с защитой )
и автоматическая перелинковка


главное хорошая защита админки.
очень большой плюс в авто перелинковке.

я думаю, с базами лучше, защита повыше, да и места поменьше займет.


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
alexperec
alexperec
Topic Starter сообщение 25.8.2011, 14:11; Ответить: alexperec
Сообщение #6


prolisk, задача стоит написать CMS для простых контентных сайтов с упором на СЕО и ресурсоемкость, для того чтоб можно было использовать CMS как для хороших СДЛ, так и для сателитов, тратится на которые особо нет желания и хочется подыскать дешевый а то и бесплатный хостинг.

Вобщем задача - удешевить в будущем обслуживание сайта. Чтоб не приходилось переплачивать за лишнюю нагрузку, толку от которой ноль и неиспользуемые возможности хостинга
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
airman
airman
сообщение 25.8.2011, 14:15; Ответить: airman
Сообщение #7


alexperec, полностью согласен, сам до сих пор некоторые сайты делаю на хтмл + инклуды, а больше и не надо таким сайтам


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
prolisk
prolisk
сообщение 25.8.2011, 14:21; Ответить: prolisk
Сообщение #8


(alexperec)
prolisk, задача стоит написать CMS для простых контентных сайтов с упором на СЕО и ресурсоемкость, для того чтоб можно было использовать CMS как для хороших СДЛ, так и для сателитов, тратится на которые особо нет желания и хочется подыскать дешевый а то и бесплатный хостинг.

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

согласен, иногда хостинги много бесполезного предоставляют.
(birds)
alexperec, полностью согласен, сам до сих пор некоторые сайты делаю на хтмл + инклуды, а больше и не надо таким сайтам

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


--------------------
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
Nevermind
Nevermind
сообщение 16.12.2011, 14:46; Ответить: Nevermind
Сообщение #9


Небольшим сайтам вообще не нужны многие навороты. Вывод контента и всё. Незачем админка и прочее. Главное, что навесить можно что угодно.
А каркас должен быть СУПЕР простым и давать полную свободу действия.

Вот тоже движок написал недавно для таких целей.
Офсайт и тема на форуме


--------------------
Основной проект: http://jsale.biz
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
alexperec
alexperec
Topic Starter сообщение 17.12.2011, 21:31; Ответить: alexperec
Сообщение #10


Админка нужна, да и функционал минимальный тоже)

Эх, обещал всем этим еще в конце лета заняться доработкой, да времени вообще не в проворот с этой учебой... ((

Вот, надеюсь может после нового года займусь хоть доработкой, пока выходные будут
Вернуться в начало страницы
 
Ответить с цитированием данного сообщения
2 страниц V   1 2 >
Открыть тему
Тема закрыта
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0


Свернуть

> Похожие темы

  Тема Ответов Автор Просмотров Последний ответ
Открытая тема (нет новых ответов) Партнерская программа для Эзотерики, Магии, Таро
партнерка для эзотерики
0 LiveExpert 390 Вчера, 15:13
автор: LiveExpert
Открытая тема (нет новых ответов) Партнерская программа для Эзотерики, Магии, Таро
партнерка для эзотерики
0 LiveExpert 353 Вчера, 15:13
автор: LiveExpert
Горячая тема (нет новых ответов) Тема имеет прикрепленные файлыAzinomoney.com - гемблинг-партнерка с 65%RS для каждого
Гарантированный заработок на гемблинг-трафике
65 AzinoMoney 29198 27.3.2024, 19:10
автор: AzinoMoney
Горячая тема (нет новых ответов) Делаю полностью уникальный дизайн для сайтов!
46 AlexDIZ 93527 26.3.2024, 20:03
автор: AlexDIZ
Открытая тема (нет новых ответов) Продвижение сайтов в ТОП-1 за сутки. Бесплатный тест!
13 matias 3303 26.3.2024, 19:53
автор: matias


 



RSS Текстовая версия Сейчас: 29.3.2024, 16:25
Дизайн