DSite CMS
DSite CMS
создано Media Programming Group
Последняя статья: Как добавить заголовок новости в Title

Поиск: 
Главная            Статьи            Форум            Новости            Описание
Обучающие ролики
Примеры сайтов на CMS DSite
Цены
Вебстудиям
Заявка на DSite
FAQ
Ссылки
Контакты
Скачать

Новости:
05.05.11 :: Обновление 4.91 (релиз)

21.04.11 :: Обновление 4.87

07.04.11 :: Обновление 4.83

04.02.11 :: Обновление от 01.02

25.06.10 :: Поиск по содержимому страниц


Логин:
Пароль:

Забыли пароль? Восстановить

Также Вы можете пройти регистрацию

19.04.2007 :: Как использовать Templater для отображения меню

В настоящее время мы рекомендуем вебстудиям, для повышения качества и гибкости создаваемой продукции, активнее использовать класс Templater для вывода шаблонированных результатов. Использование шаблонов не только упрощает процесс разработки сайта, но и делает проекты более унифицированными, позволяя писать все меньше и меньше программного кода. Далее рассмотрим ряд примеров использования

Основное меню сайта

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

<?
// Отображение меню 1 уровня:
require_once "inc/phpaux.inc";
$template_page_id=22; // в шаблоне используются макросы {text} {url} {sectionname} {section}
$tp = new Templater(false, $template_page_id);
$tp->rowtag='MENUITEM';
$buttons = array();
$cnt = 0;
// преобразование стандартного массива кнопок
foreach ($GLOBALS['gMenuButtons'] as $button_id=>$button)
{

foreach ($button[$GLOBALS['gPartID']] as $name => $value)
{
$buttons[$name][$cnt] = $value;
}//..foreach button
$cnt++;
}//..foreach

echo $tp->translate(false,$buttons);
?>

Шаблон меню лежит в странице с ID = 22. Как он выглядит, зависит от дизайна.

Меню второго уровня

Вывод меню 2 уровня может выглядеть так:

<? 
// Меню 2 уровня:
require('inc/phpaux.inc');
require(PLUGINPATH."menu/menu.inc");
$template_page_id = 22;//
$menu_id=GetMenuID();
$vars = PrintLevelButton();
$tp = new templater(false, $template_page_id);
$tp->rowtag='MENUITEM';
echo $tp->translate(false,$vars);
?>

 Вот пример шаблона для отображения:

<table border=0 cellpadding=0 cellspacing=0>
<!--<MENUITEM>-->
<tr><td><a href="{button_url}">{button_name}</a></td></tr>
<!--</MENUITEM>-->
</table>

Удобно использование именно {button_url} для создания ссылок, так как с помощью нового метода CreateDSiteUrl() ссылки автоматически адаптируются под выставленные в настройках сайта параметры.

Новости и лента

В настоящее время в системе написан достаточно удобный класс dsNewsEx для вывода новостей через Templater. Вот пример его использования:

<? 
// настройки (их можно хранить и в Preferences, см. ниже):
$news_div=1;// раздел новостей для отображения
$template_pageid=18;// шаблон отображения новости
$template_list_pageid = 19;// шаблон отображения списка новостей
$default_pic = '/images/spacer.gif'; // картинка на замену (пустая)
//
require_once "inc/phpaux.inc";
//
$upr = new Prefs();
$newsperpage = $upr->GetVar('newsperpage');
//
if (empty($newsperpage)) $newsperpage=10;
// Get list first:
require_once (PLUGINPATH.'/news/inc/dsnews.inc');
$dsNewsEx = new dsNewsEx($news_div, $default_pic);
$vars['news_list'] = dsNewsExGetList($dsNewsEx, $template_list_pageid, false, $newsperpage);
$article = intval($_GET['article']); // if !isset
echo dsNewsExGetArticle($dsNewsEx, $template_pageid, $article, $vars);
?>

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

<h1>{date_formatted} :: {str_name}</h1>
<p><a href="{news_url}"><img style="MARGIN-RIGHT: 10px" alt="{str_name}"
src="{pic_main}" align="left" border="0" /></a>
<span class="content">{descr}</span></p>
<p><center>{news_list} </center></p>
<p>{pages_bar}</p>

Класс dsNewsEx предоставляет доступ к любому полю таблицы news_cat из стандартной новостной надстройки DSite, а также к другим калькулируемым переменным.
Вот, что об этом написано в технической документации:

  • news_id - the id of the news article
  • div_id - the id of the div
  • str_name - the article name
  • str_author - author name
  • str_authmail - the email or link (use news_url instead)
  • txt_descr - full article text(use descr instead)
  • txt_brief - brief article text
  • str_keywords - article keywords
  • b_visible - visibility flag
  • date_date - date in SQL format (use date_formatted instead)
  • news_link - the link to the news (see also members: m_strUrlParamNewID, m_strUrlParams) Additionally there are several calculated fields:
  • date_formatted - the formatted date (accordingly to format specified in constructor)
  • news_url - the link to author mail or (if this is url) to the web-site page
  • pic_main, pic_thumb - the img complete url (the default picture is used, specified in the constructor)
  • descr - smartly HTML formatted txt_descr And several globals:
  • page - current page, see also pages class
  • section_id - current section id

 Функции dsNewsExGetList, dsNewsExGetBriefs и dsNewsExGetArticle упрощают взаимодействие с интерфейсами классов dsNewsEx и dsnFilter, инкапсулируюя в себя типовой функционал.

Шаблон списка может выглядеть таким образом:

<hr /> 
<table class=content width="90%" border="0">
<!--<NEWSITEM>-->
<tbody>
<tr>
<td width="1%">{date_formatted}</td>
<td><a class="simplelink" href="index.php?id={section_id}&article={news_id}">{str_name}</a></td>
</tr>
<!--</NEWSITEM>-->
<tr><td colspan=2>{pages_bar}</td></tr>
</tbody>
</table>





Статьи:

1  2  » 


FAQ  Поиск на форуме
Новое сообщение
Copyright © 2017 Webmedia.ru - создание сайтов & Media Programming Group