Написание движка на PHP
У меня появилась одна задача и мне её обязательно надо выполнить.
Я создаю портал. Портал планируется крупный, на нескольких субдоменах.
Короче, пробовал я пробовал разные CSM, ничего подходящего не нашел. То одно глючит, то другое, ну короче решил я свою CMS написать.
Особо загонного мне ничего не требуется.
Вот конкретно те вещи, которые требуют вашей помощи:
- Написание раздела статей;
- Написание раздела Download;
Всё остальное я сам смогу сделать, но вот в этих вещах мне требуется некоторая помощь. Поэтому, если Вы не против, я периодически буду писать в этой теме вопросы.
Начну я с раздела статей:
Как писать данные в текстовый файл и выводить сообщения из него - я знаю (гостевуху как-то писал, даже оч неплохо получилось :) ).
Вот непойму я одну фишку - как мне зделать возможность создания категорий и подкатегорий???
Буду ОЧЕНЬ благодарен за Ваши ответы!!! :)
$buffer = eregi_replace("type\s", "<b>type</b> ", $buffer);
$buffer = eregi_replace("class\s", "<b>class</b> ", $buffer);
$buffer = eregi_replace("private\s", "<b>private</b> ", $buffer);
может что-то типа того?... тогда точно classicalVariable не будет выделяться как попало )) imho, пробел должен быть после каждого из этих слов... если мне память не изменяет... :rolleyes:
Границей слова считается такая позиция в строке, в которой из текущего и последующего символа только один соответствует \w (т.е. один из них соответствует \w, а другой \W). Начало или конец строки также соответствуют границе слова в случае, если первый или, соответственно, последний символ совпадает с \w
Можешь так же поискать в гугле проект проект GeSHi(Generic Syntax Highlighter). Поддерживает языков 30, может тебе будет лучше его прикрутить
Если честно, то немного поплакал :-), когда читал этот топик, но движение вроде в правильном направлении. Единственное что хотелось добавить, так это то, что прежде чем пугать всех "незнающих" людей словом cms, нужно было определиться, что за функционал Вам нужен от Вашей cms. Просто cms, в написании которой я принимал участие не ограничивалась только редактированием контента. И честно говоря, без бд такой функционал, какой был получен в итоге, я вообще сомневаюсь, что можно было бы разработать на файлах. Хотя... ничто не чуждо человеку....
Удачи в разработке. Учите MySql и php, потому что, как я понил и там и там знаний ооочень мало, если задаете такие вопросы, как я видел выше...
Еще раз успехов. С ув. Владимир.
Спасибо за информацию!!!
Если честно, то немного поплакал :-), когда читал этот топик, но движение вроде в правильном направлении. Единственное что хотелось добавить, так это то, что прежде чем пугать всех "незнающих" людей словом cms, нужно было определиться, что за функционал Вам нужен от Вашей cms. Просто cms, в написании которой я принимал участие не ограничивалась только редактированием контента. И честно говоря, без бд такой функционал, какой был получен в итоге, я вообще сомневаюсь, что можно было бы разработать на файлах. Хотя... ничто не чуждо человеку....
Удачи в разработке. Учите MySql и php, потому что, как я понил и там и там знаний ооочень мало, если задаете такие вопросы, как я видел выше...
Еще раз успехов. С ув. Владимир.
Ну во первых, я и пишу на MySQL и PHP.
Во вторых, вопросы, которые Вы видели выше, возможно задавались ооочень давно. И с тех пор много воды утекло. Тему то я давно эту начал. Просто периодически к ней возвращаюсь.
Насчёт постановки целей, Вы абсолютно правы, и для себя я их определил. Но здесь кому они нужны?
Просто по ходу написания возникают иногда некоторые вопросы. И я, чтобы новой темы не создавать, пишу их сюда же.
А сейчас у меня вопросик (возможно кто-то опять расценит как тупой :) , но всёже).
Вот код:
{
if (substr_count($delphi_code, '[delphi]')>=1)
{
for ($i=0; $i <= substr_count($delphi_code, '[delphi]'); $i++)
{
$buffer="";
preg_match("~\[delphi\](.*)\[/delphi\]~isU", $delphi_code, $array_str);
$buffer = str_replace("[br]", "<br>" , $array_str[1]);
//Подсвечиваем основные элементы синтаксиса
$buffer = eregi_replace("unit ", "<b>unit </b>", $buffer);
$buffer = eregi_replace("interface", "<b>interface</b>", $buffer);
$buffer = eregi_replace("uses", "<b>uses</b>", $buffer);
$buffer = eregi_replace("type", "<b>type</b>", $buffer);
$buffer = eregi_replace("class", "<b>class</b>", $buffer);
$buffer = eregi_replace("private", "<b>private</b>", $buffer);
$buffer = eregi_replace("public", "<b>public</b>", $buffer);
$buffer = eregi_replace("var", "<b>var</b>", $buffer);
$buffer = eregi_replace("begin", "<b>begin</b>", $buffer);
$buffer = eregi_replace("end", "<b>end</b>", $buffer);
$buffer = eregi_replace("procedure", "<b>procedure</b>", $buffer);
$buffer = "<br>//////////////////////////////<strong>Код Delphi</strong><br>
<table class=\"code\">
<tr>
<td>".$buffer."
</td>
</tr>
</table>";
$delphi_code = preg_replace("~\[delphi\](.+)\[/delphi\]~isU", $buffer, $delphi_code, 1);
}
}
return $delphi_code;
}
Эта функция читает текст, находит в нём число вхождений [delphi]
во входящем тексте и далее обрабатывает его, выделяя нужные элементы синтаксиса делфи (тут они не все, но не в этом суть).
А суть в том, что, почему-то она работает, если только число этих кодов (вхождений [delphi]) в тексте не превышает 4. Дальше она почему-то перестаёт обрабатывать.
В чём косяк?
<tr>
<td>".$buffer."
</td>
</tr>
</table>";
$delphi_code = preg_replace("~\[delphi\](.+)\[/delphi\]~isU", $buffer, $delphi_code);
<tr>
<td>".$buffer."
</td>
</tr>
</table>";
$delphi_code = preg_replace("~\[delphi\](.+)\[/delphi\]~isU", $buffer, $delphi_code);
Так вообще не пройдёт. Так он первое вхождение находит и вставляет обрамлённый (один и тот-же) первый код во все места, где есть код Delphi. Если бы так, как Вы описали, то вообще число вхождений не надо было бы находить и код был бы в 2 раза короче. Но так не прокатывает.
Вот, если кому ещё пригодится, исправленный кусок:
for ($i=0; $i <= $incom-1; $i++)
Почти дописал. Времени мало, так что по ходу дела потом дорабатывать буду.
Вот вопрос появился:
Я публикацию статей сделал через bb-код.
Но мне его надо модернизировать:
нужно, чтобы в отдельные части статьи можно было вставлять изображения. И не просто вставлять bb-тег img и URL, а с загрузкой на сервер по следующему сценарию:
Нажимаю я на кнопку, появляется окошко с формой загрузки. В этом окошке я выбираю файл, нажимаю на кнопку. После нажатия на кнопку окошко загрузки закрывается и далее в папке pictures создаётся папка с названием статьи (латинским названием), и в эту папку загружается картинка. После этого в текст статьи вставляется тег \[img=Подпись картинки\]pictures/имя_папки/имя_картинки.jpg\[img\].
Как я понимаю, тут и JS и PHP. Но в JS я не особо разбираюсь. И ни разу не работал с загрузкой файлов на сервер. Почитал мануал PHP по этому поводу - не разобрался.
Поможете? Я думаю такое (или почти такое) уже многие из Вас делали. Подкинте код.
Другое дело - релятивность и другие достоинства, присущие БД.
Ну, мне думается выражаться стоит более корректно. Тем более тебе как опытному человеку. Ибо СУБД все же, а не БД.
При БД созданной на файлах кроме самого движка приходиться фактически еще и СУБД писать. Пусть примитивную, без возножности масштабирования, нередко без надлежащего уровня абстракций, но все же СУБД :)
Хм.. имхо, тогда уж лучше почитать "Самоучитель MySQL 5" М. Кузнецова и И. Симдянова. Плюс сами маны от мускуля, они там вполне подробные.
А вот что почитать именно по проектированию и разработке БД...
ВВ теги не более чем абстракция... фикция чистовой воды. Можно придумать какие угодно теги в стиле ВВ и вложить в них абсолютно любой функционал который будет зависеть только от скрипта-парсера.
Просто ВВ теги очень удачная идея не глупого человека которая оказалась на столько удачной, что дефакто стало чуть ли не стандартом.
Однако это вовсе не значит, что ты должен себя ограничивать ими.
Я думаю будет как обычно и ПО так и не выйдет на финальную стадию офрелиза. Так и останется беткой на локалхосте :D
Во вторых, вопросы, которые Вы видели выше, возможно задавались ооочень давно.
[COLOR="SlateGray"]/me только сейчас посмотрел на дату создания темы. Гы-гы и лол :D , а я то думал свежак....[/COLOR]
Поможете? Я думаю такое (или почти такое) уже многие из Вас делали. Подкинте код.
Я собирался такое писать. Естественно на Ajax-е :D .Ибо меня порой напрягает выписывать все эти теги, делать upload... даже странно, что это все уже не собрали в подобный алгоритм.
В общем ты прав, тут без JS не обойтись. Я могу выложить готовое решение, но где-то через недельку, не раньше. А пока может кто-то выучит чего из закромов?
Просто ВВ теги очень удачная идея не глупого человека которая оказалась на столько удачной, что дефакто стало чуть ли не стандартом.
Однако это вовсе не значит, что ты должен себя ограничивать ими.
Вполне согласен! И прекрасно это понимаю.
Естественно функционал повыше, чем у, напримар, phpBB.
Но в разумных, с точки зрения надобности, пределах. Просто тупо добавил теги для подсветки синтаксиса разных ЯП. И зделал для всего этого парсеры.
Вообщем-то, я уже где-то и здесь и у себя на форуме делал опрос - что лучше - bb-код или визуальный редактор. У меня на форуме большинство отдали предпочтение bb (правда выборка мала), здесь визуалке. В принципе понятно, почему кто любит визуалку, а кто bb.
Я, например, никогда ниде не учился ни программированию, ни веб-дизайну... Я вообще по образованию менеджер. Просто однажды увлекло всё это, и теперь думаю - как жалко, что когда-то не туда пошел... Ну да ладно. Суть в том, что я начинал изучение того же HTML именно в текстовом редакторе (слава богу про Фронт Пеидж тогда не знал :) ). Тупо заходил на сайты, смотрел как HTML-код и изучал структуру и т.д. (мне это казалось проще, чем книгу прочитать).
Потом перещел на HTMLEditor (невизуальный редактор) и прилогающийся к ниму справочник тегов :) Вот с этого всё и началось.
Скажете, зачем я всю эту чушь гоню, отвечу - это не просто потому что я по жаре пива нажрался, а просто ещё по тому, что я всем этим гоном хочу сказать, что для программера всегда важен контроль над внутренним содержанием программы, а для юзера - только над внешним. И поэтому, я думаю, большинство программеров всетаки предпочтут bb код визуальному редактору.
ВСЕ ЭТО ИМХООО!
Вообще, наверное лучше как-то совмещать это.
Я вот по началу думал вообще сделать такой редактор:
Текстовое поле и поле вьювера пополам делят страницу. При вводе текста (с тегами) после каждого нажатия парсится весь введённый текст и отображается во вьювере визуально. Как говорится - всем угодить :)
Никто такого не делал?
Никакого офрелиза не будет и не планировалось изначально. Бесплатных ЦМС-ок итак сполна в сети хватает.
Я это делаю исключительно для своего сайта конкретно под свои нужды и всё.
В общем ты прав, тут без JS не обойтись. Я могу выложить готовое решение, но где-то через недельку, не раньше. А пока может кто-то выучит чего из закромов?
Буду весьма признателен :)!!! Правда в Ajax вообще не секу. Если есть полезные ссылки, с которых лучше начать изучать Ajax то выложи, пожалуйста.
Еще был бы признателен за ссылку на хорошую, доступную для начинающего (в JS), книгу по JS соответственно.
Никто такого не делал?
Мысль была. Однако до практической реализации пока руки не дошли...
Ну все что лично я хотел сказать я высказал тут: http://www.ixbt.com/soft/ajax.shtml
Еще был бы признателен за ссылку на хорошую, доступную для начинающего (в JS), книгу по JS соответственно.
Хм... тут пас, так как ни одной книги так и не удосужился прочесть. Все как-то хватала материала из сети.
Спасибо!
Хм... тут пас, так как ни одной книги так и не удосужился прочесть. Все как-то хватала материала из сети.
Ну а в нете?
Ну а в нете?
http://developer.mozilla.org/
Ну еще справочник в Aptana IDE (http://aptana.com/).
Ну и поиск конечно.
Но думаю - разберусь.
Но думаю - разберусь.
Да я тоже не знаю... но есть словарь. Сюда вот заглядывай: http://lingvo.ru/lingvo/ . Вообще самая реальная инфа в сети идет на английском. Так что хочеться или не хочется, а осваивать нужно.
Это точно. Жалко, что на родном языке мало информации. И жалко, что мало кто переводить берётся.
Берутся. Например вот: http://www.webmascon.com/about/about.asp . Однако все это голой воды энтузиазм. Даже если знать английский язык очень хорошо нужно время для написания перевода и его оформления. Время, которое ни кто не оплачивает. Поэтому нередко можно найти хорошие книги на русском языке, за них переводчик получает денежное возраграждение. А в сети... в публичном доступе...
А если б небыло интузиастов, жить бы было ооочень тяжело (хотя и так не легко)...
Во-во ;)
Ну вот, если интерестно, вроди всё основное доделал. Теперь на месте буду до ума доводить. Вот ссылочка на сайтик на ней. *ttp://www.csportal.ru/
Если есть какие-то предложения и т.п. пишите сюда, или у меня.
В общем ты прав, тут без JS не обойтись. Я могу выложить готовое решение, но где-то через недельку, не раньше. А пока может кто-то выучит чего из закромов?
Из закромов никто ничего не выложил. А как у тебя дела со скриптом?
Кстати по сабжу... вот в Mike-а нашел в загашнике: http://mike.nov.ru/services/meditor/
Имхо, как раз твой случай.
Супер! Как раз об этом я и говорил ранее, только не знал - как зделать! :)
Спасибо большое!
Только там же вроди загрузки пикчуров нет. Там просто из набора картинок (уже загруженных) вставляется УРЛ в img. А мне надо, чтобы типо появлялось всплывающее окошко, там кнопочка и поле пути к файлу. Выбираешь там файл, нажимаешь кнопку и файл загружается на сервер (причем создаётся папка с именем статьи, куда и ложаться все картинки данной статьи).
Ну, вроди ты же это писать собирался и вроди как говоришь написал. :)
Скинь мне на мыло, пожалуйста скриптик: [email]vorem@ya.ru[/email]
http://alekciy.ru/test/test1/
Для upload файлов через AJAX заюзал JsHttpRequest либу (http://dklab.ru/lib/JsHttpRequest/manual.html) между сервером и клиентом идет обмен данными в JSON формате. Парсер для него на клиенте взять из mootools фрейморка (http://mootools.net/), на сервере поддежка для JSON делатеся через соответствующее расширение. Однако по дефолту оно входит в пых только с 5.2 версии (хотя можно добавить и для более младших, но требуется поддежка на хосте; лично я для localhost себе dll-ку брал тут http://pecl4win.php.net/ext.php/php_json.dll), более младшие версии просто не понимают json_encode() функцию. Поэтому был заюзал ZendFramework. Все это в общем слеплено и немного приправлено :D
Спасибо!!! Посмотрел то что выше постом, как раз то что нужно!
Только исходник скачать не могу. Просто уезжал достаточно на долго. Это у тебя на локалхосте, да? Тогда когда ты в сети бываешь обычно?
А я то было уж подумал, что не понадобилось.
Только исходник скачать не могу. Просто уезжал достаточно на долго. Это у тебя на локалхосте, да?
А ха ха! А точно ведь, копирнул локалхостовую урлу вместо публичной :D . Вот публичный адрес: http://alekciy.ru/test/test1/test1.rar .
В общем теперь пример можно из паблика убирать ))
Угу. Спасибо! Скачал.
RussianSpy,
И чтож вас умников то столько... Вместо помощи одни подколки. Как будто гениями все родились и с пелёнок ЦМС-ки за баксы пишите...
Я на урл в общем то и не смотрел. Нажал - неработает. Просто смутило, что .ру (или др.) нет. Тем более серверов я не настраивал, и не знаю какие там примудрости.
А ЦМС-ку "суперскую" я и не собирался писать. Это моя первая попытка, первый опыт. К тому же я её уже написал и пока меня в ней всё устраивает (только дорабатывать потихоньку буду).
А при чём тут настройки серверов?)) Это же банальный URL, и если ты даже таких вещё не знаешь, то отложи вообще всё (включая HTML) и начинай с книг "Интернет для Чайников" т.к. там это наверное в первой главе разъясняется!
PS Это не стёб, а дельный совет.