Дмитрий

Дмитрий

С нами с 16 декабря 2015; Место в рейтинге пользователей: #47
Дмитрий
19 апреля 2018, 02:02
+1
Отвечу за него) Да, так и должно быть. Дизайн такой. Попробуйте погуглить такое. Можно найти кучу хороших примеров. С MODX вы более-менее разобрались, поэтому еще раз перетянуть сайт не затруднит, я полагаю)
Дмитрий
18 апреля 2018, 23:22
0
Целиком и полностью поддерживаю Константина. С дизайном необходимо что-то делать. С таким дизайном вряд ли можно что-то массово продать. Советую взять хотя бы бесплатный HTML шаблон лэндинга, его почистить, натянуть на сайт и попробовать заново.
Дмитрий
18 апреля 2018, 11:10
0
Если ресурс — товар miniShop2, то можно поставить еще отдельно ms2Gallery и будет две галереи, буквально вчера это затестил. Только в системных настройках ms2Gallery надо будет указать, чтобы не синхронил галерею с галереей miniShop2. А в словарях можно будет поменять названия табов.
Дмитрий
17 апреля 2018, 11:38
0
Самый простой способ:
Если страница, в которую надо записать TV, текущая, то вообще просто:
//тут какие-то вычисления и затем:
$modx->resource->setTVValue('TVNAME', $value);
$modx->resource->save();
Если страница, в которую надо записать TV, не текущая, а какая-то другая, то сначала надо как-то получить ее ID: программно, или захардкодить, или передать в сниппет и затем:
//опять какие-то вычисления и поиск ID
$page = $modx->getObject('modResource',$id);
$page->setTVValue('TVNAME', $value);
$page->save();
Дмитрий
16 апреля 2018, 21:47
0
Еще можно вообще отказаться от идеи с количеством страниц :) Ну, может это реально необходимо, но не знаю, не знаю. А вообще, идею понял. Тогда можно попробовать еще кэширование, как вариант. Еще можно сделать дополнительную табличку в БД и записывать туда путь и имя файла и его размер и кол-во страниц. Это тоже делается довольно легко. Ну или в ТВ, да. Только я не понимаю, в чем тогда проблема?) Не решили еще?
Дмитрий
16 апреля 2018, 02:18
0
Специально ради вас открыл один сайт, где у меня в корне прошлыми разработчиками было вывалено 320 файлов разного формата и разного размера. И код ниже, который проходит по 324 файлам и вычисляет их размер, выполняется за 0.0016 s. Может, стоит немного оптимизировать ваш сниппет? 21 секунда это ооооочень много и явный признак, что вы что-то делаете не так :)
<?php
$files = scandir(MODX_BASE_PATH);
foreach ($files as $file){
    if (is_file(MODX_BASE_PATH.$file)){
        echo '
'.$file.' is a file. size is: '.filesize(MODX_BASE_PATH.$file);
    }
}
Дмитрий
15 апреля 2018, 10:22
1
0
О мамочки, нахрена, извините за грубость, пихать какие-то данные, которые легко вычислить, в отдельное поле? Захламлять БД, усложнять логику, мучать менеджеров? Можно написать простенький сниппет, хотя бы типа такого:
<?php
clearstatcache();
$size = filesize(MODX_BASE_PATH.'files/'.$input);
if ($size > 1024){
    $s = $size / 1024;
    $unit = 'Кб';
    if ($s > 1024){
        $s = $s / 1024;
        $unit = 'Мб';
    }
    $s = round($s);
} else {
    $s = $size;
    $unit = 'байт';
}
return $s.' '.$unit;
А потом выводить (тоже, как просто пример):

{var $filesize = $_modx->runSnippet('@FILE:snippets/getFilesize.php',[
    'input' => $file.file
])}
<span class="files-list__item-size">{$filesize}</span>
Ну или можно FileAttach использовать, что тоже очень хорошо.
Дмитрий
11 апреля 2018, 11:06
+2
Да, и это ваш 4-ый вопрос за сутки из разряда «HTML + CSS для самых маленьких». Может, стоит потратить несколько вечеров и самостоятельно освоить азы? В 2018-ом это сделать очень просто. Начиная от бумажных книг и заканчивая всякими HTML Academy — нужно только желание.
Дмитрий
10 апреля 2018, 13:42
+1
Это кастомный класс фильтра, который нужно положить в определенное место и подключить в настройках.
Дмитрий
05 апреля 2018, 23:34
+1
Насчет картинок — надо смотреть настройки URL, к которым общается сервер за картинками. А насчет title — надо настраивать локализатор, там всё просто. У меня 3 сайта на нём работают спокойно :)
Дмитрий
05 апреля 2018, 12:21
0
1) Отформатировать дату в какой-нибудь формат это как бы вообще не проблема. Достаточно привести к виду дд/мм и сравнивать их например.
2) Для отправки очереди писем, чтобы хостинг не подумал, что через него спам рассылают можно подключить API какого-нибудь сервиса рассылок, типа Unisender. Там письма довольно легко отправлять.
Дмитрий
03 апреля 2018, 20:28
+1
Попробуйте вместо плясок с Бабелем, .htaccess'ом и так далее попробовать Localizator. Настраивается за пару минут. Ну а если всё-таки хочется Babel, то нужно еще разок попробовать всё настроить, или почитать другие мануалы. Обычно где-то просто что-то не заметили, ошиблись со слэшем или еще чего.
Дмитрий
03 апреля 2018, 10:54
0
о, спасибо. Буду знать!)
Дмитрий
02 апреля 2018, 21:56
+1
В следующем месяце хотел запилить пакет Setka.io, но теперь по ходу необходимость отпала :)
Дмитрий
02 апреля 2018, 13:24
0
Их не настраивал. У гугла что-то слишком сложно. Там с настройками переборщили. Я как глянул, убежал оттуда. А инсту вовсе не настраивал, т.к. не думаю, что для ЦА сайта это нужно
Дмитрий
02 апреля 2018, 13:20
0
Вот и разобрались :)
Дмитрий
02 апреля 2018, 12:46
+1






Вот посмотрите картинки с настройками моего приложения, может это поможет.
Дмитрий
31 марта 2018, 16:54
0
Делаете вторую настройку $tplOuter и точно так же через getChunk вставляете, ничего сложного. Вот тут я показывал пример с вложенностью чанков
Дмитрий
31 марта 2018, 16:17
+1
Ай ай ай, плохо так делать, плохо :) Совсем не тру. Зашивать HTML в код сниппета это плохой тон в программировании сниппетов в MODX. Лучше сделать у сниппета настройку tpl и выводить данные в чанк.
Хотя бы так:
<?php
//Получаю id ресурса
$id = $modx->resource->get('id');
$tvInput = explode(',',$tvs);

$tvList = $modx->getCollection('modTemplateVarResource',[
    'contentid' => $id,
    'tmplvarid:IN' => $tvInput
    ]);
    if (!empty($tvList)){
	   if (!isset($tpl)){
			$tpl = 'someshunk';   
	   }
	   $output = '';
        foreach ($tvList as $tv){
             $v = $tv->get('value');
             $output .= $modx->getChunk($tpl, [
				'value' => $v
			 ]);
        }
     
}
return $output;
Код чанка:
<a class="fancybox gallery__thumbItem" rel="gallery1" href="[[+value]]" title="" data-fancybox="images">
        <img src="[[+value]]" title="" alt="" itemprop="image" class="thumbsImg"></a>
А вызывать, соответственно:
<div class="wrap">
 <div class="wrap__header">
<span class="wrap__title">Фото</span>
</div>
[[checkImg?&tpl=`somechunk`]]
</div>
могут быть ошибки, т.к. писал без проверки, но мысль 100% сохраняется)
Дмитрий
30 марта 2018, 12:30
+2
Ну, типа такого.
Но лучше просто установить нормальную галерею и пользоваться ею.
$id = 1439;

$tvs = $modx->getCollection('modTemplateVarResource',[
    'contentid' => $id,
    'tmplvarid:IN' => [3,2]
    ]);
foreach ($tvs as $tv){
    echo $tv->get('value');
}