Как создать СДЛ самому, часть 1: о шаблонах, встроенных дизайнах и шаблонизаторах » lamara-nsk.ru


lamara-nsk.ru
Это блог о сео, деньгах, заработке в сети, разработке своих проектов, программировании
и "жизни программиста", бизнесе, блогосфере, фрилансе и многом другом.


Контакты, Реклама в блоге




Как создать СДЛ самому, часть 1: о шаблонах, встроенных дизайнах и шаблонизаторах

Автор DimoninG, написано 24.11.2008
Рубрика Движки, CMS, Общее, на PHP  

Я решил опять перейти на программистскую тематику, но писать для «обычных людей». Не секрет, что для создания хорошего сайта (в основном СДЛ, но не обязательно), приходится писать к нему CMS на заказ. В основном это не дешевле 400$, поэтому для начинающего манимейкера невозможно.

Будет несколько частей, сколько – я не знаю. Если что-то хочется узнать или спросить – всегда пожалуйста.

Если до сих пор непонятно, что я буду вещать, поясняю: как «по кубикам» написать CMS портального типа, не зная программирования. Как сделать голосование, блоги пользователей, регистрацию пользователей, каталоги и прочее, прочее, прочее. Похоже, можно делать неограниченное количество таких постов.

Это первая часть, поэтому несколько моментов: я учту, что заботиться о безопасности скриптов нужно сразу, по совету умных людей (простите, уже запамятовал, с кем спорили), писать будем на PHP, и все-таки необходимо знать хотя бы основы программирования на PHP. Если непонятно, что читать, см. один из старых постов: Как стать программистом.

На серию статей планы наполеоновские:

1. Шаблоны. (этот урок)
2. Движок для вывода статических страниц.
3. Прикрутить Smarty.
4. Авторизацию пользователей.
5. Опросы.

Осталось писать регулярно. Итак, к уроку.

Шаблоны или встроенный дизайн?

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

Если отбросить детали, то есть 2 способа обработки дизайна (форматирования вывода данных). Первый – это встроенный в движок дизайн. Второй – шаблонизатор (и шаблон дизайна).

Встроенный дизайн.

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

Итак, к сути. Например, у нас есть какое-то оформление а-ля <div id=’aaa’></div>, а между <div> нам нужно вывести какую-то информацию. Тогда в этом случае, мы просто выводим ее с помощью операторов PHP прямо в файле сценария *.php: <div id=’aaa’><?php echo $a; ?></a>

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

Шаблонный дизайн.

При этом весь дизайн оформляется в виде отдельного файла с HTML-разметкой, куда вставляются метки для вывода информации. Часто файл с дизайном имеет расширение *.tpl, и его содержимое похоже на такое: <div id=’aaa’>{title}</div>. Потом PHP-сценарий должен обработать этот файл, считать его содержимое, заменить «метки» (для примера здесь {title}) на реальную информацию и вывести все это пользователю.

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

Шаблонизаторы.

Обычно так называются скрипты (модули движка), обрабатывающие эти самые шаблоны из предыдущего пункта. Очень хороший пример такого шаблона – Smarty, очень рекомендую к рассмотрению и изучению. Хороший пример собственно написанного шаблонизатора – это DLE.

Часто программисты не пишут свой шаблонизатор, а встраивают в свой движок Smarty. Я думаю, что это лучший выход, т.к.:

1) Уже все написано, не тратится время на создание шаблонизатора;
2) Он работает быстро. Если новичек попробует написать свой шаблонизатор, он, возможно, будет работать медленнее;
3) Он бесплатно распространяется и бить Вас за это не будут;
4) Очень важно, что другой разработчик сразу будет знать как работать с ним.

Конечно, этот пост кажется совсем не для новичков :) Но это первое, на что мы наткнемся на «практических занятиях», т.к. оформление (вывод) информации в браузер есть даже в самом минималистическом скрипте.

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



Отзывов (25) на «Как создать СДЛ самому, часть 1: о шаблонах, встроенных дизайнах и шаблонизаторах»


ae471697

    пишет:

    Дима, сразу несколько вопросов:

    1. Что значит, «для создания хорошего сайта…приходится писать к нему CMS на заказ».

    CMS она ведь на то и CMS, чтобы на ней можно было разные проекты строить. Глупо как-то под каждый проекту новую ЦМСку городить…

    2. 400$.. ты нолик в конце случайно не потерял? Интересно посмотреть на качество такой ЦМС. Чтобы вложиться в эту сумму ЦМС должен писать негр на пальме с бананами…

    3. Для того, чтобы объяснить разницу между шаблонным и встроенным дизайном, может логично сказать пару слов об MVC?


    пишет:

    Бля, спасибо что ты есть, Дим :) Я как раз задумался над СДЛ и начал его делать.. ) Слушай, а ведь посути, если захотеть можно любой дизайн прикрутить. Например диз с тогоже DLE


    пишет:

    Алексей Качаев,

    1. Почему глупо? Ну например сайт вообще уникальный и каждую стандартную CMS придется переделывать на 60%? Что скажете? Вы, наверное, никогда не писали сайты на заказ.

    2. Хотите заплатить 4000$, я мешать не буду. Реальная стоимость CMS средней руки – 400-600$ + амбиции автора еще 600-800$.

    3. Если сказать пару слов о MVC, новичек может сойти с ума, мне кажется. Это нафиг не нужно, чтобы начать писать СДЛ.

    Знаете, я вообще против всяких тупых говно-понтов, умных слов и прочего дерьма, которое по сути нахуй не нужно для того, чтобы что-то сделать. Да, вот так грубо ; ).

    ThisFIL: :-D НЗ. Да, можно, есть несколько способов.


    пишет:

    Всегда хотел уделить время и начать разбираться с php, тем более что html знаю и php в приципе правил, так что буду читать, пиши еще.


    пишет:

    Вы, наверное, никогда не писали сайты на заказ.

    Писал. И не раз, и не два.

    Ну например сайт вообще уникальный и каждую стандартную CMS придется переделывать на 60%.

    На 60%? Это какую такую CMS вы изменяли на 60%.. Заметьте, настройка модулей, установка плагинов это не переделка CMS. А легкая подчистка напильником кода – это максимум процентов на 5 потянет.
    60% – это значит сносим почти все системы, меняем вполовину ядро… так получается? Зачем? Для каких таких целей?

    CMS средней руки – 400-600$ – это гавно, а не CMS. Вот такая штука как раз и будет работать только для одного сайта, а попробуй для другого настроить – так и правда придется 60% кода переписывать. Может мы с вами разные вещи имеем ввиду под CMS?

    …всяких тупых говно-понтов, умных слов и прочего дерьма, которое по сути нахуй не нужно…

    Ну, знаешь ли… Не нужно MVC? А нафига тогда шаблонизатор? Давайте в PHP код HTML пихать, а потом пусть дизайнер вручную правит. Нет уж, MVC нужно.

    Я ведь не говорю, что нужно обязательно загрузить новичка кучей терминов, можно даже слово MVC не употреблять… Но было бы логичнее сначала рассказать о том, что в сердце нашего творения будет база данных и одна часть системы будет работать с ней. Другая будет принимать запросы пользователя, третья – выводить ответ (шаблонизатор)… Так чтобы у человека сразу вся картина рисовалась.

    И никаких понтов, просто делюсь опытом обучения других.


    пишет:

    Алексей Качаев,

    Ну вот предположим, чтобы стало понятнее что я имею в виду. По-вашему как – легче переписать, скажем, DLE, чтобы вышел сайт free-lance.ru или джумлу? ;) ))) Понятно, зачем разрабатывать двигло персонально?


    пишет:

    Алексей Качаев – а в чем суть Вашего спора? Объяснить оппоненту, что такое правильная цмс-ка =) Это тема холивара, который продолжается уже несколько лет. Вот и мои 5 коп.
    CMS – это общее название, не более и не менее. Для каждого типа сайта должна быть своя. Возьмите для примера любую соц сеть или какой-нибудь сервис. Ведь они тоже управляются cms-ой. И сайт визитка с 10 страницами – тоже на cms =) И получается, что для обоих случаев цена за двиг будет 4000$ =)
    А вот фиг. Ну не будет клиент платить за визитку такую цену. Поэтому и мысль о создании «утопической» cms-ки, для всех видов сайтов, надо отгонять.
    Еще хотели узнать про качество cms в 400$. А собственно что Вы понимается под словом «качество»? Качество написанного кода ее документированность и т.д. или функциональность?
    Качество кода зависит не от цены, а от совести программиста =) или его опыта. А вот функциональность имхо напрямую от цены.
    зы
    Не удержался, чтобы не влезть в разговор :smile:


    пишет:

    Я именно это и пытался сказать :) Прямо в точку, Sham!


    пишет:

    Наверное, мы по-разному понимаем слово «CMS». Алексей понимает его как какая-то отвлеченная, абстрактная система управления. А я его понимаю как конкретная система управления вполне определенным сайтом (тем или этим).


    пишет:

    не о том спор завели=) cms’ка все равно не главное


    пишет:

    рядовой веб-мастер, а что главное? :)


    пишет:

    DimoninG, отзовись в асе, если не трудно. а то каменты не доходят и в асе тишина…415-909-995


    пишет:

    DimoninG, а зачем новичку вообще учить php и СРАЗУ писать на нем СДЛ? Если у него есть деньги – заказывается разработка у профессионалов, нет денег – берет готовую CMS и реализует амбиции в меру своих знаний и увлеченности идеей.


    пишет:

    Действительно, есть много готовых CMS, с кучей плагинов и шаблонов. Самое то новичку.


    пишет:

    Лет 30 назад каждый крутой перец писал свою Ось или хотя бы компилятор.
    А теперь CMS-ки пишут. Измельчал народ.


    пишет:

    Аркадий, ну посадите новичка разбираться в Joomle например :twisted: Я на вас посмотрю.

    Секрет, это как бы о веб-программировании, при чем тут компилятор и «измельчал народ»?


    пишет:

    UPD: Каждый писал ось и компилятор, но ни у кого не вышло ;) Или где эта мега-продукция сейчас? :) Если серьезно – лет 10 я сам ковырялся в кишках, ну и что с того? Почему это не дает мне сейчас писать цмски? :)


    пишет:

    Предлагаю модули распознавания капчи. В наличии много движков, в частности google, yahoo, mail.ru, myspace, vkontakte.ru, recaptcha.com, icq, DLE. Возможно написание распознавалки под ваш проект. Также пишем софт на си++ для win, nix

    icq: 5-786-656
    mail: captcher@gmail.com


    пишет:

    Почитав ваш мини холивар хочу вставить своих 5 копеек.
    Помоему сформулировать что нужно и как это сделать сможет уже более-мение опытный, а новичку как раз подойдут джмумла и компания для освоения функционала и начала понимания что же всетаки хочется :)


    пишет:

    > Секрет, это как бы о веб-программировании, при чем тут компилятор и “измельчал народ”?

    Про измельчал – подколка. А суть вот. «Каждый писал ось и компилятор, но ни у кого не вышло. Или где эта мега-продукция сейчас?»

    Пиши-пиши универсальную cms. Правильной дорогой идёшь.


    пишет:

    что такое СДЛ ? :roll:


    пишет:

    СДЛ – Система для дюдей


    пишет:

    Неа. Сайт для людей.


    пишет:

    Да, хороший туториал. Скорее бы уже до программирования дойти. Надеюсь в следующем уроке! Ok? Для меня эта тема очень важна, так как я в данный момент активно изучаю PHP и именно написание движков меня и интересует.

    Дим, я очень надеюсь, что ты не забьёшь на эти уроки! Кстати, я правильно думаю, что написав подобный двиг, можно будет легко его переделать под двиг блога (блоговый двиг) ? Если да, то просто замечательно.

    Хм.. Хотя помню, что пытался писать нечто похожее на гостевую книгу. С использованием MySQL. В ступор меня спустило при попытке написания куска, который отвечал за нумерацию страниц (ну знаешь, типа страница 1.2.3.4 которые жмакать нада) типа как в вордпрес. Хотя сейчас думаю, что нужно было использовать LIMIT в запросе итд. Так что если осветишь и эту тему – будет хорошо.

    По поводу этих споров с этими товарищами:

    Всегда есть люди, которые хотят казаться выше и умнее остальных. Так что, на таких можно даже внимание своё не концентрировать…

    P.S.
    Димка! Если забьёшь на эти туториалы – кусну больно! :smile:


    пишет:

    :shock: .. и все таки для новичков .. нарисовали картинку в psd закинули в html-ку .. поставили joomla.. и как теперь прикрутить :?: :?: :?: в идеале очень бы хотелось увидеть как прикрутить хотя бы самый простенький вариант


Оставьте свой комментарий

Что здесь почитать?



1.   Разработки.
1.1 Плагин "Я не робот"
1.2 Плагин "Код Adsense прямо в пост"

2.   Заработай.
2.1 Блогун: 20$ в день
2.2 Уходим от налогов в Sape
2.3 Хватит думать, пора зарабатывать

3.   Акции и конкурсы.
3.1 Ссылка за "Рабочий стол"

Показать весь список.

-->








Блог на движке WordPress и тема для него создана DimoninG'ом в 2007 году.
Все материалы авторские, их копирование запрещено законом об авторском праве.