Первые шаги после инсталляции

#
Первые шаги после инсталляции
Благодаря вот этой замечательной теме удалось сдвинуться с «мертвой точки», т.е. увидеть на главной странице хоть какой-то свой текст.  Однако дальше этого дело не пошло, поскольку я не понял, как обеспечить ссылки в меню.

Правильно ли я понимаю, что для того, чтобы получился нужный шаблон, необходимо предварительно все ссылки меню предусмотреть в HTML коде заготовки главной страницы?

Предположим, что в меню на главной странице должны выводиться данные и еще требуется иметь такие ссылки на разделы:
- Общий раздел
- Частный раздел
- Новости
- Литература

Что нужно изменить вот в этом коде для обеспечения ссылок на эти разделы?

<html>

<head>
<meta content="text/html; charset=<?=SITE_CODING?>" http-equiv=Content-Type>
<meta name="description" content="<?$kernel->show_description()?>" />
<meta name="keywords" content="<?$kernel->show_keywords()?>" />
<title><?$kernel->show_title()?></title>
</head>

<body>

<p align="center">Главная страница</p>
<p align="center">Ниже этой строки должны выводится данные</p>

<?php $kernel->show_current_template()?>

<p align="left">Меню:</p>
<p align="left">Общий раздел</p>
<p align="left">Частный раздел</p>
<p align="left">Новости</p>
<p align="left">Литература</p>

<p align="left" style="margin-top: 0; margin-bottom: 0">&nbsp;</p>
<p style="margin-top: 0; margin-bottom: 0" align="center">
<a href="http://www.hostcms.ru" target="_blank">Система управления сайтом Host CMS</a></p>
<p align="left" style="margin-top: 0; margin-bottom: 0">&nbsp;</p>

</body>

</html>
#
Re: Первые шаги после инсталляции
Vladd писал(а):
Что нужно изменить вот в этом коде для обеспечения ссылок на эти разделы?

Для начала, нужно почитать страницы 24-27 Руководства по интеграции системы управления сайтом HostCMS v.5. Это придаст вашим мыслям некоторую сумбурность

Теперь о создании меню.
Во1х, нужно создать само меню как таковое. В разделе ЦА "Структура сайта", в выпадающем меню "Меню сайта" выбираете единственный существующий там пункт. Переходите в раздел ЦА "Меню сайта", в меню "Меню" (простите за тавтологию) выбираете "Добавить". Вписываете любое название на любом языке (нигде на сайте это название отображаться не будет), и жмем на Применить. Смотрим, какой идентификатор у нашего меню, и запоминаем его.

Во2х. Снова выбираем в правом меню ЦА раздел "Структура сайта".
Создаем разделы "Общий раздел", "Частный раздел", "Новости", "Литература"... Пока для этих разделов можно указывать тот же самый временный тестовый документ, что и для главной. Нам сейчас важно чтобы эти разделы просто были. При создании разделов структуры, обращаем внимание на то, чтобы в списке "Меню" было название нашего меню, а галочка "Отображать в меню сайта" была включена.
(Можно сначала создавать не все разделы, никогда не поздно добавить.)

В3х, подготовим вывод меню в макете. Переходим в редактор макетов, и вместо html-кода
<p align="left">Общий раздел</p>
<p align="left">Частный раздел</p>
<p align="left">Новости</p>
<p align="left">Литература</p>

вставляем то, что прочитали в самом начале на странице 24 "Руководства по интеграции...":
<?php
$Structure = & singleton('Structure');
$Structure->ShowStructure(1, 'ВерхнееМеню');
?>
Вместо цифры 1 вписываем идентификатор нашего меню, который мы запомнили в шаге 1. Вместо "ВерхнееМеню" пишем "МоеМеню". Жмем "Применить".

В4х. Теперь займемся xsl-шаблоном. Для простоты дела, предлагаю скопировать какой-то существующий xsl-шаблон оторажения меню, и внести в него измнения. Переходим в раздел ЦА "XSL-шаблоны", там идем в папку "Меню", и нажимаем кнопку "Копировать" возле шаблона "ЛевоеМеню". Получаем еще один шаблон, с названием типа "ЛевоеМеню [Копия от 23.01.2011 13:10:05]". Открываем его для редактирования.
Меняем его название на "МоеМеню".
В код вносим некоторые изменения, для того чтобы результат выполнения шаблона соответствовал тому что у вас в макете:
1. Удаляем теги UL
2. Меняем теги LI на P (не забываем заменять закрывающий тег!)
3. У открывающего тега P вписываем
style="text-align:left"
луч ненависти тем кто пользуется параметром align

4. Удаляем фрагмент про вывод подменю
<!-- Если вывод подменю -->
      <xsl:if test="submenu/node() and count(structure[show=1]) > 0">
         <hr />
      </xsl:if>


Получится что-то такое:
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE xsl:stylesheet>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
   <xsl:output xmlns="http://www.w3.org/TR/xhtml1/strict" doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" encoding="utf-8" indent="yes" method="html" omit-xml-declaration="no" version="1.0" media-type="text/xml"/>

   <!-- МоеМеню -->

   <xsl:template match="/document">

      <!-- Выбираем узлы структуры первого уровня -->
      <xsl:apply-templates select="structure[show=1]"/>
   </xsl:template>

   <xsl:template match="structure">

      <!-- Запишем в константу ID структуры, данные для которой будут выводиться пользователю -->
      <xsl:variable name="current_structure_id" select="/document/structure/current_structure_id"/>
      <p style="text-align:left">
         <!-- Показывать ссылку, или нет -->
         <xsl:choose>
            <xsl:when test="show_link = 1">
               <!-- Определяем адрес ссылки -->
               <xsl:variable name="link">
                  <xsl:choose>
                     <!-- Если внешняя ссылка -->
                     <xsl:when test="is_external_link = 1">
                        <xsl:value-of disable-output-escaping="yes" select="external_link"/>
                     </xsl:when>
                     <!-- Иначе если внутренняя ссылка -->
                     <xsl:otherwise>
                        <xsl:value-of disable-output-escaping="yes" select="link"/>
                     </xsl:otherwise>
                  </xsl:choose>
               </xsl:variable>
               <!-- Ссылка на пункт меню -->
               <a href="{$link}" title="{name}">
                  <!--
                  Выделяем текущую страницу добавлением к <a> стиля font-weight: bold,
                     если это текущая страница, либо у нее есть ребенок с атрибутом id, равным текущей uheggt.
                     -->
                  <xsl:if test="current_structure_id = @id or count(.//structure[@id=$current_structure_id]) = 1">
                     <xsl:attribute name="style">font-weight: bold</xsl:attribute>
                  </xsl:if>
                  <xsl:value-of disable-output-escaping="yes" select="name"/>
               </a>
            </xsl:when>
            <!-- Если не показывать ссылку - выводим просто имя ссылки -->
            <xsl:otherwise>
               <xsl:value-of disable-output-escaping="yes" select="name"/>
            </xsl:otherwise>
         </xsl:choose>
      </p>
   </xsl:template>
</xsl:stylesheet>
(Я, правда, рекомендую вам, все-таки самостоятельно внести правки, а не копировать мой шаблон - пользы будет больше.)
Жмем на "Применить".

Ну и вот теперь открываем наш сайт в браузере, и при некоторой доле везения и должной прямоте рук мы увидим на сайте наше меню!
Заказов не беру. Консультирую редко.
#
Re: Первые шаги после инсталляции
P.S.:
Vladd писал(а):
Правильно ли я понимаю, что для того, чтобы получился нужный шаблон, необходимо предварительно все ссылки меню предусмотреть в HTML коде заготовки главной страницы?

Совершенно верно. Единственно верный и удобный стиль работы с макетами и шаблонами в HostCMS (да и вообще в любой системе) - сначала сверстать статичный макет в HTML, предусмотрев в нем все что нужно, а потом на основании этого статичного макета делать шаблоны. Это проще и понятнее, чем изобретать их на ходу.
Заказов не беру. Консультирую редко.
Авторизация