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

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

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


Сообщения - john

Страницы: 1 2 [3] 4 5 ... 14
31
Шаблоны TPL / Слайдер
« : 04 Февраля 2015, 23:58:26 »
Помогите найти ошибку.
Использовал этот урок.
http://wiki.umisoft.ru/%D0%A1%D0%BB%D0%B0%D0%B9%D0%B4%D0%B5%D1%80_%D0%BD%D0%B0_%D0%B2%D1%81%D0%B5%D1%85_%D1%81%D1%82%D1%80%D0%B0%D0%BD%D0%B8%D1%86%D0%B0%D1%85_%D1%81%D0%B0%D0%B9%D1%82%D0%B0%D1%85_%28bxslider%29_TPL
Из него, скопировал один макрос.

public function getSliderItems($parent_id, $template = "default"){
if (!$parent_id)
return 'Parent page id is not set';
list($template_items, $template_item) = def_module::loadTemplates("data/slider/" . $template, "items", "item");
 
$umiHierarchy = umiHierarchy::getInstance();
$childs_arr = $umiHierarchy->getChildIds($parent_id, false);
$item_arr = array();
$items_arr = array();
foreach ($childs_arr as $item_id){
$item = $umiHierarchy->getElement($item_id);
if ($item instanceof iUmiHierarchyElement){
$image = $item->getValue('slider_item_image');
$item_arr['@image'] = '/'.$image->getFilePath();
$item_arr['@name'] = $item->getName();
$item_arr['@link'] = $item->getValue('slider_item_link');
$items_arr[] = def_module::parseTemplate($template_item, $item_arr);
}
}
$items_arr = array('subnodes:items' => $items_arr);
 
return def_module::parseTemplate($template_items, $items_arr);
 
}

Вставляю его в шаблоне %custom getSliderItems(70)%
и при обновление страницы вижу тоже самое %custom getSliderItems(70)%
 Версия UMI 2.8.1, может не работать из-за версии или где искать ошибку.
На локальной машине все гуд.
Спасибо.


32
1) Вечер добрый, подскажите как реализовать вывод суммы заказов в личном кабинете пользователя /emarket/personal.xsl ?

2) И как вывести действующую скидку для пользователя?
В админке после оформления заказа, в модуле интернет магазин в заказе можно увидеть скидку, а как ее оттуда правильно вытащить?

Спасибо.

33
В XML-файле есть
<result module="catalog" method="category" domain="flauna.ru" system-build="22715" lang="ru" header="Животные" title="Животные" site-name="Flauna" request-uri="/animals.xml" pageId="4"><meta><keywords>Flauna </keywords><description/></meta><user id="2" status="auth" login="flaunaru" xlink:href="uobject://2" type="sv"/><parents/><page id="4" parentId="0" link="/animals/" is-active="1" object-id="348" type-id="85" type-guid="catalog-category">

Пишу условие
    <xsl:template match="udata[@module = 'menu' and @method = 'draw']|items" mode="mains_menu">
    <xsl:if test="page[@id = '4']">124</xsl:if>     
    </xsl:template>

Не работает, что нетак?

34
Может и можно проще
У меня получилось так
public function validate($value) {
$dlina=strlen($value);
for($i=14; $i<$dlina; $i++)
{
$bykva= substr("$value",$i,1);
if ($bykva=="_") {
return false;
}
else {
return true;
}
}
}

35
Как добавить формат значения , не решил(

Зато условие заработало
public function validate($value, $count = 15) {
if (strlen($value) == $count){
return true;}}

Хотя зачем его искал)) я добавил маску ввода телефона
8(___)___-__-__ и она состоит из 15 символов.
Вопрос, как сделать проверку наличия символа "_"?

36
Не заработал.

Как добавить новый формат значения?
В help просто описание - Формат значения — для некоторых типов полей позволяет выбрать способ проверки данных, вводимых в дальнейшем в это поле. В случае, если значение не проходит проверку по указанному способу, будет выдана ошибка и запрос на повторный ввод данных.

Я использовал формат значения e-mail, в php использовал правило
class mobilnyj_telefonRestriction extends baseRestriction {
protected $errorMessage = 'restriction-error-email';
public function validate($value) {
return (bool) ($value ? strlen("3", $value) : true);
}
};
Если ничего не вводить, то ничего не выводит, если ввести 1 символ или 3 как положено, пишет некорректно заполнено поле.

37
На изучал в инете)
В файл добавил \classes\system\subsystems\models\data\restrictions\email.php
Сомневаюсь в правильности, но надеюсь иду в верном направлении)
Необходимо проверить, что введено 10 символов в поле с идентификатором $mobilnyj_telefon
class mobilnyj_telefonRestriction extends baseRestriction {
protected $errorMessage = 'restriction-error-email';
public function validate($value) {
return (bool) ($value ? strlen("10", $value) : true);
}
};

38
Обновлений не будет) Точно не затрется)
т.е. мне не сюда надо добавлять условие?
if($restrictionId = $field->getRestrictionId()) {
$restriction = baseRestriction::get($restrictionId);
if($restriction instanceof baseRestriction) {
if($restriction instanceof iNormalizeInRestriction) {
$value = $restriction->normalizeIn($value);
}

if($restriction->validate($value) == false) {
$fieldTitle = $field->getTitle();

$errstr = ($admin) ? "%errors_wrong_field_value%" : getLabel('error-wrong-field-value');
$errstr .=  " \"{$fieldTitle}\" - " . $restriction->getErrorMessage();

$this->errorNewMessage($errstr, false, 101, "input-wrong-field");
++$wrongFieldsCount;
}
}
}
А сюда? \classes\system\subsystems\models\data\restrictions
<?php
  class emailRestriction extends baseRestriction {
    protected $errorMessage = 'restriction-error-email';

    public function validate($value, $objectId = false) {
      return (bool) ($value ? preg_match("/.+\@.+\..+/", $value) : true);
    }
  };
?>

Не врубаюсь как писать, подскажите пожалуйста.
Необходимо проверить, что введено 10 символов.

39
Кто-нибудь делал проверку заполнения поля с телефоном, то как?

Я открыл файл /classe/modules/data/__client_reflection.php
Нашел строку
 public function checkRequiredData(iUmiObjectType $objectType, $data, $objectId, $isNew) {... 

И пытаюсь туда добавить проверку, если введено не 10 символов, то выдает сообщение о ошибке.
$count = 10;
$objects = umiObjectsCollection::getInstance();
$object_address = $objects->getObject($adres_id);
$phone = $object_address->mobilnyj_telefon;
if(strlen($phone) != $count ) {
$errstr = ($admin) ? "%errors_wrong_field_value%" : getLabel('error-wrong-field-value');
$this->errorNewMessage($errstr . " \"{$fieldTitle}\"", false, 100, "input-missed-field");
++$wrongFieldsCount;}
Правильно ли я делаю?

40
Добрый вечер.
Подскажите, при успешном завершении заказа, как вывести
Заказ успешно добавлен
Ваш заказ №..
Сумму заказа ...руб
$FORMS['purchase_successful'] = <<<END
<p>Заказ успешно добавлен</p>
%emarket order(%orderId%)%
END;
orderId не передается

Попробовал использовать %emarket orderslist%
выводит все заказы, а мне нужен только последний.
Спасибо.

41
Напротив каждого свойства - цена - количество - кнопка добавить в корзину.
<tr>            
           <td>
                <div class="number7">
                    <span class="minus">-</span>
                    <input type="text" name="amount" id="item_amount" value="1" maxlength="3" size="5"/>
                    <span class="plus">+</span>
                </div>
            </td>
<td align="right">
                <div class="buttons">
                    <div class="add_from_list">
                        <a id="add_basket_{@id}"
                            class="button"
                            href="{$lang-prefix}/emarket/basket/put/element/{@id}/">
                            <xsl:text>&basket-add;</xsl:text>
                            <xsl:variable name="element_id" select="@id" />
                        </a>
                    </div>
                </div>
</td>
</tr>
Как вывести количество товара добавленное в корзину?
value="1" - value="sum($cart_items/item[page/@id = $element_id]/amount)" так же нельзя.
Например на странице товара мы будем видеть
цена 1000 - кол-во 7 - кнопка добавить в корзину
цена 122 - кол-во 3 - кнопка добавить в корзину
цена 700 - кол-во 5 - кнопка добавить в корзину

И что сделать, чтобы кнопка добавить в корзину заработала, сейчас пишет ошибку Debug message for UC-pages.
Заранее спасибо)

42
Вывожу цены из опционного свойства:
<div class="price">
<span id="price_id" umi:element-id="{page/@id}" umi:field-name="price">
<xsl:value-of select="@float" />                            
</span></div>

Использую код
$(document).ready(function() {	
var original_price = parseFloat($('#price_id').text(), 10);
$('.minus').click(function () {
var $input = $(this).parent().find('input');
var count = parseInt($input.val()) - 1;
count = count < 1 ? 1 : count;
$input.val(count);
$('#price_id').html( original_price * count );
$input.change();
return false;
});
$('.plus').click(function () {
var $input = $(this).parent().find('input');
var count = parseInt($input.val()) + 1;
count = count > 99 ? 99 : count;
$input.val(count);
$('#price_id').html( original_price * count );
$input.change();
return false;
});
});

Вывел например три цены 1000 122 и 700
Если увеличить или уменьшить количество товара, меняется только первая цена.
Попробовал так <span id="price_id_{@float}>
В html коде вижу
id="price_id_1000"
id="price_id_122"
id="price_id_777"
А как теперь в js прописать?
$('#price_id_{@float}').html( original_price * count ); не работает
$('#price_id_122').html( original_price * count ); работает вторая цена 122
Еще вопрос - при клике плюс минус цена изменяется, а если вручную ввести то изменений нет, что еще добавить надо?

43
Ура, работает так как надо, спасибо)

44
Как вывести первую цену или последнюю?

<xsl:apply-templates select=".//property[@name = 'furnish']/value" mode="table_options_price" />

<xsl:template match="option[position() = last()]" mode="table_options_price">
         <xsl:value-of select="@float" />
</xsl:template>
Вывел последнюю цену, а если написать  option[position() = first()] - ничего не выводит.

Второй вариант - подсказали использовать эти функции substring-after() или substring-before()
<xsl:value-of select="substring-after(@float, 1)" /> к сожалению выводит какие-то цифры, как правильно написать?

45
Установка UMI.CMS / Выбор хостинга
« : 27 Июля 2014, 12:43:46 »
Кто какой хостинг порекомендует?
По стабильности, скорости, нагрузке и т.д.

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