Василий Столейков

Василий Столейков

С нами с 19 декабря 2012; Место в рейтинге пользователей: #24
24 ноября 2015, 19:45
0
А, вижу в логах изменений инструкция!
24 ноября 2015, 19:44
0
УАУ! Вот это скорость! Спасибо!
А можно пример использования?
24 ноября 2015, 19:43
0
Ага, спасибо что помог по полочкам всё разложить. Буду сниппет писать. У меня уйдёт«чуть» больше 15 минут, но думаю сделать смогу.
24 ноября 2015, 19:38
0
Буду наверное свой сниппет на основе BabelLinks писать, т.к. значения страниц других контекстов хранятся в тв-шке бабела.
24 ноября 2015, 19:37
0
Ух ты, а за это отдельное спасибо!!! ВЕСЬМА нужная вещь в феноме!
24 ноября 2015, 19:35
0
Да, я забыл про твой сниппет, но у него немного другая специфика работы:
Обязательное условие — одинаковые uri ресурсов в разных контекстах. Если нет соответствия, то ссылка будет в корень контекста.
А у меня весь сайт повязан жёстко на Babel и у каждого языка свои uri, в завсимости от языка (транслит на русском, а на других уже латиница, типа «o-nas.html» и «about-us.html»)…
24 ноября 2015, 19:32
0
Я его использую уже вместо Personalize там, где нужно выводить авторизованным и неавторизованным.
Но ещё мне нужно выводить чётко по группам. Есть групп 6 пользователей, каждой из которых нужно выводить своё…
24 ноября 2015, 19:27
0
Я тоже к этому склоняюсь… Попробую сниппеты ковырять, хотя это не совсем кошерно и бьёт по моим воспитанным на обновления привычкам…
24 ноября 2015, 19:25
0
Сейчас снова проверил @CODE: у Personalize он срабатывает при схеме что выше, сниппет на MODX.
23 ноября 2015, 22:27
1
+1
Да нет, вызываю сниппет на той же странице что и форма, а форму посылаю на саму себя через POST. А сниппет уже редиректит на ту страницу, которая указана в скрытом поле pageId у формы:
<form class="form-horizontal col-xs-12" action="[[~[[*id]]]]" method="post">
    <input type="hidden" value="35" name="pageId">

Сниппет:
<?php
if(isset($_POST['pageId'])) {
    $pageId = $_POST['pageId'];

    // тут нужно перечисляем все нужные нам GET параметры
    $parametrs = array();
    if(isset($_POST['country']) && !empty($_POST['country'])) {$parametrs[country'] = $_POST['country'];}
    
    // создаём из них ссылку
    if (!empty($parametrs)){
    	foreach($parametrs as $key => $value){
    		if ($firstItemExist == 1) {
    			$urlParametrs .= "&" . $key . "=" . $value;
    		}
    		else {
    			$urlParametrs = "?" . $key . "=" . $value;
    			$firstItemExist = 1;
    		}	
    	}
    }
    
    $url = $modx->makeUrl($pageId, '', '', 'full');
    $redirectLink = $url.$urlParametrs;

    header('Location: '.$redirectLink);
    die();
    
}
else {return;}
22 ноября 2015, 16:39
0
Класс! Супер!
Спасибо, всё оказывается проще чем казалось на первый взгляд!
22 ноября 2015, 16:31
0
Как я понимаю, только что установленные плейсхолдеры в феноме не получится ставить в любое место страницы, а строго после вызова сниппета, который устанавливает этот плейсхолдер.
Вот пример:
{$_modx->getPlaceholder('totalMy')} // тут НЕ выводит

{$_modx->runSnippet('!getTickets', [
    'parents' => 0,
    'totalVar' => 'totalMy',
])}

{$_modx->getPlaceholder('totalMy')} // тут выводит
С modx-плейсхолдерами всё работало, даже если вставить плейсхолдер до вывода сниппета.

Как обойти этот момент на Феноме? Делать 2 вызова сниппета? Или использовать параметр toPlaceholder (только для pdo-сниппетов)?
22 ноября 2015, 14:41
0
Или мне кажется, или Прямой эфир на сайте не работает? У меня там пустота вместо результатов.
21 ноября 2015, 21:14
+1
Круто! Приятные изменения. А значения ТВ-шек по умолчанию, я думал ты уже и забил на них… )))
20 ноября 2015, 11:09
0
Ради интереса попробовал. Неа, не работает. Ни с этой тв-шкой ни с другой, нормальной. Доходит до места вызова тега и выдаёт return наверное, т.к. после него ничего не выводит.

P.S. Хотя по видимому работает, т.к. он спотыкается на сырые теги в вызове Office, видно я там не всё переписал на феном. Удалив его всё заработало, вывело чистый код из базы. Тут я и заметил, что у базы кодировка была неправильной — вывело кракозябры ))).

Спасибо за ещё один вариант вывода — он обязательно пригодится!
20 ноября 2015, 09:36
0
Интересно что ни один из предложенных вариантов не срабатывает на странице для тв-шки у которой много тире:
[[*tv-name-of-name-of-other-name]] // работает
{$_pls['tv-name-of-name-of-other-name']} // не работает
{$_modx->getPlaceholder('tv-name-of-name-of-other-name')} // не работает
Никак не завелось. Пришлось переименовывать тв-шку в tv_name_of_name_of_other_name и переписывать все места, где она встречалась.
19 ноября 2015, 09:50
0
В админке он и так появляется сверху в списке. Если у вас нет, то в системный параметр ms2_category_grid_fields допишите через запятую поле publishedon и в категории просто нажмите на колонку «Был опубликован» для пересортировки.

На самом же сайте (не в админке) этим управляют 2 параметра:
&sortby=`publishedon`
&sortdir=`DESC`
17 ноября 2015, 21:35
0
А как насчёт подстановки сниппета, который будет генерировать нужные тебе id-шки?
Что-то типа такого:
[[!TicketForm? 
    &resources=`[[!pdoResources?&returnIds=`1`&parents=`0`]]`
]]
16 ноября 2015, 11:55
0
Спасибо, всё сработало!
Рабочий вариант:
'where' => "{ 'id':  118974 }",