- Andrey Cherezov: Все wiki-линки, включая «form action=" должны формироваться в одной php-функции, и максимально настраиваемой из конфига.
- RomanIvanov: Я был бы благодарен за более подробное описание :-)
- AndreyCherezov: В идеале – html шаблон ссылки со вставленными в нужных местах Page Name и Actions (if any).
- RomanIvanov: Всё-таки описание недостаточное, мягко скажем. А как же text, icon, target и куча остальных параметров, которые есть у ссылки? А то, что ссылки бывают internal и external, и в первом случае есть tag, а во втором – URL? А то, что перед tag должно стоять – оно же тоже динамическое – зависит от инсталляции. В общем, я не могу придумать за вас фичу, которую понимаете только вы. Если она вам нужна – опишите её подробно, пожалуйста. Желательно – включая синтаксис шаблона и место, где он должен лежать.
- AndreyCherezov: Понятно, что external ссылку особо не понастраиваешь – работать перестанет. Но завести для внешних ссылок отдельный шаблон – наверное не проблема. Иконку перед ссылкой – ну назовите её Icon. Если стиль динамический – и ему переменную дайте. Синтаксис – наверное простейший, как в ..." строках PHP, чтобы вам было проще его разворачивать. Или как угодно иначе, главное чтобы можно было менять всё между этими подставляемыми переменными. Шаблон должен лежать в конфиге ваки, чтобы при апдейте сырцов изменения не терялись. Я думаю, вы сами здесь всё прекрасно понимаете ;) Кстати, раз уж зашла речь об иконках, то Interwiki-линкам тоже можно дать собственную иконку.
- RomanIvanov: Хорошо, что делать, я понял. Теперь расскажите, зачем это нужно.
- AndreyCherezov: Вы знаете, что мы прикручиваем ваку как модуль к приобретенной нами системе управления сайтом. Вака там ставится как хандлер ненайденных страниц фактически, позволяя расширять контент альтернативным способом (docflow в sitemanager кому-то нравится, но не мне). Собственно php-файлы ваки лежат достаточно глубоко в дереве сайта, поэтому ссылки на прямой вызов wacko.php выглядят совсем неприлично. К тому же двуязычность системы добавляет еще один уровень. Поэтому нужно транслировать ссылки между коротким /PageName и длинным представлением. Для этого в веб-серверах применяются два способа: 1) использование CGI-переменной PATH_INFO, но её вака не понимает, 2) рекомендуемый вами способ mod_rewrite, он не такой логичный как PATH_INFO, но работает в ваке. При использовании mod_rewrite (в отличие от PATH_INFO) вылазят бяки при прикрутке ваки: 1) файл sitemanager'а, из которого включается вака, находится в корне, а сама вака как модуль находится глубоко в недрах, т.е. если делать rewrite прямо на ваку, то включить собственно основную систему проблемно (да и не логично включать систему в модуль :-); 2) даже если извратиться в (1), то статистика sitemanager и сервера будет содержать уже не /PageName, а /тра-ля-ля-ля/ля-ля?Page Name, и если в логанализе веб-сервера еще можно выкрутиться (Analog рулез :), то в sitemanager'е вообще статистика становится бесполезной. Поэтому приходится включать все-таки ваку из /index.php, подставляя ваке PageName и т.д. до include; 3) но вака не сдается в своём желании стать главной программой на сервере :) – она знает своё размещение, и все линки генерит на /её-размещение-тра-ля-ля, и далее уже главная система оказывается за бортом, если не курочить исходники ваки. Byka User героически эти сложности преодолевает, минимизируя необходимые изменения ваки – но это в ущерб производительности и прочим частям системы. Это просто хэки. А нужно вещи делать красиво. Если вы добавите требуемые три строки (обработку шаблонов) в ваку, то её «интеграбельность» сильно повысится, приблизившись к Php Wiki и прочим многоопытным системам. Достойная причина? :)
- Ку Куц: ага, то есть вам нужны только внутренние ссылки. I see. Буду думать.
- AndreyCherezov: Мне нужны и внешние, но с внешними у ваки проблем нет :) Хотя было бы интересно и внешние ссылки сделать шаблон, тогда можно было приписать перед внешней ссылкой локальный скрипт, считающий популярность внешних ссылок и «уходы с сайта».
- Ку Куц: I see. Думаю. А у вас тема своя или default?
- AndreyCherezov: Своя вроде. Byka User делает. См.
http://bitrix.eserv.ru/BitrixWacko
- Ку Ме: предложение — часть кода Wakka::Link, отвечающая за формирование уже вако-линков вызывать через IncludeBuffered из темы.
- AndreyCherezov: Не понял. Byka User поймёт наверное. Забавно получилось – ставлю на свой новый рабочий сайт единственную из дюжины испытанных вик, в исходники которой не заглядывал, и которую до этого не использовал :) Но нутром чую, что если сделаете шаблоны, как описано выше, то наши проблемы уйдут сразу.
- Ку Ме: по итогам предварительного обсуждения — сошлись на шаблонах.
- AndreyCherezov: Пока шаблонов нет, можно снять часть проблем минимальным исправлением wakka.php – разрешить задавать theme_url в конфиге, а в wakka.php проверять это. Если установлен, то не вычислять theme_url, а оставить как есть. На существующих инсталяциях никак не скажется, а встраивание в другие сайты облегчит. Код примерно такой (обавлен if вокруг вычисления theme_url):
<? if(!isset($wakkaConfig["theme_url"]) {
$wakkaConfig["theme_url"]=$wakkaConfig["root_url"]."themes/".$wakkaConfig["theme"]."/";
} ?>
- Ку Ме в очередной раз ничего не понял.
- AndreyCherezov: Код непонятный? Он даст возможность задавать theme_url в конфиге явно, отвязанно от root_url. А если не задано, то вычислять, как и раньше. В общем, никому не повредит.
- Ку Ме в очередной раз не понял зачем.
- AndreyCherezov: Чтобы файлы темы можно было класть куда угодно, а не только в подкаталог themes в главном каталоге ваки. Ну не у всех вака является главной программой на сервере. Про включение ваки в качестве модуля я подробно писал выше, и вроде с моими доводами уже соглашались. В общем, если все-равно не понятно :), просто включите эти две дополнительные строки (if вокруг вашей строки вычисления theme_url) в следующую версию, вы изменения поведения ваки не заметите, а мы почувствуем заметное облегчение, т.к. не придется самим лишние хэки в код вставлять, а будет достаточно в конфиге добавить урл темы.
AndreyCherezov /27.08.2003 08:43/ Все-таки нужен шаблон html-кода ссылки на внешний сайт. Чтобы одной строкой конфига можно было изменить вид сразу всех
внешних ссылок в ваке с
http://www.внешний.сайт/ на (например)
http://www.мой.сайт/юзер_уходит_на_сайт.php?site=http://www.внешний.сайт/ – для учета популярности внешних ссылок и собственно собыйтий ухода.