Konstantin

Konstantin

Был в сети 15 июня 2026, 19:21
Заказы не принимаю
Разобрался сам, увидеть нормальную работу плагина можно только при создании нового ресурса, итак, нужно заполнить все поля ресурса, сохранить, затем во вкладке Локализации появится уже созданный пункт для основного языка, остается лишь перевести остальные. Затем весь контент можно будет выводить с помощью методов автора
Хоть и старая тема, но может кому-то как и мне нужен подобный функционал, поэтому выкладываю простое решение здесь

1) ставим пакет mixedimage который создает поле загрузки файлов с расширенными параметрами
2) создаем поле TV из mixedimage и указываем в настройках путь до файла {id}/ и теперь загружаться фотка будет в отдельную папку с номером ID ресурса
3) создаем новый плагин и выбираем событие OnResourceDelete, и прописываем такой код:

/** recursive remove dir function */
    function rrmdir($dir) {
        if (is_dir($dir)) {
            $objects = scandir($dir);
            foreach ($objects as $object) {
				if ($object != "." && $object != "..") {
					if (filetype($dir . "/" . $object) == "dir") {
						rrmdir($dir . "/" . $object);
					} else {
						@unlink($dir . "/" . $object);
					}
				}
			}
            reset($objects);
            $success = @rmdir($dir);
        }

    }

$path = $modx->getOption('base_path') . 'assets/images/';  // replace with actual path to directory

$path .=  $id;
 
rrmdir($path);
Подскажите как вывести канонические ссылки на страницах?
В документации нет примера использования, я пытался так [[PolylangCanonical]] не получается, сказано что нужно использовать параметр $tpl с чанком, можете написать пример такого чанка?
Спасибо за ссылку на отличную статью которая расширила мое понимание.
Но добиться нужного результата в запросе так и не смог, пришлось собирать все значения и затем через foreach сравнивать и получать нужные данные…

<?php
  $tag = 1; // 1 аренда или 2 продажа; 


$query = $modx->newQuery('modTemplateVarResource');
$query->select(
  array('tmplvarid','contentid','value')
);
$query->sortby('FIELD(tmplvarid,7,11,13,9,12,14,15)'); // нужный порядок
$query->where(array(
    'tmplvarid:IN'=> array(7,11,13,9,12,14,15) // получим значения всех тв в кучу
));
$resources = $modx->getIterator('modTemplateVarResource',$query);

$AparttagTVs = [];
$TVs = [];
$text = '';

// 7 поле которое отвечает за вывод всех полей
// из результата запроса создаю массив только по этому полю
foreach ($resources as $apt) {
    if ($apt->get('tmplvarid') == 7) {
        $AparttagTVs[$apt->get('contentid')] =  $apt->get('value');
        // $output .= '<p>tmplvarid:'.$apt->get('tmplvarid').' $apt: '.$apt->get('contentid').' = '.$apt->get('value').'</p>';
    }
}

// перебираю весь результат запроса и создаю новый массив только с теми значениями полей у ресурсов которых в поле 7 задано аренда или продажа
foreach ($resources as $resource) {
    if ($AparttagTVs[$resource->get('contentid')] == $tag ) {
        $TVs[$resource->get('tmplvarid')][] =  $resource->get('value');
        // $output .= '<p>tmplvarid:'.$resource->get('tmplvarid').' $resource: '.$resource->get('contentid').' = '.$resource->get('value').'</p>';
    }
}

// вывожу все поля 
foreach ($TVs as $key => $v ) {
    $TVs[$key] = array_unique($TVs[$key]);
    
    if ($key !== 7) {
        
            $text .= '
                    <select name="name'.$key.'">
                        <option value="">Field-'.$key.'</option>';
            
                        foreach ($TVs[$key] as $k => $val) {
                            $text .=  '<option value="'.$val.'">'.$val.'</option>';
                        }
            $text .= '</select>';
        
          
        
    // $output .= '<p>'.$val.'-'.$text.'</p>';
        
    }
}

// echo '<pre>';
// echo print_r($AparttagTVs);
// echo '</pre>';
// echo '<pre>';
// echo print_r($TVs);
// echo '</pre>';
// echo $output;

return $text;
Здравствуйте, Polylang верно выводит перевод поля MIGX только на ресурсе которому он прикреплен, если же его выводить на других ресурсах то показывает только язык оригинала, делаю так:
[[getImageList? &docid=`2` &tvname=`FactsAboutNalTV` &tpl=`NalFactChunk`]]
Есть варианты как заставить его показывать перевод?
Доработайте пожалуйста перевод значений для списков. Вот ситуация как должно быть по логике:
на основном языке ресурса админ выбирает из списка вид интерьера квартиры, на основании этого поля будет делаться фильтр, поэтому он был задан как (Modern==1||Minimalistic==2) чтобы фильтровало по value, далее админ не должен его видеть в локализациях ресурса, переводы этих значений должны подхватываться из настроек Polylang вкладки TV, где привязаны переводы значений для этого поля в таком же формате ((Модерн==1||Минималистичный==2)). Согласитесь это логично потому что интерьер одной и той же квартиры не меняется в зависимости от языка и тогда зачем его редактировать там?

На данный момент я перепробовал все варианты настроек и не смог добиться такого поведения
Да, все оказалось немного не так как я себе представлял а намного проще. Спасибо что навели меня на правильную мысль. Со мной сыграло злую шутку кеширование поэтому я никак не мог получить верное value, но после всех чисток все стало на свои места: (Option1==value1||Option2==value2) в этом примере получаем value так [[*myTvName]], а option так [[*myTvName:tvLabel]] и никакого сниппета и кода больше не нужно! Спасибо