TITAN-UZ

TITAN-UZ

С нами с 27 февраля 2014; Место в рейтинге пользователей: #78
Илья Уткин
11 октября 2016, 15:08
2
+3
У меня есть вот такой файлик, который позволяет большие числа переводить в 60-ричную систему для сокращения количества символов:

<?php
class SixtyCoder {
    public $table = '0123456789abcdefghijkmnopqrstuvwxyzABCDEFGHIJKLMNPQRSTUVWXYZ';
    
    public function to60($number = 0) {
        $number = (int) $number;
        $output = '';
        return $this->divide($number);
    }
    
    public function from60($letters = '0') {
        $length = strlen($letters);
        $number = 0;
        for ($i = 0; $i < $length; $i++) {
            $pos = strpos($this->table, $letters[$i]);
            if ($pos === false) {
                return 0;
            }
            $pow = $length - ($i+1);
            $number = $number + $pos * pow (60, $pow);
        }
        return $number;
    }
    
    public function divide($number = 0, $letters = '') {
        if ($number < 60) {
            $letters = $this->getLetter($number) . $letters;
        } else {
            $rest = $number % 60;
            $letters = $this->getLetter($rest) . $letters;
            $number = ($number - $rest) / 60;
            $letters = $this->divide($number, $letters);
        }
        return $letters;
    }
    
    public function getLetter($number) {
        return substr($this->table, $number, 1);
    }
}

$coder = new SixtyCoder();
$time = time();
echo 'Long: ' . $time;
$short = $coder->to60($time);
echo '
Short: ' . $short;
echo '
Long from short: ' . $coder->from60($short);
Николай Загумённов
07 октября 2016, 14:56
3
0
Решение для редактора TinyMCE Rich Text Editor

1. Создать файлик config.json в папке /assets/components/tinymcerte/js/mgr/extras/ с вот таким содержимым:
{
    "relative_urls":false,
    "document_base_url":"/",
    "remove_script_host":true
}
2. Прописать путь до этого файла в настройке tinymcerte.external_config
{assets_path}components/tinymcerte/js/mgr/extras/config.json
Павел Романов
27 сентября 2016, 16:41
2
+1
Поправочка (всё-таки ошибся))):

{var $av = $_pls['tv.aviable']}
{if $av == 0}
	Нет в наличии
{else}
	{if $av > 1 && $av < 10}
		<i class="fa fa-circle"></i>
	{else}
		{if $av >= 10 && $av < 30}
			<i class="fa fa-circle"></i> <i class="fa fa-circle"></i>
		{else}
			{if $av >= 30}
				<i class="fa fa-circle"></i> <i class="fa fa-circle"></i> <i class="fa fa-circle"></i>
			{/if}
		{/if}
	{/if}
{/if}
but1head
12 сентября 2016, 18:48
2
+2
https://github.com/fenom-template/fenom/blob/master/docs/ru/tags/foreach.md

{foreach $list as $value}
 <div>{if $value@first} first item {/if} {$value}</div>
{/foreach}

или

{foreach $list as $value first=$first}
 <div>{if $first} first item {/if} {$value}</div>
{/foreach}
Сергей Шлоков
07 сентября 2016, 08:45
1
+1
А так
...
&where=`["TVeventdate.value >= NOW()"]`
или так
...
&where=`["EventDate >= NOW()"]`
Сергей Шлоков
07 сентября 2016, 08:28
1
0
[[!pdoResources?
	&tpl=`ImmediateEvents`
	&includeTVs=`1`
	&includeContent=`1`
	&includeTVs=`EventImage, EventDate`
	&processTVs=`1`
	&limit=`4444`
	&where=`["TVEventDate.value >= NOW()"]`
	&showLog=`1`
]]
Вызывать обязательно некэшированным.
Andrey
01 сентября 2016, 20:39
1
0
Нашел строчку:
$context = array_map('trim', explode(',', $this->getProperty('context', $this->modx->context->key)));
Может надо её как то изменить? Или поковыряться в этом файле:
core/components/tickets/processors/web/section/getlist.class.php

На правильном ли я пути?
Владимир
30 августа 2016, 21:09
1
0
Большое спасибо за помощь.
В итоге у меня получился такой чанк
[[!Snipet? &field1=`[[*link_attributes]]` &field2=`[[*longtitle]]` ]]
И такой снипет
<?php
if(!empty($field1) && !empty($field2)) {
    $res=$modx->getChunk('chunk1');
} else {
    $res=$modx->getChunk('chunk2');
}
return $res;
Работает именно так как и задумано, если указанные поля не пустые отрабатывает первый чанк, если хоть одно из двух полей пустое, отрабатывает второй чанк. Работает не значит правильно. Нет ли здесь косяков?
Илья Уткин
16 августа 2016, 12:37
4
+5
Не надо ничего мудрить. Даже отдельный шаблон не нужен. Я обычно так делаю:
<div>
    [[pdoResources?
      &parents=`0`
      &limit=`0`
      &tpl=`@INLINE <p>{$pagetitle}</p>{if $idx % 5 == 0}</div><div>{/if}`
    ]]
</div>

Но тут человек хотел именно сам разобраться с тем, как писать сниппеты для MODX. Он получил большой опыт за небольшое время. Ну и далеко не все наткнутся где-нибудь на моё решение, а если это будет отдельный сниппет, начинающие будут им пользоваться.
Володя
05 августа 2016, 22:35
21
+5
можно добавить так
создать плагин на pdoToolsOnFenomInit, в нем добавить модификатор detector
<?php
switch ($modx->event->name) {
    case 'pdoToolsOnFenomInit':
    if (!$fenom = $modx->getOption('fenom', $scriptProperties)) {
        return;
    }
    if (!$MobileDetect = $modx->getService('mobiledetect', 'MobileDetect', MODX_CORE_PATH . 'components/mobiledetect/')) {
	    return;
    }
    
    $key = $MobileDetect->config['force_browser_variable'];
    $device = !empty($_GET) && array_key_exists($key, $_GET)
		? $modx->stripTags($_GET[$key])
		: '';
	if (empty($device)) {
	    $device = $MobileDetect->getSettings();
    }
    if (empty($device)) {
        $detector = $MobileDetect->getDetector();
        $device = ($detector->isMobile() ? ($detector->isTablet() ? 'tablet' : 'mobile') : 'standard');
        $MobileDetect->saveSettings($device);
    }

    $fenom->addModifier("detector", function ($value) use ($device) {
        return $value == $device;
    });

    break;
}

и теперь в любом месте можно делать так
{if 'mobile'|detector}
mobile
{/if}

{if 'tablet'|detector}
tablet
{/if}

{if 'standard'|detector}
standard
{/if}