|
|
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

Зарегистрирован: 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

Зарегистрирован: 2008-07-15
Сообщений: 666
|
Если есть задачи, которые можно решать через API системы, то, вероятно, лучше им и воспользоваться. Хотя бы из соображений сопровождения ( будет ли ваша функция учитывать свойства "перенос строки - br" или формирования url объекта по keyword'у?, а если что-то добавится в будущем?). За такую универсальность приходится платить временем. Но ситуация с десятками запросов явно утрирована, во-первых, дублирующихся запросов практически нет - их результаты сохраняются, во-вторых, есть модуль кэширвоания.
|
|
|
26.12.2011, 16:57
|
|
DiGGy
DiGGy

Зарегистрирован: 2005-04-04
Сообщений: 1546
|
В третьих, параноя с затратой ресурсов может быть только в двух случаях:
1. Если у вас сервер - это пентиум 3 какой-нить допотопный, либо тарифный план у хостера ну совсем никчемный
2. Если у вас аля соц сеть с посещаемостью 100тыщ. в сутки и выше - и то это можно решить на уровне мощности VPS сервера.
Во-всех других случаях - ручные запросы идут только как минус в плане дальнейшего развития и поддержки (как ранее отписал Денис).
Причиной написания ручных запросов может быть еще и след. фактор - разработчик только начал осваивать неткет и ему быстрее сделать запрос ручками (если IQ позволяет), чем разобраться в штатном API и понять что к чему.
Temet nosce...
|