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

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

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


Сообщения - Axiomateria

Страницы: 1 2 [3] 4 5 ... 22
31
Параметр ignore_paging - http://dev.docs.umi-cms.ru/spravochnik_makrosov_umicms/fotogalerei/photoalbum_album/#sel=16:1,16:1
Спасибо! Знаем такую вещь, но у меня не фотоальбом, а раздел каталога с превью объектов, которые выводятся так:
<xsl:apply-templates select="document(concat('udata://catalog/getObjectsList/', '//', $count, '//10//0/'))/udata" />

и по идее руководства http://dev.docs.umi-cms.ru/spravochnik_makrosov_umicms/katalog/catalog_getobjectslist/#content
ignore_paging = 0 по умолчанию, то есть вот так:
<xsl:apply-templates select="document(concat('udata://catalog/getObjectsList/', '//', $count, '//10/0/0/'))/udata" />
и если я устанавливаю "игнорировать пейджинг" ignore_paging = 1
<xsl:apply-templates select="document(concat('udata://catalog/getObjectsList/', '//', $count, '//10/1/0/'))/udata" />
то в этом случае у меня вообще превью объектов в разделе не выводиться... и банер по прежнему на вторых страницах не показывается...

32
Здравствуйте!

У меня в разделе каталога через тип-строки "Ссылка на дерево" подключается баннер и на первой странице раздела он виден,
но если листать далее на вторую ?p=1, третью ?p=2 и так далее с приставкой в строке адреса раздела ?p=1  банер пропадает...
Вот почему так получается и как с этим бороться ?

Подключение  баннера в шаблоне:
<xsl:apply-templates select="document(concat('udata://photoalbum/album/', //property[@name = 'slider']/value/page/@id))/udata" mode="slider"/>



33
я правильно понимаю, что получилось вывести информация для редактирования личной информации пользователя, но остался вопрос с выводом списка ранее введенных адресов и возможность добавить новый адрес?
Да, Вы правильно понимаете и речь идёт о странице пользователя в его личном кабинете.

34
Здравствуйте!
Надо отредактировать личный кабинет по примерному адресу www.site.ru/emarket/personal/ зарегистрированного покупателя так, что бы добавить к полям с его персональной информацией (логин/пароль/e-mail и т.п.) ещё и его данные адреса доставки в таком же простом виде, как они и выглядят при оформлении заказа на странице заполнения данный полей с адресом доставки (город/улица\дом и т.п.)
И вот что я делаю - исходя из руководства: http://dev.docs.umi-cms.ru/spravochnik_makrosov_umicms/internetmagazin/emarket_purchase/#xslt-templating
в файле шаблонизатора demodizzy ...\xslt\modules\users\registration.xsl в код  добавляю строку
<xsl:apply-templates select="document(concat('udata://data/getCreateForm/', $user-id))" /> :
 <xsl:template match="udata[@method = 'settings']">
        <table>
            <tr>
                <td valign="top" width="20%">
                    <xsl:apply-templates select="document(concat('udata://data/getEditForm/', $user-id))" mode="portrait" />
                </td>
                <td valign="top">                 
                    <form enctype="multipart/form-data" method="post" action="{$lang-prefix}/users/settings_do/" id="con_tab_profile" class="form-inline">
                        <div class="form-group-cabinet col-md-3 col-sm-6 col-xs-12">
                            <label>
                                <span>
                                    <xsl:text>&login;:</xsl:text>
                                </span>
                                <input type="text" name="login" disabled="disabled" value="{$user-info//property[@name = 'login']/value}" class="form-control" />
                            </label>
                        </div>
                        <div class="form-group-cabinet col-md-3 col-sm-6 col-xs-12">
                            <label>
                                <span>
                                    <xsl:text>&password;:</xsl:text>
                                </span>
                                <input type="password" name="password" class="form-control" />
                            </label>
                        </div>
                        <div class="form-group-cabinet col-md-3 col-sm-6 col-xs-12">
                            <label>
                                <span>
                                    <xsl:text>&password-confirm;:</xsl:text>
                                </span>
                                <input type="password" name="password_confirm" class="form-control" />
                            </label>
                        </div>
                        <div class="form-group-cabinet col-md-3 col-sm-6 col-xs-12">
                            <label>
                                <span>
                                    <xsl:text>&e-mail;:</xsl:text>
                                </span>
                                <input type="text" name="email" class="form-control" value="{$user-info//property[@name = 'e-mail']/value}" />
                            </label>
                        </div>
                        <div class="float1"/>
                        <xsl:apply-templates select="document(concat('udata://data/getEditForm/', $user-id))" />
                       
                        <xsl:apply-templates select="document(concat('udata://data/getCreateForm/', $user-id))" />

                        <div class="form-group col-md-12 col-sm-12 col-xs-12">
                            <input type="submit" class="btn btn-primary" value="&save-changes;" />
                        </div>
                    </form>             
                </td>
            </tr>
        </table>
    </xsl:template>

В результате добавилось одно только поле и то не то, что надо:

<label title="">
    <span>id статуса:</span>
    <input type="text" name="data[new][publish_status_id]" value="" class="form-control">
</label>

Подскажите, пожалуйста, что я пропустил ?

35
В общем по разному попробовал, но всё же уже более уверенно думаю, что неувязка здесь:
                    <xsl:if test="value !=''">
                        <xsl:attribute name="value">
                            {value_from}
                        </xsl:attribute>
                    </xsl:if>
То есть  {value_from} не подставляется ни в каком случае - хоть двигай, хоть не двигай бегунок.

Вот так ещё попробовал:

                    <input type="text" name="fields_filter[{@name}][0]" value="{value_from}" readonly="readonly" class="range_field inpMin_2" />
                       <!--  <xsl:if test="value =''">
                            <xsl:attribute name="value">
                                110
                            </xsl:attribute>
                        </xsl:if>
                        <xsl:if test="value !=''">
                            <xsl:attribute name="value">
                                {value_from}
                            </xsl:attribute>
                        </xsl:if>
                    </input>

НО не получается ни как...

36
Цитировать
Вот они самые: по умолчанию ОТ = "110" и ДО "190"
$(function () {
   slider_f('#slider', '.inpMin_1', '.inpMax_1', 110, 190, 118, 182, 1);
   slider_f('#slider_2','.inpMin_2', '.inpMax_2', 0, 70000, 10000, 60200, 50);
});
Вот, нет ли среди этого js инструкции, которая говорит, при инициализации выстави значение в полях и ролики ОТ = "110" и ДО "190" соответственно

JS - вообще не мой конёк  ??? , файл полностью выглядит  вот так:

$(function () {
slider_f('#slider', '.inpMin_1', '.inpMax_1', 110, 190, 118, 182, 1);
slider_f('#slider_2','.inpMin_2', '.inpMax_2', 0, 70000, 10000, 60200, 50);
});
function slider_f(slider,inputMin,inputMax, valMin, valMax, valBegin, valEnd, steps) {
var $slider = $(slider),
$inputMin = $(inputMin),
$inputMax = $(inputMax);

$slider.slider({
min: valMin,
max: valMax,
values: [valBegin, valEnd],
range: true,
step: steps,
stop: function (event, ui) {
$inputMin.val($slider.slider("values", 0));
$inputMax.val($slider.slider("values", 1));

},
slide: function (event, ui) {
$inputMin.val($slider.slider("values", 0));
$inputMax.val($slider.slider("values", 1));
}
});

// фильтрация ввода в поля
$('input.range_field').keypress(function (event) {
var key, keyChar;
if (!event) var event = window.event;

if (event.keyCode) key = event.keyCode;
else if (event.which) key = event.which;

if (key == null || key == 0 || key == 8 || key == 13 || key == 9 || key == 46 || key == 37 || key == 39) return true;
keyChar = String.fromCharCode(key);

if (!/\d/.test(keyChar))    return false;

});
}

37
либо  при генерации страницы ваш чыд код не подставляет value_from (тогда проверяйте условие)
Уверен, что именно здесь неувязочка
                    <xsl:if test="value !=''">
                        <xsl:attribute name="value">
                            {value_from}
                        </xsl:attribute>
                    </xsl:if>

value !=''" - всё-таки может быть вот с этим что-то не так ?..
.
либо в js есть еще директивы которые выставляют значение всегда на начало (в js ползунки , иногда надо передавать значения для сдвигания ползунка)

Вот они самые: по умолчанию ОТ = "110" и ДО "190"
$(function () {
   slider_f('#slider', '.inpMin_1', '.inpMax_1', 110, 190, 118, 182, 1);
   slider_f('#slider_2','.inpMin_2', '.inpMax_2', 0, 70000, 10000, 60200, 50);
});

38
Скорее всего, проблема в том, что xsl attribute действует на открытый выше тег, а у вас input закрыт. Надо так:
<input type="text" name="fields_filter[{@name}][0]" value="110" readonly="readonly" class="range_field mod_1 inpMin_1" >
                    <xsl:if test="value !=''">
                        <xsl:attribute name="value">
                            {value_from}
                        </xsl:attribute>
                    </xsl:if>
</input>
Спасибо! Сработало.
Однако вот какой нюанс: при выводе результатов поиска по отфильтрованному значению роста посредством бегунка значение атрибута value так и остаётся видимым как изначальное "110".
То есть пользователь выбрал значение "ОТ" = 150 и в результате вывода ему товары вывелись от 150 и далее, но при этом пользователю показывается на бегунке прежнее значение "ОТ" = "110". Это я к тому, что пользователь может не понять, что ему результаты вывелись, которые он и отфильтровывал.
Как сделать так что бы при выводе результатов фильтрации по товарам показывалось уже то значение атрибута value, которое выбрал пользователь ?

Djn

39
тогда вам надо в input, который отображает значение, вставлять либо value="{value_from}" либо минимальное значение (оно у вас в какой-то переменной наверняка хранится), если {value_from} пустой. То есть поставьте в xsl проверку через if и xsl:attribute

P.S. тоже самое с полем максимальное значение
для "ОТ" я пробую такую вещь применить,
                    <input type="text" name="fields_filter[{@name}][0]" value="110" readonly="readonly" class="range_field mod_1 inpMin_1" />
                    <xsl:if test="value !=''">
                        <xsl:attribute name="value">
                            {value_from}
                        </xsl:attribute>
                    </xsl:if>

где value="110" видимое минимальное значение как бы по умолчанию, но оно не заменяется на другое значение при движении бегунка...
Видно, что я что-то не доделал в конструкции                    
 <xsl:if test="value !=''">
                        <xsl:attribute name="value">
                            {value_from}
                        </xsl:attribute>
                    </xsl:if>

40
я правильно понимаю, что у вас есть бегунок, созданный силами js, который отображает и сами бегунки ("от" и "до") и поля для ввода значения. При перемещении бегунков значения в полях меняется. Но при загрузке страницы, пока мы еще не трогали бегунки, в полях нет никаких значений.
Я все правильно описал?
ДА.
Совершенно точно - я забыл отметить, что бегунок на JS.

41
В продолжении темы у меня такой вопрос:

Всё тот же шаблон с теми же полями и в моём случае фильтруем рост "от" минимального и "до" максимального посредством бегунка.
ОТ
<input type="text" name="fields_filter[{@name}][0]" value="{value_from}" readonly="readonly" class="range_field mod_1 inpMin_1" />
ДО
<input id="amount_1" type="text"  name="fields_filter[{@name}][1]" value="{value_to}" readonly="readonly" class="range_field mod_1 inpMax_1" />

Значение в поле value="{value_from}" выводится только после того, как бегунком воспользоваться, то есть значение размера (допустим ОТ  (минимальный) "150" и ДО (максимальный) "180") подставляются в  value="{value_from}" и value="{value_to}" соответственно уже при движении бегунком.
Но до того их минимальных и максимальных значений не видно в фильтре.

Как быть ?

42
А можно отказаться от usel и сделать вывод товаров "распрадажа" силами getcategorylist...
Вот у меня тоже такая мысль давно уже про это в голове с вопросом - как вызвать в таком случае udata://catalog/getCategoryList/notemplate/(market)/10  
, если объекты каталога в разделе выводятся по активному полю из типа данных "Распродажа" с идентификаторм "sales" (то есть галочку поставили и товар выводится в специальном разделе "Распродажа") через usel, то вот ума не приложу, как этот идентификатор подставить в вызов udata://catalog/getCategoryList/notemplate/(market)/10  
В переменную вогнать его ?

P.S. Спасибо за варианты про usel, чуть погодя попробую свершить.

43
для usel необходимо подхватывать эти параметры из адресной строки и передавать как параметры при вызове
а возможно ли с этого места поподробнее ? как мне кажется это подхватывание и передача в вызов...
в общем не понятно на каком хотя бы уровне кода это делать - PHP или USEL или XSLT...

44
Сортировка не работает на страницах, где товары выводятся через usel.
Тот же самый сайт, те же самые товары, но разница их вывода на страницу не через
udata://catalog/getObjectsList/
а через
usel://sales/

В адресной строке всё так же добавляется /?&umi_authorization=&order_filter%5Bprice%5D=1
но ни чего не происходит...

45
А вот так заработало:
<xsl:apply-templates select="document(concat('udata://catalog/getObjectsList/', '//', $count, '//10/'))/udata" mode="layout_0" />
Теперь вот как-то надо додумать такой момент, что кроме выбора показа количества страниц, есть ещё и выбор показа "Плитка" "Список", которые так же через переменные вызываются в таком порядке:
                <dl class="sort_item mod_1">
                    <dt>&objectsview;</dt>
                    <dd>    
                        <a rel="nofollow" title="плитка" href="?catalog_layout=0&amp;">  
                            <xsl:attribute name="class">type type_1</xsl:attribute>
                            <xsl:if test="$catalog_layout = 0">
                                <xsl:attribute name="class">type type_1 active</xsl:attribute>
                            </xsl:if>
                        </a>
                    </dd>  
                    <dd>  
                        <a rel="nofollow" title="список" href="?catalog_layout=2&amp;">
                            <xsl:attribute name="class">type type_2</xsl:attribute>
                            <xsl:if test="$catalog_layout = 2">
                                <xsl:attribute name="class">type type_2 active</xsl:attribute>
                            </xsl:if>
                        </a>
                    </dd>          
                </dl>
и всё бы ни чего, да вот только при выборе одного или другого в строке браузера они конечно взаимоотменяюся,
 то есть либо выбираем показывать по сорок страниц: /?count=40
либо показывать плиткой /?catalog_layout=0

А надо бы конечно, что бы они были в один ряд в строке браузера, как например:
 /?catalog_layout=0&count=40&

Есть такая задумка срастить эти переменные в адресной строке <form> , где переменная $catalog_layout показывать плиткой "по умолчанию" у меня уже прописана:
 <xsl:template match="udata[@method = 'search'][group]">
        <form class="catalog_filter" action="/result_search_snowboards/">
            <input type="hidden" id="catalog_layout" name="catalog_layout" value="{$catalog_layout}" />
           <input type="hidden" id="count" name="count" value="{$count}" />
            <div class="left">
                <xsl:apply-templates select=".//field[not(@data-type = 'boolean')]" mode="search" />
            </div>
            <div class="right">
                <xsl:apply-templates select=".//field[@data-type = 'boolean']" mode="search" />
            </div>
            <div class="clear"></div>
            <div class="select-btns">
                <input class="button" type="submit" value="&apply;"/>
                <input class="button" type="button" value="&reset;" onclick="javascript: window.location = '/';" />
            </div>
        </form>
    </xsl:template>

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