Ну, девелоперы, колитесь!

Dexter

Guest
Вообщем так и скажи, что аргументов у тебя нет. Дешевые приколы делу не помогут.
Тут я сдался.

По поводу приведенных примеров.
http://dom.natm.ru/test2/my1.html

Классный вариант... !
правда в случае с форумрм или гостевой пришлось бы в правилах писать "пожалуйста испрльзуйте длинные предложения и забудтье клавишу {Enter}" Что довольно проблематично, т.к. NNавтоматически не переносит текст по словам в TEXTAREA в отлтчае от IE и стимулирует тем самым туками переностить строки при формировании абзаца.

http://dom.natm.ru/test2/my2.html
Можно было-бы заплкать от счастья, но NN славен своими оговорками.
1. Главная ячейка не бкдет занимать всю доступную ей ширину, в отличае от IE.
2. Забудьте про фон картинкой если на этом фоне будет эта таблица, то белый цвет (как в данном конкретном случае) закроет текстурный фон.
3. Если этим способом делать также тонкую полоску слева то нельзя контролировать отступ от левой линии до текста.

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

NN постоянно напоминает о условности его возможностей.
Случай с "background" яркий пример. Огромное количество необъяснимиго поведения NN c фоном в виде картинки в таблицах.
 

Flying

Guest
Автор оригинала: Dexter
По поводу приведенных примеров.
http://dom.natm.ru/test2/my1.html

Классный вариант... !
правда в случае с форумрм или гостевой пришлось бы в правилах писать "пожалуйста испрльзуйте длинные предложения и забудтье клавишу {Enter}" Что довольно проблематично, т.к. NNавтоматически не переносит текст по словам в TEXTAREA в отлтчае от IE и стимулирует тем самым туками переностить строки при формировании абзаца.
Полный бред. Во-первых никто не мешает иметь еще одну строку в этой же таблице, которая будет служить распоркой, если это так необходимо.
А во-вторых ты, видимо, не знаешь про аттрибут wrap у <textarea>? отсюда и твои проблемы.

http://dom.natm.ru/test2/my2.html
Можно было-бы заплкать от счастья, но NN славен своими оговорками.
1. Главная ячейка не бкдет занимать всю доступную ей ширину, в отличае от IE.
Это почему вдруг? Кто мешает комбинировать 1 и 2 методы? Да и в любом случае разница в 1-2 пикселя - непринципиальна.

2. Забудьте про фон картинкой если на этом фоне будет эта таблица, то белый цвет (как в данном конкретном случае) закроет текстурный фон.
Это да, работа с background'ами а NS4 оставляет желать лучшего.

3. Если этим способом делать также тонкую полоску слева то нельзя контролировать отступ от левой линии до текста.
Опять же бред, padding тебе на что?

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

NN постоянно напоминает о условности его возможностей.
Случай с "background" яркий пример. Огромное количество необъяснимиго поведения NN c фоном в виде картинки в таблицах.
Ну хорошо, вот тебе элементарный пример - сделай мне border-style: inset или outset в IE.
 

Dexter

Guest
Ну вот опять ... "бред..."
Полный бред. Во-первых никто не мешает иметь еще одну строку в этой же таблице, которая будет служить распоркой, если это так необходимо.
Таблица то 100% с распоркой она таковой уже не будет.
Условие ломаем.
А во-вторых ты, видимо, не знаешь про аттрибут wrap у <textarea>? отсюда и твои проблемы.
За это спасибо... очко за тобой... буду знать. :)
Это почему вдруг? Кто мешает комбинировать 1 и 2 методы? Да и в любом случае разница в 1-2 пикселя - непринципиальна.
Да.. разница в 1-2 пикселя - непринципиальна. Принципиально время на разработку.
Опять же бред, padding тебе на что?
padding + погрешность ширины левого столбца. Сам padding ничего не меняет.
А это уже твои проблемы В каждом конкретном случае можно найти комбинацию, позволяющую добиться необходимого результата.
Это точно... именно на эти "конкретные случаи" и искал разные "комбинации" вместо того чтобы читать Гради Буча. :)
Ну хорошо, вот тебе элементарный пример - сделай мне border-style: inset или outset в IE.
http://comanche.seanet.com/~lerik/test_02.htm
И на что намек? NN - вообще как всегда... IE и Mozilla по разному но суть эфекта передают.
 

Dexter

Guest
еще как бывает.
А я уже в это поверил... абсолютно бесплатная услуга... никто ничего не платит.. :) Может я сплю? Или коммунизм настал. И в МГУ говорят абсолютно бесплатный инет...
Вспоминаю анекдот про килограмм наковыренного из булочек изюма.
 

Flying

Guest
Автор оригинала: Dexter
Таблица то 100% с распоркой она таковой уже не будет.
Условие ломаем.
Никоим образом. Кто тебе сказал, что "распорка" - это обязательно image?

Да.. разница в 1-2 пикселя - непринципиальна. Принципиально время на разработку.
Время на подобную разработку - 1-2 минуты, тоже непринципиально.

padding + погрешность ширины левого столбца. Сам padding ничего не меняет.
Погрешность ничтожна, как я уже сказал - 1-2 пикселя. А padding меняет очень многое.
 

Dexter

Guest
Время на подобную разработку - 1-2 минуты, тоже непринципиально.
В общем ты добился своего...
Все правильно... NN нормальный браузер.
Просто надо научится под него писАть.
Все глюки у меня в голове... Навожу напраслину на отличный продукт. Меня ты убедил, однозначно. Осталось тоько убедить в этом остальных. Я понял что это несправелдивая ошибка очень большого числа веб-разработчиков. Браузер хороший ... это мы плохие. Я уже чуствую позывы тошноты при взгляде на M$ IE. NN - best!
 

Flying

Guest
Автор оригинала: Dexter
В общем ты добился своего...
Все правильно... NN нормальный браузер.
Просто надо научится под него писАть.
Все глюки у меня в голове... Навожу напраслину на отличный продукт. Меня ты убедил, однозначно. Осталось тоько убедить в этом остальных. Я понял что это несправелдивая ошибка очень большого числа веб-разработчиков. Браузер хороший ... это мы плохие. Я уже чуствую позывы тошноты при взгляде на M$ IE. NN - best!
:)

На самом деле, если ты вспомнишь, с чего все начиналось, но я никогда не говорил, что NN4 - хороший браузер. Просто он не так плох, как многие думают. И для своего статуса (а это переходная версия между старыми браузерами и совершенно новыми, каким должен был стать NN5) он вполне подходит. Единственная проблема, что переход на новое поколение браузеров занял у Netscape так много времени.
А вот NN6.2.x/NN7 - это действительно очень хороший продукт.
 

Dexter

Guest
Единственная проблема, что переход на новое поколение браузеров занял у Netscape так много времени.
А вот NN6.2.x/NN7 - это действительно очень хороший продукт.
:)
Хорошая компромисная формулировка. Согласен.

Обсуждение было для меня реально полезным.
Жаль, что ни одного доброго слова в адрес IE я не услышал... наверно и впрям не заслуживает.
 

Lavydas

Guest
Правильно было сказано, что нужно маскимально использовать те и без того богатые возможности ПХП, а не пытаться найти решение которое в конце-концов сделано поверх этих же возможностей. И которое явно бысрее ну ни как ни может быть.

Я, честно говоря, перепробовал много разных методов. И eval() и include() и Шаблонные движки всякие, и в конце концов пришел к одному выводу, который по большому счету родился уже в самом начале... и подтвердился. Вывод прост.
*** То, каким образом будет реализована та или иная задача, прероготива программиста. А вот вопрсы, как все же сделать или что выбрать, зависит от тонкого знания программистом, того с чем он работает ***

=====================================
Ведь, что такое шаблоны. А это очень просто

Шаблон1
------Шаблон2
------Шаблон3
------------Шаблон4
------------Шаблон5
=======================================

ну и так далее разворачиваем данное дерево до наименшей составляющей составной единицы. И в конце концов получаем завершенный собраный объект.

делать это в виде

FastTEmplate1
-----FastTemplate2
-----FastTemplate3
---------FastTemplate4
---------FastTemplate5

или

eval()1
-----eval()2
-----eval()3
---------eval()4
---------eval()5

или

include()1
-----include()2
-----include()3
--------include()4
--------include()5

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

Я, например, перепробовав все это, делаю все предельно просто и без всяких сторонних примочек

function()1
------function()2
------function()3
-----------function()4
-----------function()5

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

Все функции шаблонов начинаются с приставки Show (тоесть ShowMenu(),ShowMenuItem() и т.п.). Если нужно в шаблон передать дополнительные параметры, флаги или чего-нибудь еще ну так пожалуйста это же функция.. Объяснил верстальщикув письменном виде, что этот параметр значит это, а второй вот это и все. Очень гибко и удобно.

Ну а дальше дело техники и опятьже знаний и опыта.
Для упорядоченности можно объединить функции шаблонов в Класс. Например Tpl. Ну естественно после этого вызов функций будет немного длиннее выглядеть... Зато в коде скрипта нагляднее.
PHP:
$DB->connect(.......);
$tpl->Show1();
$tpl->Show2();
Неправдали удобнее!

Ну вот в кратце и все... Если Возникли вопросы или чего еще обсудим... :)
 

Krisha

pain in the neck
Автор оригинала: Lavydas
......а в начале скрипта делаю include() файла с библиотекой шаблонных функций...
Пожалуй вот с этим соглашусь, мне честно говоря, тоже наиболее удобным кажеться именно такой подход
 

Flying

Guest
Автор оригинала: Krisha

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

Что касается меня - я поступаю примерно так же, как описал Lavydas, но работаю с XML+XSLT.
 

webdeveloper

Guest
Коллеги, а вто такой вопрос:

Есть сайт на двух языках. Есть шаблоны. Есть класс который их обрабатывает. Как вы решаете вопросы передачи в шаблон специфических языковых констаннт?

Я вижу два варианта:
1. На каждой странице подключаем файл с константами и потом просто передаем в шаблон все необходимые переменные.
PHP:
require("lang_ru.php");// хранит константы с виде define("LANG_NAME", "Имя"):
...
$tpl->assign("ENTER_VAR", LANG_ENTER);
$tpl->assign("CANCEL_VAR", LANG_CANCEL);
....


Но тогда появляется проблема с большим колличеством строк вида
PHP:
$tpl->assign("SOME_VAR", LANG_VAR);
2. Иметь массив языковых констант вида
PHP:
$_LANG["NAME"] = "Имя";
и на каждой странице передавать в шаблон весь этот массив без учета того какие константы используются на этой странице а какие нет.

PHP:
while(list ($key, $value) = foreach($_LANG))
{
	$tpl->assign("$key."_VAR", $value );
}
Это все можно делать в момент инициализации шаблона. Удобно тем, что тогда $_LANG можно сделать private member класса который обрабатывает шаблоны и не заботится об этом. Но с другой строны это дожно сказатся на производительности. Увеличивается размер файла и т.д.....

Интересно что думает почтенная публика по этому поводу.
 

Flying

Guest
Автор оригинала: webdeveloper
Коллеги, а вто такой вопрос:

Есть сайт на двух языках. Есть шаблоны. Есть класс который их обрабатывает. Как вы решаете вопросы передачи в шаблон специфических языковых констаннт?
Я делаю так:
Каждая страница сайта имеет уникальный идентификатор. Кроме того, она может иметь дополнительный именованный режим работы (если при этом режиме на странице что-то меняется по сравнению с режимом по умолчанию).
Для каждого языка есть файл с XML entities "общего пользования" с именем - идентификатором языка и в каталоге с таким же идентификатором - файлы с именами, соответствующими идентификаторам страниц и режимов их работ.
Пример:
Есть страницы:
news.php (идентификатор - news)
catalog.php (идентификатор - catalog)
guestbook.php (идентификатор - guestbook, есть именованный режим - add)
И языки - атглийский (en) и русский (ru). Тогда файлы будут такими:

PHP:
/en
    news.ent
    catalog.ent
    guestbook.ent
    guestbook.add.ent
/ru
    news.ent
    catalog.ent
    guestbook.ent
    guestbook.add.ent
en.ent
ru.ent
В зависимости от языка, страницы и режима работы грузятся соответствующие файлы в порядке уменьшения "специализированности", т.е. для
PHP:
$language='en';
$page='guestbook';
$mode='add';
будут грузиться:
PHP:
/en/guestbook.add.ent
/en/guestbook.ent
/en.ent
Это позволяет переопределять entities.
 

boka

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

boka

Guest
Кстати, т-щ Flying, я только что проверил работу инсет и аутсет в ИЕ. Все работает замечательно, как часики...
 

webdeveloper

Guest
Автор оригинала: Flying

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

...
Очень интересный подход. Но как мне кажется в таком случае пропадает простота поддержи (создания) самих файлов с языковыми константами. То есть если при использовании стандартого подхода $lang["ENTER"] = "Введите Ваше имя"; придется использовать XML то это сделает сами файлы сложнее, кроме того придется беспокоится о ", ', & и т.д.


Я посмотрел свой файл с набором языковых констант. Он соджержит 300 строк. Файл с шаблонами (я использую TemplatePower) сожержит 870 строк. Мне кажется что 300 строк тут погоды не сделают.
 

Flying

Guest
Автор оригинала: boka
Кстати, т-щ Flying, я только что проверил работу инсет и аутсет в ИЕ. Все работает замечательно, как часики...
Ой, вот насчет "замечательно" - не надо... Не знаю, как ты там проверял, но вот тебе реальный пример:

PHP:
<html>
<head>
    <style type="text/css">
        TABLE {border: 0px none #000; border-spacing:0px }
        TD {padding: 1px 5px; background-color: #ccc; border: 1px outset #ccc}
    </style>
</head>
<body>
    <table>
        <tr>
            <td>text 1</td>
            <td>text 2</td>
            <td>text 3</td>
        </tr>
    </table>
</body>
</html>
Сравни, как это рендерит Mozilla, Opera и IE.
 

Rynor

stay hungry
NN 4.7 dead, baby, NN 4.7 dead
я танцевал до утра когда узнал :)
но IE сдает позиции ну и ладно
Opera, Mozilla
open community решает!
 
Сверху