Евгений

Евгений

С нами с 18 апреля 2017; Место в рейтинге пользователей: #1512
vectorserver
14 апреля 2020, 19:23
6
+11
Так проще и быстрее, без обид друг)
Код сниппета ParseInsta:
<?php
//ParseInsta
$cacheKey = "insta_".md5($url);

$returnCache = $modx->cacheManager->get("$cacheKey");

if(!$returnCache){
    $doc = new DOMDocument();
    $doc->loadHTMLFile($url);
    $xpath = new DOMXpath($doc);
    $sharedData = $xpath->query("//html/body/script[1]")->item(0)->textContent;
    $str = $sharedData;
    $modx->cacheManager->set($cacheKey, $str, 7200*60);
    return $str;
}

return $returnCache;
И далее JSON обрабатываем через JS или конвертуть в массив и использовать в чанках
<script>
var instaphotos = [[ParseInsta? $url=`https://www.instagram.com/explore/tags/кофесос`]];
//bla bla bla
</script>
iWatchYouFromAfar
17 октября 2018, 10:32
2
+6
Ну и маленький бонус от меня. Допустим вы задаете картинке или любому другому элементу ссылку и хотите указать кастомный CSS-класс. Это можно сделать добавив в external-config.json следующий код:

"link_class_list": [{
    "title": "Увеличение при клике",
    "value": "image-popup"
}]

И теперь если попробуете указать ссылку появится новый пункт «Class» и в выпадающем списке наш селектор — image-popup".

Александр Мельник
12 февраля 2018, 19:52
1
0
Я думаю стандартного pdoResources будет достаточно
[[!pdoResources?
	&class=`msVendor`
	&tpl=`chunk`
	
]]
В чанк chunk будет передана [[+resource]] или {$resource} в зависимости от того какой синтаксис вы используете.
Она содержит id прикрепленного ресурса и вы можете сделать из нее ссылку в chunk так {$_modx->makeUrl($resource)}
Сергей
Сергей
01 сентября 2017, 00:14
9
0
Тщательно пережевав это modx.pro/help/7693/#comment-53831, решил свой вопрос — Как вывести два фото к каждому товару на странице категории:
в шаблоне категории вызываю список товаров так:
[[!pdoPage?
	&element=`msProducts`
	&loadModels=`gallery`
	&leftJoin=`{
		"360x270": {"class":"msProductFile","alias":"360x270", "on": "360x270.product_id = msProduct.id AND 360x270.path LIKE '%/360x270/' AND 360x270.rank=0"}
		,"360x270x1": {"class":"msProductFile","alias":"360x270x1", "on": "360x270x1.product_id = msProduct.id AND 360x270x1.path LIKE '%/360x270/' AND 360x270x1.rank=1"}
	}`
	&select=`{
		"msProduct":"*"
		,"360x270":"360x270.url as 360x270"
		,"360x270x1":"360x270x1.url as 360x270x1"
	}`
]]
и в чанке tpl.msProducts.row.php вывожу ДВА фото товара так:
<img src="[[+360x270:default=`[[++assets_url]]components/minishop2/img/web/ms2_small.png`]]">
<img src="[[+360x270x1:default=`[[++assets_url]]components/minishop2/img/web/ms2_small.png`]]">
Количество запросов снизилось вдвое, время загрузки страницы упало в полтора раза.
Извините, если кому наступил на мозоль, разжевав досконально, я знаю, что тут это не приветствуется...)))
Василий Наумкин
24 марта 2016, 07:44
8
+2
Лично я закрываю служебные директории через веб-сервер на случай обнаружения новой уязвимости в MODX.

Например, как это было, когда движок некорректно обрабатывал запросы в несуществующий контекст в коннекторах. Там еще одна PHP авторизация не помогла бы, так как хакер получал доступ к API через обычные GET запросы к определённому файлу.

Именно поэтому я закрываю для доступа снаружи и админку, и коннекторы, и ядро. Причём, не через потенциально уязвимый движок, а средствами гораздо менее потенциально уязвимого Nginx.
location ~* ^/(core|manager|connectors)/ {
    auth_basic "Restricted Access";
    auth_basic_user_file /home/site/.htpasswd;
    try_files               $uri $uri/ @rewrite;
    location ~ \.php$ {
            include         fastcgi_params;
            fastcgi_param   SCRIPT_FILENAME $document_root$fastcgi_script_name;
            fastcgi_pass    backend-site;
    }
}

А зачем нужна вот эта инструкция — большой вопрос.
Сергей Фещуков
13 февраля 2016, 20:14
1
0
Самый простой — 2 вариант. Только не полный код вы скопировали.
Создаёте плагин с любым именем. В него вставляете следующий код:
switch ( $modx->event->name ) {
	case 'msOnAddToCart':
		$tmp = $cart->get();
		$tmp[$key]['price'] = $tmp[$key]['price']+($tmp[$key]['price']*18)/100;
		$cart->set($tmp);	
		break;
}
Затем самое главное — устанавливаете в соседней вкладке запуск плагина при возникновении события msOnAddToCart. И сохраняете плагин. Готово.
Andrey Grachov
25 мая 2014, 17:04
1
+1
Правильный вариант выглядит так:
[[phpthumbof? &input=`/assets/resourceimages/[[+id]]/[[+image]]` &options=`h=100&w=100`]]
Если не заработает, можно попробовать [[+property.docid]] вместо [[+id]].