Всего 122 741 комментарий

Александр
14 октября 2015, 14:09
0
Спасибо, Василий! Вон оно как элементарно оказалось. :)
Василий Наумкин
14 октября 2015, 14:06
+1
В идеале хотелось бы сортировку, как ресурсы идут в дереве админ-панели.
$query->sortby('menuindex','ASC');
Любовь
14 октября 2015, 13:07
0
Теперь все работает! Огромное спасибо за помощь!
Сергей Шлоков
14 октября 2015, 13:04
+1
Опечатка в
$exclude = explode(',',$exclode);

Должно быть так
$exclude = explode(',',$exclude );
Любовь
14 октября 2015, 13:03
0
это я уже поняла, спасибо!
Любовь
14 октября 2015, 13:02
0
Спасибо большое! Пока, правда, не работает. Чанк не выводит, я сделала для проверки вот так:
<?php
$exclude = explode(',',$exclode);
if (!in_array(intval($id), $exclude)) {return $modx->getChunk('like');} 
else {return 'like2';}
На всех страницах выводит чанк like. Может тут в $id дело?
Сергей Шлоков
14 октября 2015, 12:55
0
getChunk('$like') в имени чанка знак доллара надо убрать, скопировал и забыл убрать.
Сергей Шлоков
14 октября 2015, 12:54
+1
Вот оптимизированный вариант сниппета. Если у вас чанк кешируемый, то MODX не будет каждый раз в базу лезть. Так будет быстрее и так работает парсер.
$exclude = explode(',',$exclode);
$output = '';
if (!in_array(intval($id),$exclude)) {
    if (isset($modx->elementCache['[[$like]]'])) {
        $output = $modx->elementCache['[[$like]]'];
    } else {
        $output = $modx->elementCache['[[$like]]'] = $modx->getChunk('like');
    }
}
return $output;
Сергей Шлоков
14 октября 2015, 12:33
+1
Сделайте лучше через сниппет. И проще и быстрее будет работать.
[[showChunk? id=`[[*id]]` &exclude=`2,6`]]
А сам сниппет showChunk такой
<?php
$exclude = explode(',',$exclode);
if (!in_array(intval($id),$exclude)) return $modx->getChunk('$like') ;
return '';
Подставляйте в параметр exclude ненужные айдишки через запятую. Не проверял, но должно работать.
Николай
14 октября 2015, 12:16
0
И все же. У меня тоже есть похожая зада.
Интуитивно, из описания, понимаю, что собсно работа фильтра происходит по событию загрузки документа.
Но найти, где это происходит не получается.

Можно ли изменить событие с загрузки документа на нажатие кнопки?
Так же, подойдет вариант когда вывод результатов производится по кнопке…

Заранее благодарен!
Александр
14 октября 2015, 12:12
0
все, увидел ваш комментарий про тв поле, добавил в вывод, теперь все отлично)
Александр
14 октября 2015, 12:10
0
добавил, вообще теперь не захватывает с «technology», даже если он один
Евгений Webinmd
14 октября 2015, 12:05
0
&where=`{"type_site:LIKE":"%technology%"}`
и тут я не помню надо ли дописывать поле type_site в параметр includeTVs

Да и при использовании &tvFilters вроде как надо было писать в includeTVs имя поля, хотя могу и ошибаться
Александр
14 октября 2015, 12:02
0
уже устанавливал, все одно при установке на ещё одно значения, проект больше не выводится.

Евгений Webinmd
14 октября 2015, 11:55
0
использовать LIKE
в примере даже есть
&tvFilters=`filter1==bar%`
Ян Сонов
14 октября 2015, 10:26
0
Василий, что все таки надо сделать чтобы можно было писать TV внутри чанков в виде {$name}?
если оно уже получено сниппетом
Как это сделать? Например, в pdoResources делаю и &includeTVs со списком tv и подготавливаю и обрабатываю их через &prepareTVs=`1` и &processTVs=`1` и все равно внутри чанка можно получить значение этих переменных только в виде:
{$modx->getObject('modResource', $id)->getTVValue('name')}
а для этого надо включать pdotools_fenom_modx, что не очень хорошо для безопасности. Тот же самый вызов только с $_modx не работает. Из этого следует, что внутри чанков по сути получается использовать в формате {$name} только стандартные поля ресурсов, а для получения значений TV надо писать каждый раз огромный код, что конечно «убивает» все удобство написания кода. Так что же я делаю не так? Или просто я что-то не так понял, такой возможности нет и мне пора бы уже сделать себе хоткей в редакторе для TV? :)
Любовь
14 октября 2015, 10:19
0
Нашла вот такое решение
Вот сниппет:
session_start();
//Создаем строку из 8 случайных цифр. 
for($i=1; $i<=8; $i++)
{$r=rand(0, 9);
$rnd.=$r; $rndn.=$r;
if ($i==4){$rndn.=' ';}}
// Записываем их в сессию
$_SESSION['captcha']=$rnd;
// Переменную с пробелом выводим на картинку с помощью phpthumbof
return '<img title="Введите номер карты" src="[[*capimg:phpthumbof=`w=140&h=90&zc=1&fltr[]=wmt|'.$rndn.'|10|BL|000000|10|90|15|0|5|15|`]]" alt="Каптча">';
Сами цифры вывести можно вот таким образом:
echo $_SESSION['captcha'];
Но не получается, чтобы это выводилось картинкой. Подскажите, пожалуйста, как это сделать?
Сергей Шлоков
14 октября 2015, 10:10
+1
В новой версии 1.0.5 — добавил возможность парсить сниппеты и чанки (не редактировать, а именно парсить). Это может быть немного опасно, так как сниппеты могут грузить скрипты, которые могут поломать админку. Поэтому изначально эта возможность закомментирована. Но если сниппеты несложные — просто вывод информации, то почему бы и не посмотреть, что он выводит с разными параметрами. Такой маленький тест.
С чанками опасности поломать админку нет (если в них нет вызова сниппетов), но обычно они завязаны на css, которого в админке нет, поэтому отображение может быть кривым. Но опять же, почему бы и нет.
Для этого действия есть свое сочетание клавиш Alt+Enter.
Алексей
14 октября 2015, 09:58
0
Недавно обнаружил, что просто добавляя условие
$id = $this->getProperty('id', @$_GET['id']);
	if (!$resource = $this->modx->getObject('modResource', $id)) {
		return $this->modx->lexicon('ms2gallery_err_no_resource');
	}
if ($resource->template == 6) { 
$options = [
	//'w' => 120,
	'h' => 600,
	'q' => 90,
	'f' => 'jpg'
];
}
можно для разных шаблонов ресурсов делать разные размеры исходных изображений.