Регистрация
Регистрируясь, вы подтверждаете свое согласие с соглашением об использовании персональных данных.
Восстановление пароля

Коппонент. Шаблон отображения одного объекта на отдельной странице.

19.12.2011, 23:00
Гость
Гость

Помогите разобраться с шаблонами отображения
Создал компонент
Поля - art_header, art_text

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

Шаблон отображения списка объектов
Префикс
Код:
<div id='art_single'>
<div id='art_single_bg'>
<div id='art_single_bg_top'></div>

<div id='art_menu_list'>
<ul class='art_list'>


Суфикс
Код:
</ul>

</div>

<div id='art_right_block'>
<h1>$f_article_header</h1>
<p>$f_article_text<p>
</div>
<div id='clear'></div>
<div id='art_single_bg_bot'></div>
</div>
</div>


Обьект в списке
Код:
<li class='art_li'><a href='$fullLink'>$f_article_header</a></li>


Шаблон отображения одного объекта на отдельной странице.
Код:
<div id='art_single'>
<div id='art_single_bg'>
<div id='art_single_bg_top'></div>

<div id='art_menu_list'>
<ul class='art_list'>

<!-- тут нужно опять вывести полный список заголовков статей со ссылками на подробное описание -->

</ul>

</div>

<div id='art_right_block'>
<h1>$f_article_header</h1>
<p>$f_article_text<p>
</div>
<div id='clear'></div>
<div id='art_single_bg_bot'></div>
</div>
</div>
20.12.2011, 09:05
ap

Зарегистрирован:
2009-04-30
Сообщений: 12

SELECT ... `Subdivision_ID`, `Message_ID`, (SELECT Hidden_URL as url FROM Subdivision WHERE Subdivision.Subdivision_ID=MessageXX.`Subdivision_ID`) FROM `MessageXX` LIMIT XX
или лучше с помощью JOIN
что типа такого из этого всего и делайте что нужно
23.12.2011, 18:31
Гость
Гость

Спасибо за ответ.
Насколько понимаю
Subdivision_ID - номер раздела
Message_ID - номер статьи в моем случае
что такое LIMIT XX?

этот код я в таком виде могу вставить в шаблон отображения обьекта?


не работает(
23.12.2011, 18:49
Denis
Denis

Зарегистрирован:
2008-07-15
Сообщений: 666

Создайте в вашем компоненте шаблон компонента (пустой) и в нем в объекте в списке пропишите:
Код:
<div>$f_art_header</div>

Пусть получившийся номер шаблона компонента - 100.

А в этом месте:
Код:
<!-- тут нужно опять вывести полный список заголовков статей со ссылками на подробное описание -->

пропишите
Код:
".s_list_class($sub,$cc, "nc_ctpl=100")."


Ксю доставляет...
23.12.2011, 19:42
Гость
Гость

Спасибо, Денис!
все настолько просто)
24.12.2011, 10:27
Гость
Гость

Не надо использовать, функцию s_list_class если подобных вызовов набирается хотя бы > 3 Дело в том, что вызов такой функции приводит к нескольким запросам к БД (от 5 и гораздо больше) (получить шаблон, данные компонента и т.п.) Если на странице нужно вывести данные из другого компонента, то лучше написать функцию для вывода этих данных в functions.inc.php дефолтного модуля. В подобном случае практически всегда можно обойтись 1 запросом.
Вообще, один вызов s_list_class может создавать десятки запросов к БД! В зависимости от компонента, объекты которого выводятся.
26.12.2011, 00:34
Denis
Denis

Зарегистрирован:
2008-07-15
Сообщений: 666

Если есть задачи, которые можно решать через API системы, то, вероятно, лучше им и воспользоваться. Хотя бы из соображений сопровождения ( будет ли ваша функция учитывать свойства "перенос строки - br" или формирования url объекта по keyword'у?, а если что-то добавится в будущем?). За такую универсальность приходится платить временем. Но ситуация с десятками запросов явно утрирована, во-первых, дублирующихся запросов практически нет - их результаты сохраняются, во-вторых, есть модуль кэширвоания.

Ксю доставляет...
26.12.2011, 16:57
DiGGy
DiGGy
DiGGy

Зарегистрирован:
2005-04-04
Сообщений: 1546

В третьих, параноя с затратой ресурсов может быть только в двух случаях:
1. Если у вас сервер - это пентиум 3 какой-нить допотопный, либо тарифный план у хостера ну совсем никчемный
2. Если у вас аля соц сеть с посещаемостью 100тыщ. в сутки и выше - и то это можно решить на уровне мощности VPS сервера.

Во-всех других случаях - ручные запросы идут только как минус в плане дальнейшего развития и поддержки (как ранее отписал Денис).

Причиной написания ручных запросов может быть еще и след. фактор - разработчик только начал осваивать неткет и ему быстрее сделать запрос ручками (если IQ позволяет), чем разобраться в штатном API и понять что к чему.

Temet nosce...
198 196 2011-12-26 16:57:44 11769
Описание проекта