Переработать guide.xsl для сайта

Убрать внешнее оформление страниц так, чтобы сгенерированный текст можно было хранить в нодах.

Тестовая страница здесь.
И вот еще одна посложнее: Составление документации для Gentoo Linux в формате GuideXML - самая свежая, еще не проверенная версия, взятая из bug-tracker'а gentoo.org. Заодно можно проверить. :)

Все готово. Высылаю на info@gentoo.ru xsl'ку и css'ку. По-моему, получилось очень даже симпатично :). Конечно, требуется полноценное и всестороннее тестирование, но, похоже, это релиз. ;)

Выложил. http://gentoo.ru/new/misc/guide.css
но там есть еще кое-какие конфликты:
1) класс .menu используется в дизайне сайта, поэтому я его пока закомментировал, т.к. меню расползлось по вертикали немного.
2) в классе .content закомментировал пока выравнивание по краям, т.к. этот класс также используется в меню - оно тут не в кассу.

В остальном все зашибись. :)

Насчет .menu и .content - поразмыслю на досуге. Просто когда я тестил css'ку, то почему-то не заметил, что они влияют на дизайн сайта :(.

Блин, с "содержанием" все равно лажа - какого-то фига подставляется URL http://gentoo.ru/new/ :( (к примеру, http://gentoo.ru/new/#doc_chap2) Метка для перехода по ссылке должна же подставляться к URL страницы!!! Не понимаю... Есть идеи?

Посмотри в заголовк страницы:

<base href="http://gentoo.ru/new/" />

Походу, из-за этого косяк.. что делать, пока не знаю... надо подумать.

А если убрать эту директиву, что-нибудь изменится? Или она друпалу нужна?

Судя по всему, нужна. Сохранил страницу и убрал эту директиву - перестали загружаться картинки, css'ки и прочее.. Зато ссылки стали работать нормально.. Вообще странное поведение браузеров наблюдается: #bla-bla - это якорь на текущей странице, если перед ним ничего не идет. Но убеждать разработчиков, что они неправы - дело гиблое... хотя, может быть, в стандарте так написано - я не в курсе. :) У друпала много на этом завязано, похоже. Я, конечно, еще этот вопрос исследую, но пока будем ориентироваться на 2 варианта решения:

  1. В модуле (который мы все никак не возьмемся писать) сделать замену специальной последовательности, которую будет вставлять XSLT, на абсолютную ссылку (например, @anchor(doc_chap3) => http://gentoo.ru/new/node/190#doc_chap3). Через одно место, конечно, но делать нечего. Особого проигрыша в производительности, я думаю, не будет, хоть и придется регулярные выражения использовать.
  2. Отказаться от ссылок на разделы к такой-то матери. Самое простое решение - наверное, оно не для нас. Но будем считать его планом B.

Вообщем, с XSL-ем мы закончили, в CSS'ках осталось определиться с классами .menu и .content (они в guide.css нужны вообще? :)). И можно ставить задачу php-программистам, забубенить модуль для Drupal'а.

P.S. Тоше уже медаль полагается или хотя бы пиво. Это по-любому. :))

Итак, я пошел по первому пути и сделал замену. Теперь код подготовки текста к выводу выглядит так:

<?php
$style_file = PATH_TO_FILES . 'guide.xsl';
$xml_file = PATH_TO_FILES .  'portage1.xml';

$command = "xsltproc $style_file $xml_file";

exec($command, $text);
$text = implode("\n", $text);

global $base_url, $_GET;
$doc_url = $base_url . '/' . $_GET['q'];

echo preg_replace('/anchor\((.*?)\)/', $doc_url . '#${1}', $text);

?>

Ссылки заработали. :)

Круто! :) Тока ещё как минимум две недоработки: надо убрать один из заголовков (а то сейчас на странице вставляются и "дружим xsl и drupal" и "Портежи-1. Устройство системы"), и в заголовок страницы название доки выводить (это и вообще нужно, и для поисковиков пригодится).

Насчет сss: .menu можно смело вырезать -- похоже оно юзалось для заготовки обрамления. А .content нужно оставить закомментированным - сейчас вроде все выглядит приятно :), потому что подошел drupal'овский .content, и пусть так и остается. Другие классы пришлось поправлять, из-за того, что выглядело все так себе, а здесь все вроде ок.

С PHP я знаком гораздо лучше, чем с XSL, (точнее, с XSL познакомился в процессе работы с guide.xsl :), то есть три недели назад) так что могу заняться и модулем. Тока сессия подступает, так что могу неожиданно сгинуть ;). Да и исходники друпаловские ещё в глаза не видел...

За пиво да медаль пасиб...:) Приятно кому-то помочь. В этом, наверное, и есть смысл комунити :) Гы!..

Этот issue, наверное, можно прикрыть. А то все "состояние: активен". Хоть что-нибудь в issue tracker'e должно быть "выполнено"!.. :)

На заголовки пока не смотрим, т.к. механизм вывода XML-файлов будет немного другим: скорее всего, файлы будут браться не из БД, а из файлов, вытащенных из CVS-репозитория.
Меня тут Святогор попросил разгрести переводы в bug tracker'е Gentoo.org, а потом мы вместе с ним будем решать, как это все организовать.
Задачу закрыл. Спасибо. :)

P.S. Насчет CSS'ок понял - исправим.

Ну так что? Как файл?

Извиняюсь - времени не было ответить. Я пару дней назад уже выложил твою версию файла. Теперь эта страница генерируется с его помощью. Надо решить что-то с кофликтами стилей.

А со стилями никаких проблем и нет. Там конфликтуют только три стиля, среди них - code, по-моему. А вот другая проблема - то что селектор содержания глючит - отсекает часть URL, связанную с нодами. Хотя, по всем канонам JavaScript'а, вроде не должен. Не знаю, что и делать...:(

На досуге переименую конфликтующие стили и составлю css'ку специально для использования с нашим guide.xsl'ем.

Цитата:
А вот другая проблема - то что селектор содержания глючит - отсекает часть URL, связанную с нодами. Хотя, по всем канонам JavaScript'а, вроде не должен. Не знаю, что и делать...:(

Я думаю, JavaScript'овый селектор можно заменить обычным списком ссылок - Аспирин сразу предложил, но мне было влом. :)

Цитата:
На досуге переименую конфликтующие стили и составлю css'ку специально для использования с нашим guide.xsl'ем.

Родина тебя не забудет. :)

Файл отослал - подробности в письме :)

Какие делать названия css-классов? Оставлять исходные? Или, может, все переименовать, добавив какую-нибудь приставку?
И куда заливать итоговую xsl-ку?

XSL-ку можешь прислать по почте на

или

- мы выложим как промежуточный релиз.
С css я пока не разбирался. Вообще надо бы стили gentoo.org сравнить со стилями, которые у нас на сайте используются (drupal.css и style.css) и привести стили Drupal'а в соответствие с потребностями, которые возникают при выводе документации (например, как выводить скриншоты и листинги и т.п.).
Хорошо бы стиль оформления стндартный для Gentoo при этом сохранить.

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

Пожалуй, ты прав. Давай оставим названия стилей неизменными, но в любом случае надо проконтролировать, чтобы не было конфликтов стилей.
Мы можем сделать либо отдельный css-файл для вывода XML-контента, либо прописать стили прямо в стандартной css'ке.. первый вариант, конечно предпочтительнее, чтобы обновлять систему было проще.

Если никто ещё не взялся, могу занятся. Только за сроки не отвечаю (естественно, в разумных пределах) :), все-таки заняться могу только в свободное от всего (работа, учеба, etc...) время. И в тесном сотрудничестве с человеком, который знает, как все должно выглядеть в итоге в html'е (насколько я понял, этот человек - Ustas) :)

Вот здесь лежит уже немного переделанный guide.xsl. На его основе генерируется эта страница. :) То что идет после комментария с последовательностью знаков "#", возможно, не используется. Я точно сказать не могу, т.к. убрл из этого файла только то, что явно было не нужно.
Все что касается версий для печати и т.п. можно тоже убирать, т.к. у нас немного другой механизм будет для этого (или просто будем давать ссылку на gentoo.org для тех, кто хочет документ распечатать - разницы нет).

Генерирование html произваодит с помощью xsltproc. Исходные XML-файлы для экспериментов можно взять в CVS Gentoo.

Пока для преобразования используется до боли простой скрипт:

<?php
$style_file = PATH_TO_FILES . 'guide.xsl';
$xml_file = PATH_TO_FILES .  'portage1.xml';
system("xsltproc $style_file $xml_file");
?>

Константу PATH_TO_FILES определи сам. Вот и все, что есть пока. Негусто, но половина дела сделана. Отладить xsl-файл можно, по крайней мере. :)

Ещё забыл спросить: после обработки, надеюсь, должен генериться просто кусок кода, вставляемый в основной html-документ? Или весь документ вместе с меню слева (Документация, Ресурсы etc.)?

Нужно только то, что будет вставляться в страницу, т.е. ее контент.
А меню, баннеры и прочее итак делается в исходном guide.xsl. Через него же генерируется версия для печати.. Короче, весь сайт сделан на XSLT, а контент хранится в XML-файлах.
У Drupal'а друго подход: данные хранятся в БД, за управление контентом, формирование страниц отвечает он сам. Поэтому нас интересует только преобразование XML-контента в тот вид, который нам нужен для вывода информации на странице.

А дизайн решили оставить gentoo.org'овский? Или другой? Может, такой, каким оформлена статья о мультимедийных клавишах (как я понял, это дизайн от phpBB). И ещё: где можно почитать про эту систему нодов (node), на которой, насколько я понял, построен drupal?

Дизайн - большой жирный вопрос пока. "Дизайн" gentoo.ru я сговнял на коленке за пол часа, подправив стандартную тему Drupal'а так, чтобы было похоже на Gentoo.org.. Ну и логотип вкорячил. но все все это не нравится, если честно. Над дизайном будем думать еще, а пока пусть стили пока gentoo.org'овские остаются - нас интересует функциональность, а потом уже будем думать о дизайне. Может кто-нибудь вызовется сделать дизайн или просто скинемся на дизайнера.

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

Не очень понятно, что конкретно надо сделать.
На gentoo.org этот guide.xsl полностью верстает дизайн сайта. Если я правльно понимаю, то в нашем случае эту роль играет друпал, а от xsltproc надо получить просто обычный html. Если это так, то IMHO проще переписать полностью guide.xsl с использованием стилей, котрые применяются у нас. Вобщем, возьмусь как только будет чуть более подробнее описана постановка задачи

А что тут непонятного? :) Их guide.xsl надо убрать все, что отвечает за добавление "обвязки" страницы: шапки, меню, баннеров, футера. Авторство и summary надо перенести в "плавающий" (floating) блок внутрь текста (чтобы текст его обтекал).
Ну и логическая структура текста должна преобразовываться в соответствии с тем, какие теги использует друпал при выводе обычных нодов.
Я подробно этот файл не изучал, но, по-моему, генерирование версии для печати делается через него же. Возможно, это получится использовать.