Разделы

  
 

EVO/@EVAL/TVevaler/ как передать значение pagetitle для обработки в снипет в @EVAL?

Добрый день, использую @EVAL(+TVevaler хотя это наверное не принципиально), вызов снипета такой:
@EVAL return $modx->evalSnippets("[[SqlFilter?&Docfield=`id`&filterTV =`filter_1_parameter,$_GET['pagetitle']|filter_2_sostav,$_GET['pagetitle']`&mode=`OR`]]");

Подскажите, как передать в снипет значение поля ['pagetitle'] меняющееся в зависимости от документа где ТВшка с этой привязкой? (в коде вместо поля $_GET['pagetitle'])

Небольшой тест РЕВО и EVO

Решил сначала собирать 1 сайтик на REVO но понял что не успеваю доделать вовремя так как столкнулся с множеством мелочей.

В итоге в момент когда создал на EVO все тоже что уже было готово на РЕВО:
Провели с Valikras небольшой тест скорости.


( Читать дальше )

[EVO] Автоматическая смена шаблона, в зависимости от состояния TV параметра.

Друзья, подскажите, есть ли какое-то элегантное решения для следующего вопроса

В зависимости от состояния чекбокса TV параметра — менять шаблон ресурса,
например если флажек снят — то шаблон «Новости», если отмечен то
«Новости-featured»

курил доки по ММ, ничего близкого не нашёл.

Как убрать из TransAlias знаки препинания

Если у вас псевдонимы генерируются автоматически с помощью плагина TransAlias, то такие знаки препинания, как "!", ":", "," и т.д. автоматически появятся и в вашем псевдониме, если они присутствуют в заголовке. Но если запятая или восклицательный знак не влияют на работоспособность псевдонима, тем не менее, их присутствие вряд ли его украсит. К счастью, это легко исправляется.

Для этого, нам понадобится отредактировать файл assets\plugins\transalias\transliterations\russian.php — в этом файле находится таблица с символами для автоматической замены. Добавляем в нее через запятую знаки препинания:

,','=>'','?'=>'','!'=>'','"'=>'','@'=>'','%'=>'','$'=>'',
'#'=>'',';'=>'',':'=>'','&'=>'','='=>'','('=>'',')'=>'','+'=>'','/'=>'','}'=>'','{'=>'',']'=>'',
'['=>'','*'=>'','`'=>'','~'=>'','№'=>''


Теперь, если в заголовке встретятся эти знаки, они не будут отображаться в псевдониме.

Revo и Evo - единая авторизация и сессии

Стоит в перспективе такая задачка:

Нужно к готовому сайту на Revo подключить интернет-магазин. После проведения небольшого анализа выбор пал на ShopKeeper. Для Revo имеется только beta версия, и она не совсем устраивает, а вот для Evo — в самый раз.
И в связи с этим возникает вопрос: Возможно ли сделать единую авторизацию для этих двух сайтов на Revo и Evo на одном хостинге таким образом, чтобы профиль пользователей для двух сайтов был одинаковым и сохранялись сессии через cookies?

Теоретически, как я предполагаю, должна быть одна база данных для двух сайтов с общей таблицей юзеров и сессий. Но вот на практике…

Встречался ли кто-нибудь с подобной задачкой, и реализуемо ли это в принципе? Если не трудно, подскажите, с чего следует начинать копать? Есть ли смысл заморачиваться? Просто уж очень не хотелось бы переводить уже полностью готовый и рабочий сайт с Revo на Evo...:(((

[РЕШЕНО] Ditto фильтрация без учета регистра букв

В Ditto 2.1 для &filter есть
*Mode* *Meaning*
7 — Text not in field value
8 — Text in field value
9 — case insenstive version of #7
10 — case insenstive version of #8
11 — checks leading character of the field
режим 9 все равно учитывает регистр букв.
Как можно сделать фильтрацию без учета регистра?

Решение
Для починки (если кодировка UTF-8) надо откорректировать код filter.class.inc.php:
case 9 : // case insenstive version of #7 - exclude records that do not contain the text of the criterion
mb_internal_encoding("UTF-8");
if (strpos(mb_strtolower($value[$this->array_key]), mb_strtolower($this->filterValue))===FALSE)
$unset = 0;
break;


Добавить
mb_internal_encoding("UTF-8");
и заменить
strtolower
на
mb_strtolower
  • 2 февраля 2012, 12:54
  • w3d
  • 5

Пропала вкладка access на всех материалах.

Когда и после чего пропала, я не знаю, заметил только сейчас, когда она стала нужна.

Дабы исключить ММ, и удалял все правила, и переименовывал mm_demo_rules, ну и для верности отключал плагин. Вкладки все равно нет, ни на старых, ни на вновь созданных ресурсах, независимо от шаблона.

modx evo 1.0.5.

[РЕШЕНО][EVO] Ресурс или чанк не найдены для шаблона с id= ''

На почту приходят письма с текстом «Ресурс или чанк не найдены для шаблона с id= '' „
Как можно вычислить, где ошибка?
В просмотре событий ничего нет.
UPD
Нашел один вызов eForm для создания документа без &noemail=`1`.
Добавил — все в порядке, сообщений больше нет.
  • 30 января 2012, 21:46
  • w3d
  • 8

[Evo] Снипет отображения последних просмотренных товаров

Уважаемые,

взял тут

Стандартно можно вывести лишь url и имя.
Как вывести фотографию которая хранится в TV параметре?

Заранее, спасибо!

<?php
$mode = isset($mode) ? $mode : 'show';
$outerTpl = isset($outerTpl) ? $outerTpl : '@CODE: <h1>Вы уже смотрели:</h1><ul class="[+outer-class+]">[+rows+]</ul>';
$outerClass = isset($outerClass) ? $outerClass : 'last-view';
$rowTpl = isset($rowTpl) ? $rowTpl : '@CODE: <li><a href="[+url+]">[+name+]</a></li>';
$maxRows = isset($maxRows) ? $maxRows : 10;

if(!function_exists('fetchTpl')) {
    function fetchTpl($tpl){
        global $modx;
        $template = "";    
        if(substr($tpl, 0, 6) == "@FILE:") {
            $tpl_file = MODX_BASE_PATH . substr($tpl, 6);
            $template = file_get_contents($tpl_file);
        } else if (substr($tpl, 0, 6) == "@CODE:") {
            $template = substr($tpl, 6);
        } else if($modx->getChunk($tpl) != "") {
            $template = $modx->getChunk($tpl);
        } else {
            $template = false;
        }
        return $template;
    }
}

if(!function_exists('parseTplChunk')) {
    function parseTplChunk($tpl,$placeholder=array()){
        $chunk = fetchTpl($tpl);
        foreach ($placeholder as $key => $value){
           $chunk = str_replace("[+".$key."+]", $value, $chunk);
        }
        return $chunk;
    }
}

$item = array();

if (isset($_COOKIE['last_view']) and $_COOKIE['last_view'] != '') {
    $item = explode(',', $_COOKIE['last_view']);   
}


switch ($mode) {
    case 'register':
        if (!in_array($modx->documentIdentifier, $item)) {
            if (count($item) >= $maxRows) {
                array_shift($item);
                array_unshift($item, $modx->documentIdentifier);
            } else {
                array_unshift($item, $modx->documentIdentifier);
            }
            setcookie('last_view', implode(',', $item), time()+60*60*24*30, '/');
        }
    break;
    
    case 'show':
        
        if (!empty($item)) {
            $docs = $modx->getDocuments($item);
            $output = '';
            foreach ($docs as $doc) {
                $rows .= parseTplChunk($rowTpl, array('url'=>$modx->makeUrl($doc['id']), 'name'=>$doc['pagetitle']));
            }
            
           return parseTplChunk($outerTpl, array('rows'=>$rows, 'outer-class'=>$outerClass));
        }
    break;
}
?>

ps пытался так:
$rows .= parseTplChunk($rowTpl, array('url'=>$modx->makeUrl($doc['id']), 'name'=>$doc['pagetitle'], 'image'=>$modx->getTemplateVar('img_product_home')));

но не работает, выводит вместо значения TV параметра текст:
Array

[Evo] Поместить все значения в TV параметр из другого TV

Уважаемые,

на сайте продукция для которой есть TV параметр материал. На сайте есть поиск по TV параметру, где должны быть все возможные значения TV материал.

Как можно это сделать? =]