| Author |
Message |
Дмитрий Кóтеров
Администратор

Joined: 10 Mar 2003
Posts: 13569
Карма: 407 поощрить/наказать
|
Posted: Fri May 02, 2003 3:52 am ()
Post subject: Исходники из моей книги.
|
|
В данном топике присоединены некоторые исходники (переработанные и дополненные), которые встречаются там и тут в «Самоучителе PHP4».
| Description: |
| Исходники из «Самоучителя PHP4»: заглушка сайта. |
|
 Download |
| Filename: |
shop.zip |
| Filesize: |
25,49 KB |
| Downloaded: |
2495 Time(s) |
|
|
| Back to top |
|
 |
Лобач Олег
Участник форума

Joined: 05 May 2003
Posts: 72
Карма: 6 поощрить/наказать
Location: Новокузнецк
|
Posted: Fri May 16, 2003 9:44 am (спустя 14 дней 5 часов 51 минуту)
Post subject:
|
|
Может тогда подскажете как расширить функциональность этого шаблонизатора? Например, хочу я выводить новости по пять штук на страничку, дёргая их из базы. Заводить пять блоков и описывать пять раз вывод блока кажется мне не самым лучшим решением. А если надо 20? А если 50? Решение подобных задач мне видется в создании блока-массива (двумерного, я думаю, вполне должно хватить) и разбора его в шаблоне посредством псевдотегов, типа <FOREACH></FOREACH>. Но вот реализацию я что-то придумать не могу. :( Может есть у кого идеи по реализации этого? Или ещё какие-нибудь предложения по наращиванию функциональности...
|
|
| Back to top |
|
 |
Дмитрий Кóтеров
Администратор

Joined: 10 Mar 2003
Posts: 13569
Карма: 407 поощрить/наказать
|
Posted: Fri May 16, 2003 1:24 pm (спустя 3 часа 40 минут)
Post subject:
|
|
| Блоки - это не "что-то, что выводится в цикле". Это некоторые статические элементы. Вся динамика идеологически должна располагаться внутри блоков. То есть, если Вы хотите foreach, так и пишите:
В принципе, если очень хочется делать "параметрический блок" (который не поддерживается в этой версии), можете просто написать для этого функцию:
Но только далеко не всегда это стоит делать. Я, например, еще ни разу не встречался с ситуацией, когда такой прием был бы оправдан.
|
|
| Back to top |
|
 |
Лобач Олег
Участник форума

Joined: 05 May 2003
Posts: 72
Карма: 6 поощрить/наказать
Location: Новокузнецк
|
Posted: Mon May 19, 2003 4:56 am (спустя 2 дня 15 часов 32 минуты)
Post subject: Развитие шаблонизатора
|
|
К такому варианту я уже приходил. Но не понравился мне он тем, что необходимо смешивать дизайн и реализацию такого блока. Как обойти это я пока не нашёл. Мне хочется что бы дизайн отдельно взятой страницы полностью опроделялся только в одном файле шаблона. Или я неправильно понял Ваш ответ? Приведённый Вами код относился к содержимому блока или шаблону? На сколько я понимаю - к блоку. Тогда внедрение в блок кода HTML, определяющего визуализацию контента, генерирующегося в этом блоке, мне не нравится, т.к. это затруднит ре-дизайн. А вставка PHP-шного кода (даже в таких малых количествах) в шаблон тоже не вызывает у меня восторга. И ещё один вопрос. Дмитрий, возможно ли коммерческое использование кода шаблонизатора. Елси да, то что при этом необходимо (копирайты в коде, на заглавной странице, отчисления)?
|
|
| Back to top |
|
 |
Дмитрий Кóтеров
Администратор

Joined: 10 Mar 2003
Posts: 13569
Карма: 407 поощрить/наказать
|
Posted: Mon May 19, 2003 5:28 pm (спустя 12 часов 31 минуту)
Post subject:
|
|
| Лобач Олег wrote: |
|
Приведённый Вами код относился к содержимому блока или шаблону? |
Видимо, к шаблону.
| Лобач Олег wrote: |
|
возможно ли коммерческое использование кода шаблонизатора |
Все зависит от того, что Вы подразумеваете под словом «коммерческий». Мне кажется, что Вы понимаете это слово неправильно: оно значительно более мягкое. Вы можете использовать PHP-код в каких угодно проектах и как угодно, однако Вы не должны продавать шаблонизатор отдельно (например, под собственной маркой). В общем, обычная лицензия LGPL.
|
|
| Back to top |
|
 |
Лобач Олег
Участник форума

Joined: 05 May 2003
Posts: 72
Карма: 6 поощрить/наказать
Location: Новокузнецк
|
Posted: Tue May 20, 2003 4:17 am (спустя 10 часов 49 минут)
Post subject:
|
|
| Лобач Олег wrote: |
|
Приведённый Вами код относился к содержимому блока или шаблону? |
| Дмитрий Кóтеров wrote: |
|
Видимо, к шаблону. |
Мне не нравится идея внедрения PHP в шаблон страницы. Руководствуюсь вод чем: когда создаёшь дизайн сам, то можешь лавировать между удобством и простотой (используя PHP там, где чистым HTML не обойтись). А если дизайн пишет человек хорошо знающий HTML, но не владеющий PHP? Проводить ликбез? А оно ему надо? Может лучше ему дать инструмент, очень похожий на знакомый HTML, но имеющий расширеную функциональность (в пределах возможносей "движка", конечно)? Вот поэтому я и спрашивал как можно уйти от PHP-кода в шаблоне и HTML-кода в блоке-генераторе.
| Лобач Олег wrote: |
|
возможно ли коммерческое использование кода шаблонизатора |
| Дмитрий Кóтеров wrote: |
|
Вы можете использовать PHP-код в каких угодно проектах и как угодно, однако Вы не должны продавать шаблонизатор отдельно (например, под собственной маркой). |
Понятно, спасибо за разъяснения.
| Дмитрий Кóтеров wrote: |
|
если очень хочется делать "параметрический блок" (который не поддерживается в этой версии) |
А планируются новые версии?
|
|
| Back to top |
|
 |
Евгений Бондарев
Модератор

Joined: 10 Mar 2003
Posts: 723
Карма: 15 поощрить/наказать
Location: Харьков/Киев, Украина
|
Posted: Tue May 20, 2003 9:51 am (спустя 5 часов 33 минуты)
Post subject:
|
|
| Лобач Олег wrote: |
|
Вот поэтому я и спрашивал как можно уйти от PHP-кода в шаблоне и HTML-кода в блоке-генераторе |
Дмитрий будет ругаться, но я пользуюсь XTemplate
|
|
| Back to top |
|
 |
WingedFox
Профессионал

Joined: 29 Apr 2003
Posts: 4064
Карма: 263 поощрить/наказать
Location: Питер
|
Posted: Thu May 29, 2003 7:16 am (спустя 8 дней 21 час 25 минут)
Post subject:
|
|
Дмитрий Кóтеров:
Свежий Денвер (10.02.2003) + shop.zip дают очень интересный GET: === URL = http://test/index.html?cid=95&id=4
$_GET = Array ( [/index_html?cid] => 95 [id] => 4 ) === Параметрический блок оправдан при выводе новостной ленты со сложным дизайном и кучей полей. Проще генерировать каждый кусок ленты внутри блока, так, чтобы наружу торчало минимальное количество ушей. Дизайнеру один раз показал, какой циферкой в Blk() менять количество рисуемых новостей, а какой - отрезать заголовок нужной длины, а дальше - пусть он творчески мыслит, не дергая при этом программера :)
|
|
| Back to top |
|
 |
Евгений Бондарев
Модератор

Joined: 10 Mar 2003
Posts: 723
Карма: 15 поощрить/наказать
Location: Харьков/Киев, Украина
|
Posted: Thu May 29, 2003 9:57 am (спустя 2 часа 40 минут)
Post subject:
|
|
| WingedFox wrote: |
|
дают очень интересный GET |
Проверьте в разных браузерах. Это может ИЕ глючить. У меня такое было...
|
|
| Back to top |
|
 |
WingedFox
Профессионал

Joined: 29 Apr 2003
Posts: 4064
Карма: 263 поощрить/наказать
Location: Питер
|
Posted: Thu May 29, 2003 1:39 pm (спустя 3 часа 42 минуты)
Post subject:
|
|
| IE5.5 SP2, NN4.8, NN6.2, Opera5, Opera 7.10
|
|
| Back to top |
|
 |
Дмитрий Кóтеров
Администратор

Joined: 10 Mar 2003
Posts: 13569
Карма: 407 поощрить/наказать
|
Posted: Thu May 29, 2003 4:47 pm (спустя 3 часа 7 минут)
Post subject:
|
|
WingedFox:
Вроде бы эта ошибка исправлялась уже... Сделайте phpinfo(). Вероятно, в те времена, когда писался код,;_ПУЕ просто еще не было, использовался HTTP_GET_VARS или что-то вроде того. В любом случае, этот код — лишь демонстрационный и «книжный», не стоит его применять без всяких изменений.
|
|
| Back to top |
|
 |
WingedFox
Профессионал

Joined: 29 Apr 2003
Posts: 4064
Карма: 263 поощрить/наказать
Location: Питер
|
Posted: Thu May 29, 2003 6:25 pm (спустя 1 час 38 минут)
Post subject:
|
|
Я нашел топик на Xpoint'е, там действительно все исправлено. Но именно этот вариант выдает такую строчку. ===phpinfo()=== query_string = /index.html?cid=95&id=4 === А будущее у этого шаблонизатора есть?
|
|
| Back to top |
|
 |
Дмитрий Кóтеров
Администратор

Joined: 10 Mar 2003
Posts: 13569
Карма: 407 поощрить/наказать
|
Posted: Thu May 29, 2003 7:45 pm (спустя 1 час 19 минут)
Post subject:
|
|
| Зависит от Вас (-;
|
|
| Back to top |
|
 |
WingedFox
Профессионал

Joined: 29 Apr 2003
Posts: 4064
Карма: 263 поощрить/наказать
Location: Питер
|
Posted: Thu May 29, 2003 11:11 pm (спустя 3 часа 26 минут)
Post subject:
|
|
Нда... Как правильно Вы заметили на Xpoint'e, putenv("QUERY_STRING") почему-то не работает... Посмотрим, что скажут разработчики PHP. Если удастся побороть передачу параметров, то будущее у него будет :) Кстати, вот еще один интересный глюк - если использовать ErrorDocument, то в _GET попадает только имя обработчика. PS: "В глубине Сибирских руд" я выкопал систему Pager+Scripter, датированную 2000 годом =) Она так и осталась в v1.0? PPS: Может быть имеет смысл перенести кусок темы в "Прочее", чтобы не разводить тут оффтопик?
|
|
| Back to top |
|
 |
WingedFox
Профессионал

Joined: 29 Apr 2003
Posts: 4064
Карма: 263 поощрить/наказать
Location: Питер
|
Posted: Fri May 30, 2003 12:24 am (спустя 1 час 13 минут)
Post subject:
|
|
Ладно, пусть с ними. Пока еще дождусь ответа... А работать надо прямо сейчас (*8 К счастью, мне "QUERY_STRING" не нужна. Дмитрий Кóтеров:
Добавьте в какой-либо форме вот этот вот багфикс, пожалуйста.
| Code (php): |
скопировать код в буфер обмена |
// Иногда в $_GET заносится и путь к скрипту// Правим это недоразумение$q = ""; foreach ($_GET as $k => $v) { unset($_GET[$k]); $k= preg_replace("/^[^?]*\\?/", "", $k); $HTTP_GET_VARS[$k]= $v; $q .= "&". $k. "=". ($v); }$_GET= $HTTP_GET_VARS; parse_str($q); unset ($q, $k, $v); |
Кстати, все забываю сказать Вам "Спасибо" за эту отличную идею организации шаблонизатора.
|
|
| Back to top |
|
 |
Дмитрий Кóтеров
Администратор

Joined: 10 Mar 2003
Posts: 13569
Карма: 407 поощрить/наказать
|
Posted: Fri May 30, 2003 12:59 am (спустя 34 минуты)
Post subject:
|
|
| Есть и другой способ запуска обработчика на PHP, более перспективный и лишенный недостатка с GET.
Как видите, в хвосте нет вопросика. При этом параметры передаются насколько другим способом (см. phpinfo(), чтобы понять, как именно). Вообще говоря, этот способ более корректный и не обладает никакими побочными эффектами.
|
|
| Back to top |
|
 |
WingedFox
Профессионал

Joined: 29 Apr 2003
Posts: 4064
Карма: 263 поощрить/наказать
Location: Питер
|
Posted: Fri May 30, 2003 1:30 am (спустя 30 минут)
Post subject:
|
|
Есть, но тогда надо сразу переписывать код... Этот путь не подходит для текущей версии "шаблонизатора". Так что, предложенный мной патч - это наименьшее зло.
|
|
| Back to top |
|
 |
Дмитрий Кóтеров
Администратор

Joined: 10 Mar 2003
Posts: 13569
Карма: 407 поощрить/наказать
|
Posted: Fri May 30, 2003 1:46 am (спустя 16 минут)
Post subject:
|
|
| Не так и много там «переписывать». Всего-то в одном месте заменить.
|
|
| Back to top |
|
 |
Дмитрий Кóтеров
Администратор

Joined: 10 Mar 2003
Posts: 13569
Карма: 407 поощрить/наказать
|
Posted: Fri May 30, 2003 1:51 am (спустя 4 минуты)
Post subject:
|
|
Вот Вам кусок кода, вырежьте из него все, что нужно. См. функцию doPseudoRedirect.
| Description: |
|
 Download |
| Filename: |
Humanoid.zip |
| Filesize: |
3,16 KB |
| Downloaded: |
629 Time(s) |
|
|
| Back to top |
|
 |
Shura
Guest
Карма: 377 поощрить/наказать
|
Posted: Sun Jun 22, 2003 11:06 pm (спустя 23 дня 21 час 15 минут)
Post subject: Изменения TemplateHandler.php
|
|
| Дмитрий Кóтеров wrote: |
Есть и другой способ запуска обработчика на PHP, более перспективный и лишенный недостатка с GET. Код (Apache config): Action templhandler "/_Kernel/Template/TemplateHandler.php" AddHandler templhandler .html |
Только надо ещё убрать (или закомментировать) строки @putenv("REQUEST_URI=". $GLOBALS["HTTP_ENV_VARS"]["REQUEST_URI"]= $GLOBALS["REQUEST_URI"]= getenv("QUERY_STRING") ); @putenv("QUERY_STRING=". $GLOBALS["HTTP_ENV_VARS"]["QUERY_STRING"]= $GLOBALS["QUERY_STRING"]= ereg_Replace("^[^?]*\\?","",getenv("QUERY_STRING")) ); в файле TemplateHandler.php просто потому, что они становятся не нужны. Я Вас Правильно понял?
|
|
| Back to top |
|
 |
Дмитрий Кóтеров
Администратор

Joined: 10 Mar 2003
Posts: 13569
Карма: 407 поощрить/наказать
|
Posted: Sun Jun 22, 2003 11:31 pm (спустя 25 минут)
Post subject:
|
|
| Да, вероятно.
|
|
| Back to top |
|
 |
WingedFox
Профессионал

Joined: 29 Apr 2003
Posts: 4064
Карма: 263 поощрить/наказать
Location: Питер
|
Posted: Sun Jun 22, 2003 11:38 pm (спустя 6 минут)
Post subject:
|
|
Извините за долгое молчание, я был очень далеко от просторов интернета =) Комментировать эти строчки не обязательно. Я еще не до конца проверил, может быть что-то и всплывет... Достаточно заменить в TemplateHandler.php
на
и
на
в Librarian.php
на
Если ничего не забыл, то это - все. Будет желание - аккуратно проверьте все переменные окружения, чтобы они указывали на правильные направления.
|
|
| Back to top |
|
 |
WingedFox
Профессионал

Joined: 29 Apr 2003
Posts: 4064
Карма: 263 поощрить/наказать
Location: Питер
|
Posted: Sun Jun 22, 2003 11:44 pm (спустя 5 минут)
Post subject:
|
|
Хм... собрав все в кучу я нашел универсальный путь: замените в Librarian.phl
на
| Code (php): |
скопировать код в буфер обмена |
@ putenv("SCRIPT_NAME=". $GLOBALS["HTTP_ENV_VARS"]["SCRIPT_NAME"]= $GLOBALS["SCRIPT_NAME"]= ereg_Replace("\\?.*", "", ($_SERVER["PATH_INFO"])? $_SERVER["PATH_INFO"]: $GLOBALS["HTTP_ENV_VARS"]["REQUEST_URI"])); |
добавьте в TemplateHandler.php после @putenv("QUERY_STRING=".....);
| Code (php): |
скопировать код в буфер обмена |
// Иногда в $_GET заносится и путь к скрипту// Правим это недоразумение$q = ""; foreach ($GLOBALS["HTTP_GET_VARS"] as $k => $v) { unset($_GET[$k]); $k= preg_replace("/^[^?]*\\?/", "", $k); $GLOBALS["HTTP_GET_VARS"][$k]= $v; $q .= "&". $k. "=". ($v); }$_GET=& $GLOBALS["HTTP_GET_VARS"]; parse_str($q); unset ($q, $k, $v); |
и все будет работать корректно при любом типе обработчика.
Last edited by WingedFox on Mon Jun 23, 2003 1:01 am; edited 1 time in total
|
|
| Back to top |
|
 |
Дмитрий Кóтеров
Администратор

Joined: 10 Mar 2003
Posts: 13569
Карма: 407 поощрить/наказать
|
Posted: Mon Jun 23, 2003 12:06 am (спустя 22 минуты)
Post subject:
|
|
| Только, разве что, рекомендую
При любом типе обработчика — это хорошо.
|
|
| Back to top |
|
 |
WingedFox
Профессионал

Joined: 29 Apr 2003
Posts: 4064
Карма: 263 поощрить/наказать
Location: Питер
|
Posted: Mon Jun 23, 2003 1:37 am (спустя 1 час 30 минут)
Post subject:
|
|
Спасибо. Забыл, что $_GET может быть большим =) Обычно у меня в нем лежат 1-2 параметра...
|
|
| Back to top |
|
 |
Shura M
Заглянувший
Joined: 23 Jun 2003
Posts: 2
Карма: 0 поощрить/наказать
|
Posted: Mon Jun 23, 2003 12:36 pm (спустя 10 часов 58 минут)
Post subject:
|
|
| WingedFox wrote: |
|
Комментировать эти строчки не обязательно. |
Тогда задам вопрос прямо. Объясните ущербность удаления двух putenv из TemplateHandler.php, если REQUEST_URI и QUERY_STRING и без них содержат правильное значение (я имею в виду случай Action templhandler "/_Kernel/Template/TemplateHandler.php" а не Action templhandler "/_Kernel/Template/TemplateHandler.php?" ). Более того первый putenv приведёт в занесению в REQUEST_URI значения QUERY_STRING, которое уже имеет правильное значение (т. е. содержит значения параметров после символа '?', а не идентификатор ресурса), что приведёт к неверному REQUEST_URI. Я не прав? Тогда в чём?
|
|
| Back to top |
|
 |
WingedFox
Профессионал

Joined: 29 Apr 2003
Posts: 4064
Карма: 263 поощрить/наказать
Location: Питер
|
Posted: Mon Jun 23, 2003 12:59 pm (спустя 22 минуты)
Post subject:
|
|
На самом деле, если Вы не собираетесь разбирать REQUEST_URI руками, то ничего страшного не случится. Далее нигде нет кода, которому может понадобиться REQUEST_URI. Если есть желание, Вы можете обернуть эти putenv в
|
|
| Back to top |
|
 |
Дмитрий Кóтеров
Администратор

Joined: 10 Mar 2003
Posts: 13569
Карма: 407 поощрить/наказать
|
Posted: Mon Jun 23, 2003 2:23 pm (спустя 1 час 24 минуты)
Post subject:
|
|
| Это обязательно нужно сделать.
|
|
| Back to top |
|
 |
WingedFox
Профессионал

Joined: 29 Apr 2003
Posts: 4064
Карма: 263 поощрить/наказать
Location: Питер
|
Posted: Mon Jun 23, 2003 3:02 pm (спустя 39 минут)
Post subject:
|
|
Поправлено. Правда, у меня проблем не было... Пока что. 8*)
| Description: |
| Исправленные TemplateHandler.php и Librarian.phl |
|
 Download |
| Filename: |
_Kernel.zip |
| Filesize: |
4,12 KB |
| Downloaded: |
627 Time(s) |
|
|
| Back to top |
|
 |
WingedFox
Профессионал

Joined: 29 Apr 2003
Posts: 4064
Карма: 263 поощрить/наказать
Location: Питер
|
Posted: Fri Jul 11, 2003 4:38 am (спустя 17 дней 13 часов 35 минут)
Post subject: Обновление шаблонизатора
|
|
Обновление №1: в Template.phl добавлена функция
| Code (php): |
скопировать код в буфер обмена |
// Добавляет фильтр в список. // Формат функций идентичен описанному в комментарии к $GLOBALS["BLOCKFILTERS"] // Будьте внимательны! function AddFilter($filter) { $GLOBALS["BLOCKFILTERS"][]=$filter; } |
и изменена функция
| Code (php): |
скопировать код в буфер обмена |
// Запускает все фильтры для блока.// Модифицированный вариант - запускает только те фильтры, которые // существуют в природе.function _ProcessContent ($name,& $cont, $url){ foreach($GLOBALS["BLOCKFILTERS"] as $F) if (function_exists($F)) $F($name, $cont, $url); } |
Теперь можно добавлять фильтры из любого места программы. Обновление №2: Теперь возможно использование функций для финальной обработки контента. Например - упаковки. В Template.phl добавлено:
| Code (php): |
скопировать код в буфер обмена |
// В этом массиве перечислены функции, которые выполняются по окончании обработки// всех блоков. По умолчанию, у меня здесь подключается библиотека для компрессирования// содержимого страничек. Формат функций:// void PostProcFunc(string &$content)$GLOBALS["POSTPROC"]= array(); // Функция для добавления заключительного обработчика в массив.function AddPostProcFunc ($func) { $GLOBALS["POSTPROC"][]= $func; }// Запускает все существующие заключительные обработчики.function _ExecPostProc (& $cont) { foreach ($GLOBALS["POSTPROC"] as $F) if (function_exists($F)) $F($cont); } |
и Templatehandler.php изменены последние строчки:
Пример использования пост-обработчика (для чего это все и писалось 8*))
Библиотеку class.gzip_encode можно скачать с www.leknor.com С пожеланиями и предложениями - добро пожаловать!
| Description: |
| Обновленные Template.phl и TemplateHandler.php |
|
 Download |
| Filename: |
_Kernel.zip |
| Filesize: |
6,23 KB |
| Downloaded: |
442 Time(s) |
|
|
| Back to top |
|
 |
Исаенков Павел
Заглянувший
Joined: 18 May 2003
Posts: 8
Карма: 0 поощрить/наказать
|
Posted: Sat Jul 12, 2003 10:14 pm (спустя 1 день 17 часов 35 минут)
Post subject:
|
|
Дмитрий Кóтеров:
Я как понял ваш пример работает на основе .htaccess и директивы Action. Это все хорошо, если у твоего хостинга доступна эта директива, а если она не доступна или вообще нет поддержки .htaccess то что тогда делать. Можно ли как нибудь обойтись без этого файла или никак нельзя?
|
|
| Back to top |
|
 |
WingedFox
Профессионал

Joined: 29 Apr 2003
Posts: 4064
Карма: 263 поощрить/наказать
Location: Питер
|
Posted: Sat Jul 12, 2003 10:43 pm (спустя 29 минут)
Post subject:
|
|
Поскольку Дмитрий Кóтеров в отпуске, то отвечу я 8) Если нельзя работать с .htaccess, то надо менять хостера %*) Главное, чтобы была возможность прописать тем или иным путем обработчик для .html файлов.
| Code (Apache config): |
скопировать код в буфер обмена |
# Связываем имя обработчика с конкретным файлом. Action templhandler "/_Kernel/Template/TemplateHandler.php" # Action templhandler "/_Kernel/Template/TemplateHandler.php?"
# Документы этого типа мы желаем "пропускать" через наш обработчик. AddHandler templhandler .html |
Все остальное - это исключительно директивы движка. Если хост не будет впадать в коматоз, видя .htaccess, то можно оставить все как есть, иначе - можно поправить код скрипта. Возможно, если будет достаточно желающих, то я сделаю возможность использовать произвольный файл.. Пока что - не вижу необходимости. Желаю удачи!
|
|
| Back to top |
|
 |
Исаенков Павел
Заглянувший
Joined: 18 May 2003
Posts: 8
Карма: 0 поощрить/наказать
|
Posted: Sun Jul 13, 2003 8:35 pm (спустя 21 час 51 минуту)
Post subject:
|
|
| WingedFox wrote: |
|
Если хост не будет впадать в коматоз, видя .htaccess, то можно оставить все как есть, иначе - можно поправить код скрипта. |
Из-за чего он может впадать в каматоз?
|
|
| Back to top |
|
 |
WingedFox
Профессионал

Joined: 29 Apr 2003
Posts: 4064
Карма: 263 поощрить/наказать
Location: Питер
|
Posted: Sun Jul 13, 2003 11:12 pm (спустя 2 часа 37 минут)
Post subject:
|
|
Из-за наличия этого файла. Пару раз я встречался с тем, что при появлении .htaccess в одной из директорий сайта всплавала "Error 500".
|
|
| Back to top |
|
 |
Исаенков Павел
Заглянувший
Joined: 18 May 2003
Posts: 8
Карма: 0 поощрить/наказать
|
Posted: Mon Jul 14, 2003 10:38 am (спустя 11 часов 25 минут)
Post subject:
|
|
| WingedFox wrote: |
|
Пару раз я встречался с тем, что при появлении .htaccess в одной из директорий сайта всплавала "Error 500". |
У меня как раз такая ошибка и вылазила на хостинге. Это значит что директива Action и AddType не поддерживаются?
|
|
| Back to top |
|
 |
WingedFox
Профессионал

Joined: 29 Apr 2003
Posts: 4064
Карма: 263 поощрить/наказать
Location: Питер
|
Posted: Mon Jul 14, 2003 11:16 am (спустя 38 минут)
Post subject:
|
|
Скорее всего - да. Тут лучше написать письмо в саппорт с просьбой объяснить, в чем дело.
|
|
| Back to top |
|
 |
Дмитрий Кóтеров
Администратор

Joined: 10 Mar 2003
Posts: 13569
Карма: 407 поощрить/наказать
|
Posted: Tue Jul 29, 2003 2:25 pm (спустя 15 дней 3 часа 8 минут)
Post subject:
|
|
Только одно маленькое замечание. По логике, система пост-фильтров не является частью шаблонизатора. Она должна быть выполнена в виде независимой надстройки. В самом деле, шаблонизатор — это система для предобразования текстовой информации и сборки из блоков окончательной страницы. Ключевое понятие для нее — блок, и, по сути, все, что делает шаблонизатор, — это вычисление тела указанного блока (по умолчанию Output). В то же время, сжатие контента должно выполняться уже после этого процесса. И для нее не важно, был ли до нее запущен шаблонизатор, или нет. Кроме того, сжатие — это только одна из частных задач, которая должна выполняться обязательно в конце списка фильтров. Для этого в PHP существует функция ob_gzhandler(). Прикрепляю код, который используется для пост-фильтрации контента в данном форуме. Вообще говоря, HTML_SemiParser умеет три вещи: - заменять куски кода по регулярному выражению; - заменять целые тэги (включает парсер атрибутов тэгов); - заменять невложенные контейнеры вроде <b>...</b>. См. комментарии в коде. Простой пример использования:
| Code (php): |
скопировать код в буфер обмена |
ob_start(); ## тут код#$text = ob_get_contents(); ob_end_clean(); include_once "HTML/SemiParser.php"; $parser =& new HTML_SemiParser (); # например: удаляет все пробелы перед </td>$parser-> addReplace("#\s+(?=</td>)#s", create_function('', 'return "";')); # обрабатывает все тэги <img>$parser-> addTag("img", "img_replacer"); $text = $parser-> process($text); echo ob_gzhandler($text); // <IMG> tag processor.function img_replacer ($attr) { // No need to set width-height. if (isSet($attr['width']) || isSet($attr['height']) || ! isSet($attr['src'])) return; // Determime picture parameters. $isz = @HTML_FormPersister::getimagesize_byUri ($attr['src']); if(!@ $isz) return; $attr['width'] = $isz[0]; $attr['height'] = $isz[1]; return $attr; } |
| Description: |
|
 Download |
| Filename: |
HTML_SemiParser.zip |
| Filesize: |
2,78 KB |
| Downloaded: |
401 Time(s) |
Last edited by Дмитрий Кóтеров on Tue Jul 29, 2003 3:27 pm; edited 1 time in total
|
|
| Back to top |
|
 |
WingedFox
Профессионал

Joined: 29 Apr 2003
Posts: 4064
Карма: 263 поощрить/наказать
Location: Питер
|
Posted: Tue Jul 29, 2003 3:00 pm (спустя 35 минут)
Post subject:
|
|
Я вполне с этим согласен. Тем не менее, эта система все равно должна интегрироваться в шаблонизатор для уменьшения сложностей при настройке и в работе. Вернее, она интегрируется не в сам шаблонизатор, а в обработчик, которому шаблонизатор отдает результат своей работы. Сейчас я уже вынес все ее функции в отдельный модуль, дабы код стал более легко читаемым и не смешивался с кодом самого шаблонизатора. Кстати, я заметил, что ob_gzhandler() не всегда срабатывает. По этому, я до сих пор предпочитаю использовать class.gzip_encode. А Вы не против, что я публикую обновления и дополнения к системе? 8*)
|
|
| Back to top |
|
 |
Дмитрий Кóтеров
Администратор

Joined: 10 Mar 2003
Posts: 13569
Карма: 407 поощрить/наказать
|
Posted: Tue Jul 29, 2003 3:04 pm (спустя 3 минуты)
Post subject:
|
|
| WingedFox wrote: |
|
А Вы не против, что я публикую обновления и дополнения к системе? 8*) |
Как раз наоборот — я очень рад (-; Вообще говоря, у меня есть уже послностью переписанная «в стиле PEAR» версия шаблонизатора (сильно измененная), но она еще не обкатана.
|
|
| Back to top |
|
 |
WingedFox
Профессионал

Joined: 29 Apr 2003
Posts: 4064
Карма: 263 поощрить/наказать
Location: Питер
|
Posted: Tue Jul 29, 2003 3:17 pm (спустя 12 минут)
Post subject:
|
|
Это хорошо 8*) А она будет доступна к использованию? А то я тут думал спросить у Вас разрешения открыть проект на sf.com =)
|
|
| Back to top |
|
 |
|