Ну хоть толкните в нужном направлении )

Тема в разделе "PHP", создана пользователем Parasol, 12 апр 2009.

Модераторы: latteo
  1. Parasol

    Parasol Постоялец

    Регистр.:
    7 июл 2007
    Сообщения:
    149
    Симпатии:
    65
    Привет.
    Есть задача - генератор "шаблонов" - застрял на самом интересном месте - алгоритме ))
    Даже не застрял, а впал в какой-то глупый ступор.

    К примеру, на сайте может быть:
    - шапка
    - левая колонка
    - контент колонка
    - правая колонка
    - футер

    так-же есть набор "модулей" которые могут размещаться в разных колонках.
    Например
    - голосование
    - поиск
    - подписка
    итд...

    Надо создать ряд правил по которым уже формировать шаблон, вот с этими правилами я и запутался крупно.

    Может кто-то посмотрит на это свежим взглядом и найдет простое и грандиозное решение?

    Просто все строить на if`ах как-то не красиво и очень уж объемно.

    Спасибо!
     
  2. MoQz

    MoQz Постоялец

    Регистр.:
    7 апр 2009
    Сообщения:
    73
    Симпатии:
    95
    Генератор в студию! Надо иметь представление хоть с чем ты имеешь дело.
     
  3. socker

    socker Постоялец

    Регистр.:
    15 сен 2007
    Сообщения:
    109
    Симпатии:
    17
    Советую посмотреть код CMS Joomla 1.5 там шаблоны формируются таким же образов!!!
     
    Parasol нравится это.
  4. Parasol

    Parasol Постоялец

    Регистр.:
    7 июл 2007
    Сообщения:
    149
    Симпатии:
    65
    Да в том то и дело что это только предстоит сделать. Есть только задача.

    Генерировать шаблоны.
    Нужен сам алгоритм - сам кодинг не проблема.

    Первый раз я впадаю в такой ступор, может витаминов не хватает :)

    Добавлено через 29 секунд
    Спасибо за идею - посмотрю, может и вправду все уже давно написано :yahoo:
     
  5. tostrss

    tostrss

    Регистр.:
    16 окт 2007
    Сообщения:
    771
    Симпатии:
    217
    Писал когда-то такой генератор ,алгоритм был следующий:
    1) генерация скелета:
    2) например под каждую часть страницы есть папки header, footer, left, right который содержат в себе файлы с блоками(не важно какие там блоки, рейтинг, голосование, часы, информеры и т.д., главное что в каждом файл 1 блок).
    Дальше простым рандомом для каждого блока, узнаем, будет ли он содержатся на странице или нет, если содержится добавляем в массив..

    Конечный массив перемешиваем и отображаем...


    Это самый простой и легкий алгоритм для написания простого шаблоно-генератора.
     
  6. venetu

    venetu

    Регистр.:
    28 мар 2007
    Сообщения:
    737
    Симпатии:
    263
    Шаблоногенераторные шаблоны тоже палятся и банятся. Забей, не трать время.

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

    Потом только руками позаменять куски текста на шаблонные переменные да поудалять лишнее, что автоматом не удалилось. И проще, и эффективнее, и результат будет радовать глаз.
     
  7. D@nil

    D@nil

    Регистр.:
    1 окт 2006
    Сообщения:
    338
    Симпатии:
    122
    Проже написать парсер к шаблонам от WordPress. Тогда и результат на выходе будет глаз радовать.
     
  8. ddvhouse

    ddvhouse Писатель

    Регистр.:
    23 апр 2008
    Сообщения:
    5
    Симпатии:
    0
    Сначала можно построить и на ифах. Когда всё будет работать у тебя и идеи появятся как оптимизировать код.
    Так всегда и бывает.
     
  9. almary

    almary Постоялец

    Регистр.:
    2 апр 2006
    Сообщения:
    93
    Симпатии:
    32
    советую сделать таблицу в БД, в которой будет связка такого типа номер блока - модуль, например будет так BLOCK_1 - модуль голосования, на страницу вытягиваешь все связки и заменяешь блоки на модули, также в блоки можно привязывать несколько модулей со своей сортировкой, однако удобно ИМХО
     
  10. mrbright

    mrbright Создатель

    Регистр.:
    18 ноя 2009
    Сообщения:
    31
    Симпатии:
    3
    Буквально неделю назад писал генератор отчетов для проги.
    У меня сам шаблон отчета лежал в xml-файле. Что-то вроде:
    <checklist>
    <check id="check1">
    <table>0</table>
    <type>9</type>
    <output>
    <header>
    <element>checkname</element>
    <element>tablename</element>
    </header>
    <table>
    <theader>3</theader>
    <row>
    <element>record</element>
    <element>action</element>
    </row>
    </table>
    <footer>
    <element>found</element>
    <element>deleted</element>
    <element>ignored</element>
    </footer>
    </output>
    </check>
    ...
    </checklist>
    Отдельно в другой xml-ке лежали сообщения, а сам парсер делился сводился к чтению xml-файла и в цикле foreach обходились и парсились все элементы отчета. Для элементов со вложенными тегами выполнялся аналогичный вложенный парсинг. Я даже не разбивал парсер на отдельные процедуры и не извращался с ООП.

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