Курс 2016 года “Разработка на UMI.CMS от 0 до готового сайта”

Просмотр сообщений

В этом разделе можно просмотреть все сообщения, сделанные этим пользователем.


Сообщения - KTI

Страницы: 1 2 [3] 4 5
31
1 я имею ввиду регистр букв чтобы был одинаковый (вдруг это влияет)
т.е. в админке у вас поле NOMER, а в выборке (usel) nomer
2 шаблон явно не такой, но это пока не важно
3 Какой тип поля nomer у вас? число, строка?
4 попробуйте добавить в usel строчку
  <category depth="5">0</category>
после  <type id="72" />, т.е. типа
<target result="pages">
    <type id="72" />
    <category depth="5">0</category>
</target>

32
1. попробуй назвать поля одинаково, т.е. например в нижнем регистре
2. в строке браузера можно сразу посмотреть результат выборки
localhost/usel/new (и ответ можно сюда)
3. нужен шаблон для вывода результатов выборки
4. Поле NOMER должно быть индексируемым

33
Чего-то в umi не договаривают..
Как поможет extended pack, если их импорт не обрабатывает характеристики
Да и сами пишут в вики (последняя строчка):
На данный момент в UMI.CMS, версии 2.8.1.2, не учитываются "Характеристики" номенклатуры, но в ближайшем будущем они будут использованы для создания опционных свойств у товара.

http://wiki.umisoft.ru/%D0%92%D0%BE%D0%B7%D0%BC%D0%BE%D0%B6%D0%BD%D0%BE%D1%81%D1%82%D0%B8_extended-pack

34
берите код в теги code, т.е. {code} какой-то код {/code}
только не круглые скобки, а квадратные, смотрится в разы читабельнее
На счет запросов, во первых запрос можно посмотреть. Добавьте в код:
$sql_query_string=$sel ->query();
return $sql_query_string;
и увидите свой запрос, только не рекомендуется пользоваться прямыми запросами, могут возникнуть проблемы при обновлении, структуру таблиц могут изменить в любой момент.
А времени вы много не сэкономите, запрос выполняется гораздо дольше, чем его формирование

35
Накалякал сам, вот что получилось:
1. в страничку (у меня object-view) вставляем кнопку (оформляем ее стилями)

<div id="error">
  <a href="javascript:error_on_page()" class="red_button">
<span class="caption">Сообщить об ошибке в описании</span>
  </a>
</div>
2. сам js код:
function error_on_page(){
var text = $.trim(get_selection()).substring(0,500);
if (text == '') {alert('Выделите некорректный текст мышкой');return;}
if(confirm('Хотите сообщить об ошибке: '+(text!=''?('\n\nНекорректный текст:\n\n"'+text+'"\n'):''))) {
$.ajax({
type: 'POST',
url: '/mail.php',
data: {message:text, page : location.href},
success: function(data){
if( data == 'success') {
alert("Спасибо!");
// как-то сообщаем, что все ок
} else {
alert("Спасибо!");
// не все ок, но все равно спасибо
}
},
error:function(){
alert("Спасибо!");
// тоже не все ок
}
});
}
};

function get_selection() {
if (window.getSelection) {
return window.getSelection();
} else if (document.selection) {
return document.selection.createRange().text;
}
return '';
}
3. файл mail.php (кинул в корень сайта, не опасно?)
<?php
if(isset($_SERVER['HTTP_X_REQUESTED_WITH']) && !empty($_SERVER['HTTP_X_REQUESTED_WITH']) && strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest') {
$message =  substr(htmlspecialchars(trim($_POST['message'])), 0, 500);
$page =  substr(htmlspecialchars(trim($_POST['page'])), 0, 500);
$headers = "Content-type: text/plain; charset=UTF-8\r\n";
$to1 = 'email_before'; // email до собаки
$to2 = 'email_after'; // email после собаки
$from = 'SITE';
if (!empty($message)) {
$sendMessage = 
'страница: '.$page.'
текст: '.$message.'

IP : '.$_SERVER[REMOTE_ADDR];

mail($to1.'@'.$to2, $message, $sendMessage, $headers);
echo('success');
} else {
echo('empty');
}
exit;
}
//не ajax запрос
echo 'not_ajax';
?>

Вроде работает, меня в принципе устраивает (функционал)
Жду критики, по поводу безопасности. Какие подводные камни могут быть

36
Если admin не возражает, завел тему не имеющую прямого отношения к umi, но думаю многим пригодится.
У кого будут какие мысли? Хочу без привлечения сторонних плагинов, какой-то самодельный. К плагинам нужно ставить консоли и т.д.
Хочется небольшой, чтобы только отправлял на почту адрес странички, где ошибка, ну можно еще выделенный текст.
сразу возникло несколько вопросов:
Как из Js передать выделенный текст и адрес страницы
Куда передавать: в шаблоны (зачем?) или в php, который сразу отправит письмо. Как обезопасить все это дело от спама

37
Конечно круг около-юмовских вопросов очень большой, но имеют-ли они прямое отношение к xslt, ведь курс именно для него. Зачем мы будем описывать как работать удаленно с кодом на сервере. Либо сделать отдельный "курс молодого бойца с umi" и там "освещать" все эти вопросы.
Кстати, демо сайт на локал паке   и на отдельном сервере ( именно демо ) ведет себя по разному
Давайте конкретнее, что именно по другому работает. Какой шаблон или функция xslt ведет себя по разному. Просто это будет всем полезно знать

38
Да, кавычки не нужны.
Поле cena должно быть фильтруемым и видимым, и оно должно появится в форме фильтра. Появляется?
Вбиваешь туда цифры и жмешь "Применить", в строке браузера должны добавится твои поля, типа
?fields_filter[price][1]=&fields_filter[price][0]=&fields_filter[cena][1]=1000&fields_filter[cena][0]=5000
теперь их надо отловить в category-view, и подсунуть в usel вместо
<xsl:apply-templates select="document('udata://catalog/search')" />
Как-то так, мне кажется

39
во первых вынеси @data-type = 'price' в отдельный шаблон. т.е. скопируй этот и удали все кроме @data-type = 'price', т.е.
<xsl:template match="field[@data-type = 'price']" mode="search">
у тебя будет отдельный шаблон для обработки поля цена
в нем input поставь например так
<input type="text" name="fields_filter['cena'][1]" value="{value_to}" class="textinputs" />
а подхват параметров с адресной строки я тоже ничего не знаю
где их подхватывать и как..
будем надеяться ув. admin нам подскажет

40
Шаблоны XSLT / Re:Поле "Цена" в фильтре
« : 28 Апреля 2012, 06:02:17 »
нет, в админке никакой код не вставляется вообще, это надо вставлять в classes/modules/catalog/__custom.php)

41
Шаблоны XSLT / Re:Поле "Цена" в фильтре
« : 27 Апреля 2012, 17:15:48 »
Код для функции min_and_max (вставлять в catalog/__custom.php)
    public function min_and_max($category_id)
    {
        $category_id = (int)$category_id;
        // 218 – filed_id поля price
        $sql = "SELECT MAX( oc_218.float_val ), MIN( oc_218.float_val )
FROM cms3_hierarchy h, cms3_object_content oc_218
WHERE h.obj_id = oc_218.obj_id
AND h.rel = {$category_id}
AND h.is_deleted = '0'
AND h.is_active = '1'
AND oc_218.field_id =218";
        $result = l_mysql_query($sql);
        list($max_price, $min_price) = mysql_fetch_row($result);
        $block_arr = Array();
        $block_arr['min'] = $min_price;
        $block_arr['max'] = $max_price;
        return $block_arr;     
       
    }

42
Шаблоны XSLT / Re:Поле "Цена" в фильтре
« : 27 Апреля 2012, 17:11:14 »
можно так
	<xsl:template match="field[@data-type = 'price']" mode="search">
<xsl:variable name="min_max_price" select="document(concat('udata://catalog/min_and_max/',../../@category_id))/udata"></xsl:variable>
<xsl:variable name="min_price" select="$min_max_price/min"/>
<xsl:variable name="max_price" select="$min_max_price/max" />
<div class="grade">
<label class="right">
<span>
<xsl:text>&range-to; </xsl:text>
<xsl:value-of select="$max_price"/>
<xsl:text> руб.</xsl:text>
</span>
<input id="amount_to" type="text" name="fields_filter[{@name}][1]" value="{$max_price}" class="textinputs" />
</label>
<label>
<span>
<xsl:value-of select="@title" />
<xsl:text> &range-from; </xsl:text>
<xsl:value-of select="$min_price"/>
<xsl:text> руб.</xsl:text>
</span>
<input id="amount_from" type="text" name="fields_filter[{@name}][0]" value="{$min_price}" class="textinputs" />
</label>
</div>
</xsl:template>
у вас сразу появится минимальная и максимальная цена в этой категории

43
Установка на хостинг, мое мнение, выходит за рамки этого курса. Локалпака достаточно. Я не думаю что xslt себя по разному ведет, на сервере и локально. Локально быстрее работает и всегда доступен, даже без инета. Только надо будет не забыть в курсе упомянуть про включение в config.ini всех протоколов.
План мне понравился. Может пару моментов: в урок с протоколами вставить краткую информацию о usel, ufs (или ссылки на описание в umi).
Еще (опять-же имхо) можно упомянуть о некоторых функциях, типа positon(), last().

44
вызов (если со страница товара)
<xsl:apply-templates select="document(concat('udata://custom/getCloseGoods/',$document-page-id))" mode="related_item" />

сам шаблон:

	<!-- шаблон 3 похожих по цене товара в категории -->
<xsl:template match="udata" mode="related_item">
<hr />
<h4>
<xsl:text>&recommended-items;:</xsl:text>
</h4>
<div class="closest_goods">
<div class="objects" umi:element-id="{page[@parentId &gt; 0]/@parentId}" umi:module="custom" umi:method="getCloseGoods" umi:region="list" umi:add-method="none">
<xsl:apply-templates select="page" mode="short-view">
<xsl:with-param name="cart_items" select="document('udata://emarket/cart/')/udata/items" />
</xsl:apply-templates>
</div>
</div>
<div class="clear" />
</xsl:template>


45
Макросы UMI.CMS / Re:Двойная сортировка
« : 27 Апреля 2012, 09:42:41 »
что им помешало добавить одну строчку

$selectionObj->where('name')->notequals($value);
хотя, судя по коду, вероятно именно по этому name выделили отдельно
так-бы он не отличался от остальных, и код был-бы без
if($fieldName != "name") {}

Страницы: 1 2 [3] 4 5