kyokushin9
Всем привет. Может кто подскажет почему после обновления modx evo перестала работать фильтрация в ditto? вроде все правильно прописал - но ничего не выводит [[Ditto? &parents=4 &orderBy=menuindex ASC &filter=to_popular,1,1` &tpl=popularTpl &id=popitem &paginate=0 &display=30 &depth=3 ]]
Anonymous
1,4?
kyokushin9
fuf
kyokushin9
ага
Anonymous
Ви 1,4, удалили дитто из стандартного набора. Его нужно ставить ставить отдельно.
kyokushin9
а версия так же будет 2.1.2?
Anonymous
Не подскажу, я не пользовался дито.
kyokushin9
ладно..пасиб..посомтрю щас
Pathologic
хорошие люди не пользуются дитто
kyokushin9
да мне переписывать не класс....просто обновить попросили..а тут слетела фильтрация
kyokushin9
Подскажите..а группа эта только в телеграмм? в скайпе нет случаем?
Andrey
У дитто какой-то затуп в новой версии. Проверьте всякие там orderby и т.д.
kyokushin9
поставил ручками 2.1.0 и вроде норм
😵‍
<a href="tg://resolve?domain=telegram.me/@mollny"></a> что тут не правильно?
😵‍
почему не работает ? (
kyokushin9
так что спасибо за советы
kyokushin9
Еще вот вопросик есть Warning: session_start(): open(/tmp/u0149087/sess_cf14b2ae5e57c9b97e3fa01a23009db6, O_RDWR) failed: No such file or directory (2) вот такого плана ошибочка, и не пускает в админку, хотя сам сайт работает
Dmytro
Место на диске закончилось ;)
kyokushin9
так и знал..
kyokushin9
пасиб
Aliaksandr
Можно ли из фильтра DL изменить порядок сортировки, а?)
Dmytro
из фильтра это как ?
Pathologic
Можно ли из фильтра DL изменить порядок сортировки, а?)
в DL фильтры готовят условия для запроса, а не обрабатывают результаты, как в дитто
Aliaksandr
Прямо в файле вроде tv.filter.php как- то задать параметр orderBy
Aliaksandr
Мне нужно условие match..against и такая же сортировка для полнотекстового поиска
Aliaksandr
Условия через get_join и get_where я допустим получу, но как быть с сортировкой, вот в чем вопрос)
Pathologic
да, интересная штука
Pathologic
можно, конечно, параметр orderBy попробовать подменить, но это костыльно
Pathologic
можно забить на фильтры и расширить контроллер, сразу там и прописать нужные условия и сортировку
Aliaksandr
По идее вариантов $this->DocLister->SortOrderSQL() мог бы прокатить, но скорее всего из фильтра назад в DL ничего не возвращается
Aliaksandr
Надо попробовать завтра)
Pathologic
так объект DL туда передается, так что параметры можно менять
Pathologic
надо только посмотреть, не поздно ли будет их менять из фильтра
Aliaksandr
Насчет контроллера, просто хотелось evoSearch допилить до отдельной таблицы и фильтра, а вариант с отдельным контроллером как-то не сильно отличается от простой обертки evoSearch как сейчас)
Aliaksandr
Объет то передается, просто для сортировки по тв например отдельный метод injectsortbytv, видимо из фильтра изменить сортировку не удалось
Pathologic
надо подумать, как такое лучше сделать
Pathologic
например, из фильтра можно задавать какое-то свойство в объекте доклистера, а в injectsortbytv его учитывать
Pathologic
хотя мне вообще не нравится как сортировка сделана
Pathologic
хорошо было бы ее тоже вынести в отдельный класс
Aliaksandr
А отдельный какой-нибудь параметр для left join , есть в самом DL? Или его только в фильтре и можно добавить?
Pathologic
нету
Aliaksandr
Блин:)
Pathologic
можно не в фильтре добавить
Aliaksandr
Как?
Aliaksandr
Без отдельного контроллера
Pathologic
без отдельного контроллера никак
Pathologic
чтобы нормально такое сделать надо бы использовать конструктор запросов
Aliaksandr
В общем завтра попробую, может возвращается все-таки из фильтра наза модифицированный в нем , DocLister)
Pathologic
он не то что возвращается, объекты всегда передаются по ссылке
Pathologic
так что если ты что-то в этом $this->DocLister сделаешь, то оно сделается
Aliaksandr
Ну значит все должно сойтись, фильтры формируются еще на этапе __construct, так что не должны опоздать задать новую сортировку)
Aliaksandr
Главное чтобы какой-нибудь getCFgDef все не испортил))
Aliaksandr
Мда, параметры конфига гоняются отдельным классом
Aliaksandr
\Helpers\Config
Pathologic
ну и что
Aliaksandr
С private cfg
Pathologic
там есть методы
Pathologic
setConfig
Pathologic
getConfig
Aliaksandr
Это уже не DL
Pathologic
DL->config
Pathologic
там объект \Helpers\Config, смело используй (:
Aliaksandr
$this->DocLister->setConfig(array('orderBy' =>'тут что надо'))
Aliaksandr
На это намекаешь?)
Pathologic
ага
Aliaksandr
После DocLister забыл ->config-> ))
Pathologic
ну это и так понятно ((:
Pathologic
а может и в DocLister остался метод setConfig для совместимости, я не помню
Aliaksandr
$this->DocLister->config->setConfig($array)
Aliaksandr
Ну мало ли кто читать будет и не поймет)
Pathologic
вообще я сейчас посмотрел, setConfig не раз используется для всяких разных целей
Aliaksandr
Он через this->config->setConfig
D
Доброго времени суток Есть EVO 1.2.1-d9.1.0 c SimpleGallery и phpthumb На сервере есть jpegtran, а в файлике "assets/lib/Helpers/PHPThumb.php" есть функция оптимизации jpegtran. При испоьзовании плагина sgThumb есть "$thumb = new \Helpers\PHPThumb();", и если я правильно понимаю SimpleGallery при вкл на севрере jpegtran оптимизирует картинки этой библиотекой. Вопрос в том как поправить код сниппета phpthumb что бы при ресайзах он тоже использовал оптимизированные изображение.
Pathologic
$thumb = new \Helpers\PHPThumb(); $image = $modx->runSnippet('phpthumb', $params); $thumb->optimize(MODX_BASE_PATH . $image); return $image;
Pathologic
то есть не править код, а вместо phpthumb запускать такой сниппет
Pathologic
хотя пожалуй что нет ((:
Pathologic
лучше поправить код
Pathologic
а то так кэширования нет
Pathologic
<?php /** * phpthumb * * PHPThumb creates thumbnails and altered images on the fly and caches them * * @category snippet * @version 1.3 * @license http://www.gnu.org/copyleft/gpl.html GNU Public License (GPL) * @internal @properties * @internal @modx_category Content * @internal @installset base, sample * @documentation Usage: [[phpthumb? &input=`[+image+]` &options=`w=150,h=76,far=C,bg=FFFFFF`]] * @documentation phpThumb docs http://phpthumb.sourceforge.net/demo/docs/phpthumb.readme.txt * @reportissues https://github.com/modxcms/evolution * @link noimage.png here [+site_url+]assets/snippets/phpthumb/noimage.png * @author Bumkaka * @author Many contributors since then * @lastupdate 09/04/2016 */ if(!defined('MODX_BASE_PATH')){die('What are you doing? Get out of here!');} $newfolderaccessmode = $modx->config['new_folder_permissions'] ? octdec($modx->config['new_folder_permissions']) : 0777; $cacheFolder=isset($cacheFolder) ? $cacheFolder : "assets/cache/images"; if(!is_dir(MODX_BASE_PATH.$cacheFolder)) { mkdir(MODX_BASE_PATH.$cacheFolder); chmod(MODX_BASE_PATH.$cacheFolder, $newfolderaccessmode); } $tmpFolder = 'assets/cache/tmp'; if (!empty($input)) $input = rawurldecode($input); if(empty($input) || !file_exists(MODX_BASE_PATH . $input)){ $input = isset($noImage) ? $noImage : 'assets/snippets/phpthumb/noimage.png'; } // allow read in phpthumb cache folder if (strpos($cacheFolder, 'assets/cache/') === 0 && $cacheFolder != 'assets/cache/' && !is_file(MODX_BASE_PATH . $cacheFolder . '/.htaccess')) { file_put_contents(MODX_BASE_PATH . $cacheFolder . '/.htaccess', "order deny,allow\nallow from all\n"); } if(!is_dir(MODX_BASE_PATH.$tmpFolder)) { mkdir(MODX_BASE_PATH.$tmpFolder); chmod(MODX_BASE_PATH.$tmpFolder, $newfolderaccessmode); } $path_parts=pathinfo($input); $tmpImagesFolder=str_replace(MODX_BASE_PATH . "assets/images","",$path_parts['dirname']); $tmpImagesFolder=str_replace("assets/images","",$tmpImagesFolder); $tmpImagesFolder=explode("/",$tmpImagesFolder); $ext=strtolower($path_parts['extension']); $options = 'f='.(in_array($ext,explode(",","png,gif,jpeg"))?$ext:"jpg&q=85").'&'.strtr($options, Array("," => "&", "_" => "=", '{' => '[', '}' => ']')); parse_str($options, $params); foreach ($tmpImagesFolder as $folder) { if (!empty($folder)) { $cacheFolder.="/".$folder; if(!is_dir(MODX_BASE_PATH.$cacheFolder)) { mkdir(MODX_BASE_PATH.$cacheFolder); chmod(MODX_BASE_PATH.$cacheFolder, $newfolderaccessmode); } } } $fname_preffix = "$cacheFolder/"; $fname = $path_parts['filename']; $fname_suffix = "-{$params['w']}x{$params['h']}-".substr(md5(serialize($params).filemtime(MODX_BASE_PATH . $input)),0,3).".{$params['f']}"; $outputFilename = MODX_BASE_PATH.$fname_preffix.$fname.$fname_suffix; if (!file_exists($outputFilename)) { require_once MODX_BASE_PATH.'assets/snippets/phpthumb/phpthumb.class.php'; $phpThumb = new phpthumb(); $phpThumb->config_temp_directory = $tmpFolder; $phpThumb->config_document_root = MODX_BASE_PATH; $phpThumb->setSourceFilename(MODX_BASE_PATH . $input); foreach ($params as $key => $value) { $phpThumb->setParameter($key, $value); } if ($phpThumb->GenerateThumbnail()) { $phpThumb->RenderToFile($outputFilename); $thumb = new \Helpers\PHPThumb(); $thumb->optimize($outputFilename); } else { $modx->logEvent(0, 3, implode('<br/>', $phpThumb->debugmessages), 'phpthumb'); } } return $fname_preffix.rawurlencode($fname).$fname_suffix; ?>
D
Огромное спасибо, сейчас пойду тестировать. А то меня черти потянули ковырять phpthumb.class.php)))