Дмитрий Суворов

Дмитрий Суворов

С нами с 01 августа 2013; Место в рейтинге пользователей: #185

Чертов Кеш созданного снипетом изобрражения

Ребята, всю голову изломал, ситуация следующая, написал снипет (как мог, в php не бог) который накладывает текст на изображение. Есть рисунок, и есть форма с именем пользователя, он отправляет форму и имя его накладывается на изображение, все работает, но если он в форме еще раз меняет имя и отправляет опять форму, ему показывается первый рисунок, хотя в папке он уже другой, то есть из кеша берется рисунок. Я и так и так пробовал, в имя добавлял дату что бы всегда новый был рисунок, так порядок, но может накопиться куча рисунков от одного юзера, не вариант, но вот с постоянно заменяемым одним рисунком кеш не показывает обновленный рисунок :( как быть? Подскажите куда копать пожалуйста?

Вот код снипета моего limagehandler
<?php
// наше изображение
$img = ImageCreateFromJPEG("uploads/img.jpg");

$thumb_file = "uploads/";
$id_user = $modx->user->get('id');
$dir = $thumb_file.$id_user;
$path = mkdir($dir, 0777);

$name = isset($_POST[name]) ? $modx->stripTags($_POST[name]): '';

// определяем цвет, в RGB
$color2 =  imagecolorallocate($img, 111, 213, 232);

// указываем путь к шрифту
$font = 'site/fonts/Robotobold.ttf';

imagettftext($img,  80, 0, 730, 930, $color, $font, $name); // Имя

imagejpeg($img, $dir.'/img_'.$id_user.'.jpg', 100);

$img = $dir."/img_".$id_user.".jpg";

return $modx->setPlaceholder('img-c',$img);
$modx->cacheManager->delete($userId, array(xPDO::OPT_CACHE_KEY=>'users_data'));

Код укоротил, он работает, вызываю на странице так:
[[!limagehandler]]
<img width="100%" src="[[!+img-c]]" alt=""/>
Главное на хостинге подменяется картинка новая, но она с тем же именем, и браузер после обновления страницы показывает старую, не могу побороть эту беду. Как быть?
Роман
03 апреля 2017, 10:42
modx.pro
2
1 119
0

Проблема с выводом категорий Производителя товаров

Имеется такая картина: есть шаблон страницы производителя товаров. В нем с помощью pdoResources выводил информацию о бренде:
{$_modx->runSnippet('!pdoResources',[
 'class' => 'msVendor',
 'tpl' => '@FILE chunks/Brands/BrandPage.html',
 'where' => '{"resource" : '~ $_modx->resource.id ~'}'])}
Евгений
02 апреля 2017, 13:46
modx.pro
2
1 928
0

Расширение фильтрации mFilter2 для тегов Tagger

mFilter2 — фильтрация найденных результатов.
Tagger — система управления тегами.

[[!mFilter2?
    &filters=`
        tagger|3:tgroup,
        tagger|1:tgroup,
        tagger|2:tgroup
    `
    &aliases=`
        tagger|3==cars,
        tagger|1==colors
    `
]]

3,1,2 — группы тегов Tagger-а.
Виталий Серый
01 апреля 2017, 11:39
modx.pro
20
3 805
+8

Подскажите, пожалуйста, как правильно написать?

В скрипте есть обновление пользователя. В результате этого обновления у него удаляется email вся информация. Если это не сложно — подскажите, пожалуйста, тут.
Любовь
30 марта 2017, 12:13
modx.pro
1
1 077
0

Обновление товара из фронтэнда процессорами.

Обновление товара из фронтэнда процессорами не авторизованными пользователями, получаю ошибку permission_denied
Когда авторизован в админке, все работает. Хочу повесить на плагин.
Как быть. Баловался с правами политики доступа анонимам. Не помогло…
или как вот такой вот запрос переделать на save();

$query = $modx->newQuery('msProduct');
$query->leftJoin('msProductData', 'Data');
$query -> where(array(
    'Data.old_price:>' => 0
    ));

$results = $modx->getCollection('msProduct', $query);

foreach($results as $res){
    
    if(time() >= strtotime($res->get('shareunpub'))){
        
        $fields = $res->toArray();
        
        $fields['price'] = $fields['old_price'];
        $fields['old_price'] = '';
        $fields['options-shareid'] = '';
        $fields['options-sharecount'] = '';
        $fields['options-shareunpub'] = '';
        
        $response = $modx->runProcessor('resource/update', $fields);
    }
}
Как то так…

Может кто что подскажет.

Спасибо!
Евгений
29 марта 2017, 21:20
modx.pro
1
922
0

Вывод всех пользователей и просмотр их профиля

Здравствуйте, помогите понять как сделать вывод всех пользователей группы user, и просмотр профиля каждого из них. Используется на сайте office, tickets, pdoTools.
Создал личный кабинет через office
На странице users вывел каждого юзера группы user через [[!pdoUsers]]
Как сделать подобное тому что на этом сайте?
Андрей
29 марта 2017, 11:19
modx.pro
4
3 402
0

Доступ к core из админки, когда папка вынесена

Для обеспечения безопасности сайта, часто рекомендуют выносить папку core за пределы веб сервера. Но так же часто бывает необходимость получить доступ к этой папке из админки. Для этого в меню — Медиа создаем новый источник файлов. Называем его. В параметрах basePath — указываем абсолютный путь к папке core (слэш на конце обязательно). basePathRelative — ставим НЕТ. После этого папка core доступна из админки
terlim
25 марта 2017, 14:16
modx.pro
7
3 578
+6

Получить адрес заказчика в плагине

Приветствую.
Задача простая: при создании юзером заказа прочитать в плагине поля адреса и в соответствии с ними выставить статус. Делаю так:

if ($modx->event->name=='msOnCreateOrder') {
    $miniShop2 = $modx->getService('miniShop2');
    
    if( $msOrder->get('room')=='?') $miniShop2->changeOrderStatus($msOrder->get('id'),7);
    
    echo $modx->toJSON(array(
    'success' => true,
    'message' => '',
    'data'    => array(),
    ));
    exit;
}

Без условия статус переключается. Как правильно добраться до поля «room» из плагина?..
Андрей
22 марта 2017, 09:45
modx.pro
1
3 023
0

Импорт в MODX Tickets из Wordpress

В очередной раз понадобилось перенести блог из Вордпресса в MODX. Раньше я для этого пользовался хитрым костылём с Articles. Сейчас он не работает, поэтому пришлось чинить. Доделывать мне его лень, так что это опять костыль. Но у меня он сработал.

Скачиваем файл, создаём новый сниппет, например, wpimport, вставляем в него текст из файла, и настраиваем всё параметры прямо в коде (я предупреждал — костыль!)

  • На 20-й строке указываем путь к файлу, экспортированному из WP.
  • На 100-й строке появляется функция, которая расставляет теги абзаца, которых в файле WP нет.
  • 115-я строка — ID родителя (куда будем импортировать?)
  • 119-я — ID шаблона для постов.
  • На 126 устанавливается class_key Tickets. Если хотите, можете сделать ModResource.
  • Со 132-й строки пробуем скопировать все изображения из WP в папку, указанную на 152-й строке. Попутно меняем css классы у картинок на bootstrap.
  • На 180-й строке пытаемся поменять href у ссылок, внутри которых были картинки.
  • 199 – Сохраняем в интротекст всё, что перед катом.
  • 209,210 — вызываем функции, которые сохраняют description и keywords в соответстующие ТВ, если в WP вы использовали All In One SEO Pack. ТВ для сохранения указаны в самом конце.
  • ТВ для тегов на 339-й строке.
Денис Дыранов
21 марта 2017, 12:39
modx.pro
9
2 531
+12

Динамические списки свойств для miniShop2

Добрый день!

Можно ли реализовать свойство для товара miniShop2 в виде динамического дополняющего списка?

Пример:
Выбираем Страну, подгружается список Городов в этой стране.
Или
Выбираем Марку Авто, подгружается список Моделей Авто для этой марки.

На финише для товара должно быть выбрано свойство, из последнего списка.

Может кто сталкивался? Может дополнение есть готовое?
Андрей Шевяков
20 марта 2017, 18:09
modx.pro
1
1 071
0