Хазрат Гаджикеримов: А вообще, рекомендую все-таки посмотреть "тяжелые" шаблонизаторы. Тяжелые они потому, что прошли сотни и тысяци итераций "придумал-сделал-увидел коски-переделал". Ты же сейчас в самом начале этого пути.
Хазрат Гаджикеримов: короче, можно оставить хидер и футер по отдельности и рендерить их по отдельности. Это лишний код, но принципиальной проблемы в них нету. Главное, чтобы они тоже рендерились так же как остальные шаблоны
@PiiP: на самом деле, это далеко не факт. То есть, такое действительно может быть - если НЕ соблюдается одно из перечисленных в вопросе условий. Либо, как я уже писал - кв коде добавлены какие-то магические пассы, которые и портят данные. Но скорее всего, это проблема просмотра. В любом случае тут виновато неумение проверять либо причинно-следственные связи, либо исходные данные. Если все-таки при записи, то надо убедиться, что поля таблицв ДЕЙСТВИТЕЛЬНО в имеют кодировку utf8, что после коннекта ДЕЙСТВИТЕЛЬНО mysql_set_charset('utf8'); и что данные перед записью ДЕЙСТВИТЕЛЬНО имеют кодировку utf-8. Не когда-то там перед тем, как юзер надумал из вписать в форму, а НЕПОСРЕДСТВЕННО перед записью. Если соблюсти все эти примитивные правила, то никакх проблем при записи не будет.
Хазрат Гаджикеримов: да никакой проблемы с header и в footer нет. Они всегда динамические. Просто их неудобно делить на два файла - так же редактировать неудобно. Лучше, когда они в одном. Это получится основной шаблон сайта. Такой же как и рабочий. Точно так же в него передаются переменные и все такое. Вот, можно посмотреть пример того, о чем я говорю: phpfaq.ru/tpl#example - то есть, основной шаблон просто инклюдит в себя рабочий. Это очень примитивный пример, без рендерера, но суть показывает. И хидер и футер лежат в одном файле, который обрабатывается как любой другой шаблон.
Хазрат Гаджикеримов: на самом деле обычно передается только один шаблон. Максимум - два. У тебя 4 шаблона, которые должны быть слиты в один - css, js, header и footer. Это все - на самом деле единственный шаблон основного дизайна сайта, и он должен быть в одном файле. Поэтому у тебя должно передаваться только два шаблона - основной шаблон сайта, и шаблон рабочей области для текущего контроллера. При этом основной может задаваться в настройках контроллера или роутера, или в самом рабочем шаблоне. Так что в шаблонизатор обычно передается только имя рабочего шаблона. И большой массив данных - тут все верно.
Хазрат Гаджикеримов: решение - это "вариант 2" из ответа @RUgaleFF плюс твоя собственная мысль про то что РНР - это шаблонизатор. Тебе всего лишь надо понять, что шаблонизатор - это не только вывод переменных. Это еще и циклы, и условные переходы, и инклюды, и функции. Все это есть в РНР и все это надо использовать в шаблоне. Так что в шаблонизатор надо передавать имя файла и массив с данными. При этом данные будут не только калярными переменными. Там будут и массивы и объекты. И се это надо потом выводить с помощью РНР.
Хазрат Гаджикеримов: Только ради бога, не пытайся плодить мини-шаблоньчики под каждый цикл, чтобы сохранить лицо. Начав это использовать, ты проклянешь тот день, когда задал этот вопрос на тостере, и меня заодно. А зачем не это надо?
Хазрат Гаджикеримов: это все происходит у тебя в воображении, пока ты не начал использовать свой "шаблонизатор" в реальном проекте :) Не огорчайся, почти каждый начинающий похапешник проходит через стадию такого шаблонизатора - это нормально. Все сначала думают, что шаблон - это только вывод переменных :) Проверка на вшивость: Получи в контроллере массив с заголовками новостей, и выведи их списком в шаблоне. А потом расскажи мне, что у тебя в коде нет HTML, ХА-ХА-ХА (демонический смех)
@RUgaleFF: Не вижу смысла писать про то, "где шаблонизатором не пахнет", если вопрос про шаблонизатор. Отмазка не принята. Но самый главный твой фейл - ты даже аффтару не смог объяснить, в чем принципиальная разница между первым и вторым методом, а начал что-то лепетать про include. Ты слился уже тогда, когда поставил знак равенства между этими двумя способами. Нету никаких двух способов. Единственно правильным был бы ответ, в котором бы четко говорилось, что способ автора - это не шаблонизатор вообще, и что ему надо научиться таки использовать РНР в виде шаблонизатора. И дальше описать враппер из "способа 2" (который на самом деле не второй, а единственный).
@RUgaleFF: первый вариант ясно показывает, что ты понимаешь в шаблонизаторах не лучше аффтара. Вы оба, очень так по-детски, наивно полагаете, будто шаблонизация заключается исключительно в выводе переменных.