R2m0x94 (Vasily)
С нами с 07 мая 2018; Место в рейтинге пользователей: #362Как снизить нагрузку при подсчете кол-во в pdoMenu дочерних ресурсов?
Всем известно, что есть
Вывожу в чанк родителя:
сниппет countChildren, который вызывает нагрузку
[[+children]]
при включенной настройке &countChildren=`1`
Но [[+children]]
не даёт, тот результат, так как меню двух уровневое и подсчет кол-ва вывожу в &tplParentRow=`tpl.ParentRow`
Следовательно исходя из примеровВывожу в чанк родителя:
([[countChildren? &parent=`[[+id]]`]])
но, в pdoMenu количество вложенных ресурсов сильно нагружает серверсниппет countChildren, который вызывает нагрузку
<?php
$count = 0;
$parent = isset($parent) ? (integer) $parent : 0;
// Define Parents
$q = $modx->newQuery('modResource');
$q->select(array(
'id',
'parent'
));
$q->prepare();
$q->stmt->execute();
$res = $q->stmt->fetchAll(PDO::FETCH_ASSOC);
$parent_ids = array($parent);
foreach ($res as $v) {
if (in_array($v['parent'], $parent_ids) AND !in_array($v['id'], $parent_ids)) {
$parent_ids[] = $v['id'];
}
}
$q = $modx->newQuery('modResource');
$q->where(array(
'parent:IN' => $parent_ids,
'isfolder' => false,
'published' => true
));
$q->select(array(
'id'
));
$q->prepare();
$q->stmt->execute();
$count = count($q->stmt->fetchAll(PDO::FETCH_ASSOC));
$output = $count;
$modx->cacheManager->set($count, $output);
return (string) $output;
Есть ли менее нагружаемый скрипт, который делает всё тоже самое, кроме нагружаемости? Output filter to get TV display name - tvLabel does not work on pdoResources
В бд попадают записи: GD, GL, GR и другие
Список одиночный выбор тв например Возможные значения
На выходе должно получится название страны типа «Греция», но выходит только «GR»
Список одиночный выбор тв например Возможные значения
Гренада==GD||Гренландия==GL||Греция==GR||Грузия==GE
Два года назад уже кто-то задавал этот вопрос, но ответа на него не дали.На выходе должно получится название страны типа «Греция», но выходит только «GR»
[[+tv.vendor_address:getTvDisplayName]]
[[#[[+id]].vendor_address:tvLabel]]
[[+tv.vendor_address:tvLabel]]
Как разбить результаты в mFilter2 на fenom по алфавиту?
Помогите пожалуйста в mFilter2 вывести структуру $results ресурсов по алфавиту такого плана:
Пробую разобрать результаты split и прочее, но что-то не складывается
UPD:
Есть похожий вопрос, но как корректно стилизовать Snippet в mFilter2?
Пробую разобрать результаты split и прочее, но что-то не складывается
{foreach [$results] as $key}
{$_modx->setPlaceholder('key', $key)}
[[-pdoResources?
&parents=`[[*id]]`
&showUnpublished=`1`
&tpl=`outerV`
&tvPrefix=``
&limit=`0`
&sortby=`{ "pagetitle":"ASC"}`
&where=`{ "alias:=":"[[+key]]"}`
&ki=`[[+key]]`
]]
{/foreach}
[[+key]]
Ещё попробовал второй способ кастомизировать сниппет mFilter2 и добавить туда строки такого плана<?php
foreach ($resources as $k) {
$character = mb_substr($k['pagetitle'],0,1);
$tmp[$character][] = $k;
}
foreach ($tmp as $character => $resources) {
$output .= $character;
}
Но результат перестаёт выполнятся # PHP warning: Illegal string offset 'results'UPD:
Есть похожий вопрос, но как корректно стилизовать Snippet в mFilter2?
Как запретить создавать раздел с тикетами для прав доступа к определённой группе пользователей?
Пожалуйста подскажите, как сделать запрет на возможность создавать раздел с тикетами?
Теги: Tickets, modAccessManager, class_key TicketsSection, Кастумная админка для Revo.
- Первым делом я убрал из системных настроек.
/* * [[!pdoPage? * &element=`getTickets` * ]] * [[!+page.nav]] */ {$_modx->runSnippet('pdoPage', [ 'element' => 'getTickets' ])} {$_modx->getPlaceholder('page.nav')}
- Далее отключил Редактор «markItUp», так как пользователи сайта знать не знают HTML.
- Затем пробовал настроить права пользователей (Настройка прав пользователей)
Теги: Tickets, modAccessManager, class_key TicketsSection, Кастумная админка для Revo.
Как на фронтэнде по двойному щелчку сменить название [[*pagetitle]] в таблице и при этом, чтобы изменения записались в базу?
Пример:
<table>
<tbody>
<tr>
<td id="titlepagetable">[[*pagetitle]]</td>
</tr>
</tbody>
</table>
Пробую скрипку:<script type="text/javascript">
/*
$(document).on('submit', 'form', function(e) {
e.preventDefault;
// -- Тут сериализация формы и ajax запрос
})
*/
// JS-ом ловим двойной клик по названию
$('#titlepagetable').dblclick(function(){
// отображаем формочку с полем для ввода нового названия
$(this).append('<input name="tdtable-titlepage" type="hidden" value="[[+pagetitle]]"/>'); // без кнопки
});
</script>
Но в базу не сохраняет :( MODX, PHP, SQL, JS - Как записать изменения пользователем в базу данных?
Эксперты MODX Revo помогите решить такую задачу:
На сайте есть таблица с уникальными [[+id]] товарами:
Подскажите как написать плагин для того, чтобы была возможность сохранять изменения пользователем в базу данных на прямую со страницы где вывод этих товаров этой таблицы?
contenteditable=«true» — это только html песчинка в море морфологии php.
На сайте есть таблица с уникальными [[+id]] товарами:
<table>
<tr>
<td>idx 1.</td>
<td>id 54804.</td>
<td id="titlepagetable">Смазочно-охлаждающие жидкости</td>
</tr>
<tr>
<td>idx 2.</td>
<td>id 54821.</td>
<td id="titlepagetable">Шлифшкурки NORITAKE</td>
</tr>
<tr>
<td>idx 3.</td>
<td>id 54947.</td>
<td id="titlepagetable">Шлифовальные круги и головки из CBN</td>
</tr>
<tr>
<td>idx 4.</td>
<td>id 55503.</td>
<td id="titlepagetable">Алмазные круги и инструменты</td>
</tr>
<tr>
<td>idx 5.</td>
<td>id 55504.</td>
<td id="titlepagetable">Шлифовальный инструмент</td>
</tr>
</table>
надо записать конкретно в [[+pagetitle]]<td id="titlepagetable">
изменения, например по двойному щелчку вместо «Шлифовальный инструмент» -> «Шлифовальный инструмент для пробоподготовки»Подскажите как написать плагин для того, чтобы была возможность сохранять изменения пользователем в базу данных на прямую со страницы где вывод этих товаров этой таблицы?
contenteditable=«true» — это только html песчинка в море морфологии php.