Бесплатные консультации по MODx Evolution и Revolution

B
На сайте с 02.09.2012
Offline
22
#181
WhiteKrol:
Из простых вещей рекомендую внимательно изучить работу кэша, не использовать документы и TV-параметры в местах где материал исчисляется тысячами.

А что посоветуете в таких случаях использовать ? Просто пока что, ничего даже в голову не приходит. В какую сторону покопать на эту тему ?

IL
На сайте с 20.04.2007
Offline
435
#182
barsukidze:
Просто пока что, ничего даже в голову не приходит. В какую сторону покопать на эту тему ?

Ого?!? ) Не прошло и полгода 😂 (я серьёзно.. не прошло: 30-11-2012, 20:30 WhiteKrol)

См в сторону отдельных таблиц для сущностей.

Если Revo - http://rtfm.modx.com/display/revolution20/Custom+Resource+Classes

... :) Облачные серверы от RegRu - промокод 3F85-3D10-806D-7224 ( http://levik.info/regru )
DiAksID
На сайте с 02.08.2008
Offline
236
#183
barsukidze:
А что посоветуете в таких случаях использовать ? ...

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

show must go on !!!...
B
На сайте с 02.09.2012
Offline
22
#184
ivan-lev:
Ого?!? ) Не прошло и полгода 😂 (я серьёзно.. не прошло: 30-11-2012, 20:30 WhiteKrol)
См в сторону отдельных таблиц для сущностей.
Если Revo - http://rtfm.modx.com/display/revolution20/Custom+Resource+Classes

Вот спасибо большое ) Просто появилось немного свободного времени, поэтому решил уделить время на развитие своего сайта. И раз уж он на MODX и в планах 100500 страниц, то хочется сразу позаботиться о правильном подходе.

M5
На сайте с 12.08.2009
Offline
221
M25
#185

Подскажите, пожалуйста, можно ли реализовать вызов getResources прямо с шаблона?

Если да, то как, потому что у меня данный вызов не работает.

Требуется в сайдбаре показывать «последние новости».

► Рейтинг серверов — ТОП10 ◄
DiAksID
На сайте с 02.08.2008
Offline
236
#186
M25:
Подскажите, пожалуйста, можно ли реализовать вызов getResources прямо с шаблона?
Если да, то как, потому что у меня данный вызов не работает.
Требуется в сайдбаре показывать «последние новости».

просто в шаблон не привязан к конкретному документу, поэтому getResources будет брать значение по умолчанию для parents из id того документа, который открыт в нём в данный момент.

если в шаблоне вызвать getResources с прямым указанием конкрентного(ых) parents (ну и остальных параметров, конечно) сниппет отработает как надо. в вашем случае достаточно цифрами задать id папки новостей в переменной parents.

ЗЫ: в шаблоне можно вызывать любой чанк или сниппет, главное отследить какие параметры им нужны (если нужны) и что они выдёргивают из страницы по умолчанию...

----

NB: getResources стоит запускать через getCache, тогда закэширует так как хочется вне зависимости от setting_cache_db.

M5
На сайте с 12.08.2009
Offline
221
M25
#187
DiAksID:
getResources стоит запускать через getCache

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

DiAksID
На сайте с 02.08.2008
Offline
236
#188
M25:
а можно чуть подробнее, как это реализовать?

типа так:


[[!getCache? &element=`getResources`
&cacheExpires=`86400`
&parents=`[[*id]]`
&sortby=`menuindex`
&sortdir=`ASC`
...
]]
bulba_man
На сайте с 19.07.2012
Offline
11
#189

здравствуйте!

Уже неделю бьюсь лбом:) может быть Вы мне поможете.

MODx - Evo

Дано:

есть каталог авторов и их книг:

-Авторы (30)

---Александр (31)

------Космическая одиссея (40)

------Партизанское восстание (41)

------Деревня дураков (42)

---Николай (32)

------Битва под Сталинградом (43)

------Тупой и ещё тупее (44)

------Вторая мировая война (45)

---Татьяна (33)

------Космические пираты (46)

------Путь к солнцу (47)

------Жизнь в 17 веке (48)

есть список жанров:

-Жанры (11)

---Фантастика (12)

---Комедия (13)

---История (14)

каждой книге присваивается жанр через TV-параметр, значения которого берутся из списка документов "жанры":

@EVAL $children = $modx->getDocumentChildren(11); foreach($children as $child) {$output .= $child['pagetitle']."==".$child['id']."||"; } return $output;

Задача:

-- необходимо при выборе автора, выводить на странице его книги разбитые по жанрам.

Например:

(Автор - Александр)

====ФАНТАСТИКА====

Космическая одисея

====КОМЕДИЯ====

Деревня дураков

====ИСТОРИЯ====

Партизанское восстание

-- а на странице жанра выводить соответствующие книги группированные по авторам.

Например:

(Жанр - Фантастика )

====АЛЕКСАНДР====

Космическая одиссея

(у Николая нет книг этого жанра и его не нужно выводить)

====Татьяна====

Космические пираты

Путь к солнцу

Нашёл вот тут самописный снипет GetProtuctsByCategory

<?php
// Получаем список TV параметров, которые заполнены для документов текущего родителя(категории)
// TV c id 8 - это id TV по которому группировку нужно сделать
$query="SELECT modx_site_tmplvar_contentvalues.value
FROM modx_site_tmplvar_contentvalues, modx_site_content
WHERE
modx_site_content.parent=".$cat_id." and
modx_site_tmplvar_contentvalues.tmplvarid=8 and
modx_site_content.id=modx_site_tmplvar_contentvalues.contentid
group by
modx_site_tmplvar_contentvalues.value
order by modx_site_tmplvar_contentvalues.value desc";

$result = $modx->db->query($query);
$i=0;
while ($row = mysql_fetch_array($result)) // пишем в массив значения
{
$i=$i+1;
$line[$i]=$row["value"];
}


for ($k=1; $k<=$i; ++$k) // для каждого значения получаем id страниц товаров
{
$query="SELECT modx_site_tmplvar_contentvalues.contentid
FROM modx_site_tmplvar_contentvalues
WHERE
modx_site_tmplvar_contentvalues.value=".$line[$k]." and
modx_site_tmplvar_contentvalues.tmplvarid=8
group by modx_site_tmplvar_contentvalues.contentid
";

$result = $modx->db->query($query);
print '<div class="brandName">'.($modx->runSnippet('GetPageTitleById', array('id' => $line[$k]))).'</div>'; // выводим наименования по которым группируем
while ($row = mysql_fetch_array($result))
{

print ($modx->runSnippet('Ditto', array('documents' => $row["contentid"], 'tpl'=>'products-list-tpl'))); // выводим сами товары

}

}
?>

Код сниппета GetPageTitleById, который выводит pagetitle по id:


<?php
$document=$modx->getDocument($id);
return $document['pagetitle'];
?>

вызываем сниппет [[GetProtuctsByCategory? &cat_id=`[*id*]`]]

но у него что-то не так работает - если у нескольких книг разных авторов совпадает жанр, они все выводятся на страницах этих авторов.

Слёзно прошу вашей помощи! спасибо за внимание.

DiAksID
На сайте с 02.08.2008
Offline
236
#190

нахрена все эти самописные кружева если в getResources уже есть хотя бы:

tvFilters Can be used to filter resources by certain TV values. These are entered as [(tvname)(operator)](value). There are two delimiters you can use to combine filter conditions.

для выборки "категорий"

sortbyTV Template Variable to sort by

sortdirTV Order which to sort by when using sortbyTV

для сортировки по "категориям"

и ещё куча параметров, позволяющих сделать любую комбинированную выборку и сортировку?

ну и универсальный getResourceField то же наверное стоит применять, а не выдумывать каждый раз велосипед...

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий