Разделы

  
 

[REVO] Вопрос про след. конструкцию

В TV получаю список имен чанков
@SELECT description, name FROM site_htmlsnippets WHERE category = 36
Пытаюсь понять какую конструкцию рациональнее использовать.
[[$[[*tv]]]]

или

Написать сниппет который будет получать значение тв параметра и потом
$modx->getChunk($tv)

Либо тоже сниппет и туда передавать значение ТВ параметра, т.е.
[[snippet?input=`[[*tv]]`]]

Но мне кажется что это всё суть одно и тоже

EVO Как вывести элемент из произвольного документа только если существует?

Подскажите плиз. Как реализовать выбор, например, заголовок из другого ресурса, например, №3. Который определяется в TV текущего документа.

Пытаюсь реализовать конструкцию типа:
[+phx:if=`[[GetField? &docid=`[*mainProjectID*]` &field=`longtitle`]]`:ne=``:then=`1`:else=`2`+]


Это получется, но если нужна картинка, с постобработкой то выходит очень жирная картина.

Если не сложно… Напишите плиз, как может выглядеть сниппет.

[EVO] Мелкие сниппеты на замену phx

Заменил вот такую конструкцию
<div class="addit-data">
[*addit:is=``:then=``:else=`
<fieldset>
<legend>Дополнительные опции</legend>
[*addit:shk_widget=`checkbox:addit:desc_page:br:price`*]
</fieldset>
`*]
</div>

На такую (добавил комментарии)
<?php
// Проверяем входные данные, если TV параметр не указан, ничего не делаем
if(empty($tv)) {return '';}
// Получаем TV
$tvValue = $modx->getTemplateVar($tv);
// Если значение TV параметра пустое, ничего не делаем
if(empty($tvValue['value'])) {return '';}
// Каждый параметр располагаем с новой строки
$br = isset($br) ? '<br />' : '';
// Идентификатор документа
$docid = '[*id*]';
// Будет ли выбран первый элемент
$first_selected = isset($first_selected) ? true : false;
// Функция на событие onclick
$function = 'jQuery.additOpt(this)';
// Определяем переменную в которой будет располагаться результат работы сниппета, т.е. доп. параметры
$shk_output = '';
// Контейнер для дополнительных параметров (обертка)
$otag = '<div class="addit-data"><fieldset><legend>Дополнительные опции</legend>';
$ctag = '</fieldset></div>';

// Задаем значение TV параметра
$value = !empty($tvValue) ? explode("||",$tvValue['value']) : array();

// Выставляем счетчик на 0
$cnt = 0;
// Добавили к переменной открывающий тег обертки
$shk_output .= $otag;

// Разбираем массив параметров
foreach($value as $val){
    list($item,$itemvalue) = explode("==",$val);
    
    // Если цена доп. параметра меньше 0
    if ($itemvalue<0) {$price = ' <span style="font:700 11px tahoma;color:red">('.$itemvalue.' грн.)</span>';}
    // Если цена доп. параметра равна 0
    elseif ($itemvalue==0) {$price = '';}
    // Если цена доп. параметра больше 0
    else {$price = ' <span style="font:700 11px tahoma;color:red">(+'.$itemvalue.' грн.)</span>';}
    // Выставляем отмеченные параметры
    $selected = $cnt==0 && $first_selected ? ' checked="checked"' : '';
    // Формируем доп. параметр
    $shk_output .= "\n".'<label><input class="addparam" type="checkbox" name="'.$tv.'__'.$docid.'__'.$cnt.'" value="'.$cnt.'__'.$itemvalue.'" id="'.$tvname.$docid.$cnt.'"'.$selected.' onclick="'.$function.'" /> '.$item.$price.'</label>'.$br;
    // Увеличиваем счетчик на 1
    $cnt++;

}
// Добавляем к переменной закрывающий тег обертки
$shk_output .= $ctag;
// Возвращаем готовый результат
return $shk_output;
?>

Вызов
[[addit_params?&tv=`addit`&br=``]]

Сделал побыстрому (взял кусок кода из shk_widget модифиатора для phx) ничего особо не продумывал, доделаю позже. в &tv ставим имя TV параметра и получаем на выходе чекбоксы с названиями и ценой, т.е. для дополнительных параметров товара. Кто юзал Шопкипер знает. Тут еще не все функции работают из shk_widget, т.е. не полноценная замена. Но допилить не тяжело.

Кстати пробовал методы getTemplateVarOutput и getTemplateVar, так вот последний на 1 запрос делает меньше, т.е. если нам нужен не обработанный вывод значения TV, то наверное лучше пользоваться последним
Вот собственно описание этих двух методов
http://wiki.modxcms.com/index.php/API:getTemplateVarOutput
http://wiki.modxcms.com/index.php/API:getTemplateVar

[EVO] Проблемы с оптимизацией нагрузки

есть один вопрос… никак не могу прийти к верному решению…

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

[REVO] Ресайз картинок на лету

Подскажите пожалуйста, как сделать изменение размеров картинок попадающихся на страницах сайта.
Иначе говоря все картинки встречающиеся на страницах сайта у которых есть атрибут widht или/и height нужно отдавать пользователю сжатыми.
Это нужно для того чтобы менеджер мог закинуть в TinyMCE картинку 1000x1000, указать ей width=200 и не задумываться над сжатием картинки.

Видел что в Evo для этого использовался DirectResize, но какие у него были настройки я не знаю.

[EVO] Конфликт сниппетов

Столкнулся с интересной задачей — есть страница с целой кучей сниппетов больших и маленьких, но тут в очередной раз добавил сниппет который работал на тестовой странице (минимальный контент и нет других сниппетов) и получил 500 от сервера, логи апатча почитать к сожалению не могу, MODx не дает ошибку парсера и тем самым не пишет ее в логи…
есть подозрение что в некоторых сниппетах могут использоваться повторяющиеся названия функций которые могли быть со временем модернизированы…
Где может быть зарыта собака и с как ее искать?
Как сделать так чтобы этот сниппет можно было вызывать на 1 странице 2 раза (сейчас выдает 500).

[EVO] Данные из вызова сниппета

Есть сниппет который писался с заделом на получение сразу нескольких тв в 1 переменную и вывода результата. Собственно вызов:
[!main_search_seo? &_params=`[*seo_rooms*]|[*seo_min_cost*]|[*seo_max_cost*]|[*seo_district*]|[*seo_metro*]|[*seo_date*]|[*seo_otdelka*]|[*seo_ipoteka*]|[*seo_subs*]|[*seo_disc*]`!]

если вначале все было ок и он был строкой, то после недели простоя на сервере (возможно кто-то что-то менял) переменная $params стала массивом…
откуда могут расти ноги и где можно что покапать?
вызов сниппета не менял… сниппет не менялся тоже

Дружественные ссылки. Получение атрибутов ссылки в сниппете.

Приветствую. :) Возможно кто-то знает как решить проблему. Буду премного благодарен.

Вопрос собственно в том, реально ли с помощью $_GET['atr_name'] получить атрибут ссылки типа: full_path?atr_name=atr_data, при том, что используются дружественные URL и псевдонимы?

Все мои попытки заканчиваются тем, что атрибуты при переходе по подобной ссылке сбрасываются, и в адресной строке остается только обычный путь, соответственно $_GET['atr_name'] пустой.

вопрос по ditto

1) возможно ли стандартными методами заставить ditto выводить параметр tplAlt не только для чётых документов, а к примеру, для документов кратных «3»???

если нет

2) возможно ли в ditto для параметра tpl вместо чанка/шаблона указать свой сниппет, который будет проверять кратность документа и в зависимости от результата возвращать необходимый чанк/шаблон, если да подскажите пожалуйста синтаксис???

галерея: достать из папки (путь всегда разный) фотографии с превьюшками и вывести в галерею к документу в Evo

Здравствуйте!
Создаю документы с помощью eform и мультизагрузки изображений к загружаемому документу

итого что мы имеем:
после прикрепления фотографий к форме и нажатию кнопки отправить в корне сайта в каталоге uploads/ создается папка с всегда разным именем, имя папки формируется изходя из tv-параметра ses и имеет вид: uploads/[*ses*]/
в этой папке есть сами картинки и их превьюшки, имена превьюшек выглядят так: min_имякартинки

есть сниппет который достает url превьюшек:
<?php
$res = $modx->db->select('*', 'modx_img', 'parent_id = '.$ses.'','pr');
if( $modx->db->getRecordCount( $res ) < 1 ) {
 echo 'uploads/empty/empty.jpg';
   }
while($tmp = $modx->db->getRow($res, 'assoc')) {
 echo 'uploads/'.$tmp['parent_id'].'/min_'.$tmp['pic'].'';
}
?>


сам сниппет вызывается так:
[[getpics? &ses=`[*ses*]`]]


поможет ли вышеуказанный сниппет для построения галереи для документа? если да то как его использовать и какую галерею брать?

если этот сниппет не нужен, то может быть есть какой то другой способ и какая-то готовая галерея, которой можно было бы всегда в параметрах менять путь к картинкам исходя из tv-параметра ses. и чтоб эта галерея брала превьюшки с префиксом min_ и делала их ссылками на большие экземпляры картинок?
  • 0
  • 4 декабря 2011, 20:01
  • chunya
  • 13