Menu

Куча вопросов по OSB

Help
2009-05-12
2012-09-14
  • Nobody/Anonymous

    Здравствуйте, Стас!

    Пытаюсь освоить вашу, безусловно, очень оригинальную и интересную систему сборки сайта. Но не все гладко, есть вопросы.

    1) Во-первых, как я не крутил, куда бы не вставлял директивы

    &.dir-name;
    &.top-dir-name;
    &.root;

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

    <macro name="test" params="1"><![CDATA[<a href="&.root;">aLink</a>]]></macro>

    Во всех случаях возвращается пустая строка нулевой длины, для
    всех &.dir-name; &.top-dir-name; &.root;, вне зависимости в каких вложениях
    папках запускался этот скрипт. Такое ощущение, что у меня они вообще не работают, даже во вложенных папках.

    2) Что делает конструкция <![CDATA[xxxxxxxx]] ? Почему в неё надо облекать иногда что-то, а иногда можно не облекать?

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

    _sections.xml:

    &lt;section name=&quot;home&quot;&gt;&lt;![CDATA[&lt;a href=&quot;&amp;.root;/&quot;&gt;Home&lt;/a&gt;]]&gt;&lt;/section&gt;
    &lt;section name=&quot;home-a&quot;&gt;&lt;![CDATA[&amp;bld{Home};]]&gt;&lt;/section&gt;
    

    Соответственно &bld пришлось описать отдельно как макрос в config.xml.

    Почему не работает самое простое вида:

    &lt;section name=&quot;home&quot;&gt;&lt;![CDATA[&lt;a href=&quot;&amp;.root;/&quot;&gt;Home&lt;/a&gt;]]&gt;&lt;/section&gt;
    &lt;section name=&quot;home-a&quot;&gt;&lt;b&gt;Home&gt;&lt;/b&gt;&lt;/section&gt;
    

    Как эту задачу можно было сделать проще? А если в секцию нужно вставить какой-то большой кусок html-кода, то как его туда засунуть?

    4)
    Не совсем понимаю смысл:

    .replace (.root, value) - replace .root with value

    Это значит, что в пределах только данного данного исходника(документа) .root
    будет равен value? Это как бы локальная для данного документа подмена?

    Чем отличается .print от .replace?
    .replace (section1, value)
    .print (section1, value)

    Заранее спасибо!

     
    • Nobody/Anonymous

      Стас, я понимаю, что гружу вас излишне, но вами указанная строка:

      <?xml version="1.0" encoding="windows-1251" ?>

      проходит на ура... но не дает никакого эффекта. Более того, она действительно переключает кодировку с дефолтной UTF-8 по документации насколько я её понял, но не в реальной жизни.

      Мне кажется, что у меня более сложный случай, вероятно скорее всего вот этот:

      http://perl.blogit.ru/enc-xml-parser

      Я просто плохо во всем этом разбираюсь, может вы подскажите, как же всё-таки заставить отображать виндовую кодировку а не каракули, до полного триумфа осталось лишь это обидное препятствие...

      Заранее извиняюсь за повторный вопрос :-)

       
      • Stas Trefilov

        Stas Trefilov - 2009-05-18

        может, попробуете указать кодировку и в html-шаблоне? как-нибудь так:
        <html>
        <head>
        ...
        <meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
        ...
        </head>
        <body>
        ...
        &.text;
        ...
        </body>
        </html>

         
    • Stas Trefilov

      Stas Trefilov - 2009-05-13

      добрый вечер

      итак.

      1/ данные директивы срабатывают при сборке сайта, но только для файлов-исходников (с расширением .src по умолчанию). именно эти файлы вставляются в шаблоны и копируются в таком виде в целевую директорию. внутри остальных файлов никаких подстановок не производится и они копируются, основываясь на дате модификации целевого файла.

      2/ конструкция <![CDATA[]]> -- стандартный способ передавать html-тэги внутри xml файлов. если бы её не было, то html воспринимался бы как часть xml-файла. если значение, которое вы передаёте, не содержит спецсимволов html (таких как <, >, &, "), то заключать его в cdata не обязательно

      3.1/ ответ на первую часть вопроса -- наличие спецсимволов html в строке
      <section name="home-a"><b>Home></b></section>
      чтобы заработало сделайте так:
      <section name="home-a"><![CDATA[<b>Home></b>]]></section>

      3.2/ для вставки большого куска html-кода используйте модификацию данной директивы:
      <section name="home-a" filename="путь_к_html_файлу"/>

      4.1/ вы понимаете правильно, только в команде .replace второй параметр является не строкой, а именем секции

      4.2/ .print (секция, значение) -- команда для замены определённой секции на строку, идущую вторым параметром
      .replace (секция1, секция2) -- команда для замены определённой секции на другую секцию. есть также возможность заменить .root на значение секции2.

      благодарю вас за интерес

       
    • Nobody/Anonymous

      Здравствуйте, Стас! Давайте продолжим, что-то уже получается, а что-то нет, хочется думать что пока.

      1) В конфиге определил такую вещь:

      <template>base/main.html</template>
      <template suffix=".src">base/main.html</template>
      <template suffix=".home">base/home.html</template>
      <suffix action="build" default="html">.src;.home</suffix>

      Собственно, чего хочу от этого: хочу чтобы все исходники .src
      вставлялись в шаблон main.html, все исходники
      .home
      вставлялись в шаблон home.html. Не работает - всё вставляется всё равно
      в .src :-( Если здесь убрать <template>base/main.html</template> - то
      генерируются пустые страницы.

      В самом скрипте при компиляции вроде бы отображает эти связи:

      Default template ./base/main.html (comment)
      Template for .src ./base/main.html (comment)
      Template for .home ./base/home.html (comment)

      2) Хотел бы, чтобы в выше описанном случае, все сгенерированные
      .src вываливались в папку <target>trg1</target>, а все .home -
      в папку trg2, как описать это переопределение?

      3) Как закомментировать записи в конфигах-шаблонах?

      4) Что значит надпись "(comment)" на странице результатов
      компиляции (в колонке value)?

      5) По ссылке http://osbtools.googlepages.com/tutorial.sections.html
      в вашем руководстве имеется листинг:

      <section name="description">
      <![CDATA[&.section(home);
      :: &.section(download);
      :: &.section(start);
      :: &.section(tutorial);
      :: &.section(reference);
      :: &.section(support);
      :: &.section(links);
      </section>

      Правильно ли я понимаю, что конструкция CDATA открывается и всегда
      закрывается обратными скобками ]]>, тогда как здесь она не закрыта,
      это почему?

      Спасибо!

       
      • Stas Trefilov

        Stas Trefilov - 2009-05-16

        1/ файлами-исходниками считаются файлы с расширением .src. если у вас есть несколько шаблонов, то файлы-исходники могут иметь двойное расширение:
        index.src для base/main.html
        index.home.src для base/home.html

        2/ похоже, проще компилировать два сайта отдельно.

        3/ если имеются ввиду коментарии в xml-файле, то они такие же, как и в html: <!-- -->

        4/ если наведёте мышку на слово (comment), всплывёт подсказка по текущей строке

        5/ спасибо, ошибка исправлена

        надеюсь, помог

        удачи

         
    • Nobody/Anonymous

      Спасибо, конечно помог, Стас!

      Ещё есть вопрос, животрепещущий можно сказать, пытаюсь в секциях описать меню на русском языке (Win1251) - OSB при компиляции клинит на коммандах типа:

      <site title="Иностранная литература">

      или

      <section name="home"><![CDATA[<a href="&root_dir;">О проекте</a>]]></section>

      Как побороть?

      Спасибо!

       
      • Stas Trefilov

        Stas Trefilov - 2009-05-17

        xml по умолчанию считает, что вы используете кодировку utf-8. я вам тоже рекомендую использовать именно эту кодировку для сайта на русском языке. особенно, если на страницах сайта может появиться комментарий на нерусском языке (поверьте, такие тоже бывают). простой пример--мы с вами общаемся по-русски на сайте, где основным является совсем другой язык. разработчики sf.net разумно предположили, что люди из разных стран должны иметь возможность помогать друг другу, используя для этого родной для них язык.
        если вы всё же решите, что ваш сайт должен использовать другую кодировку, то опишите её в первой строке xml-файла, например, так:
        <?xml version="1.0" encoding="windows-1251" ?>
        мне кажется (хотя я и не проверял), что это должно сработать. если нет, обращайтесь к первоисточнику:
        http://www.w3.org/TR/REC-xml/#charencoding
        http://www.opennet.ru/docs/RUS/XML/#charencoding (официальный русский перевод)

        удачи вам ещё раз, я чувствую, что кучу мы почти разгребли :-)

         

Log in to post a comment.