header_logotype_link
и header_logotype_image
модификаторы блока («ключ-значение», если следовать Соглашение по именованию), а используются как самостоятельные единицы, их задача отражать модификацию именно блока: <section class="header header_logotype_image">
, но данном случае будет мало смысла.<!-- .header -->
<section class="header">
<div class="container">
<div class="header__top">
<div class="header__logotype">
<a href="#" class="link link_type_header">
<img src="_tmp/logotype.png" alt="Casino" class="image image_type_header">
</a>
</div>
</div>
</div>
</section>
<!-- /.header -->
.header {
&__top {}
&__logotype {}
}
.link {
&_type {
&_header {}
}
}
.image {
&_type {
&_header {}
}
}
<!-- .header -->
<section class="header">
<div class="container">
<div class="header__top">
<div class="header__logotype">
<a href="#" class="header__link link">
<img src="_tmp/logotype.png" alt="Casino" class="header__image image">
</a>
</div>
</div>
</div>
</section>
<!-- /.header -->
.header {
&__top {}
&__logotype {}
&__link {}
&__image {}
}
.link {}
.image {}
/templates/demodizzy/
далее в зависимости от типа шаблонизации:/templates/demodizzy/xslt/layouts/default.xsl
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0">
<xsl:template match="/" mode="layout">
<html>
<head>
...
<script src="/templates/demodizzy/js/script.js"></script>
<link rel="stylesheet" href="/templates/demodizzy/css/styles.css"/>
</head>
...
</html>
</xsl:template>
</xsl:stylesheet>
/templates/demodizzy/tpls/content/inner.tpl
<!DOCTYPE html>
<html>
<head>
...
<script src="/templates/demodizzy/js/script.js"></script>
<link rel="stylesheet" href="/templates/demodizzy/css/styles.css"/>
</head>
...
</html>
/templates/demodizzy/php/default.phtml
<?php /** @var umiTemplaterPHP $this */ ?>
<?php /** @var array $variables */ ?>
<?php
...
?>
<html>
<head>
...
<script src="/templates/demodizzy/js/script.js"></script>
<link rel="stylesheet" href="/templates/demodizzy/css/styles.css"/>
</head>
...
</html>
site:ru.bem.info "bem-xjst"
. ./node_modules/.bin/bem create -l desktop.blocks -b input -T css
Чтобы не указывать путь к исполняемому файлу...export PATH=./node_modules/.bin:$PATH
bem/project-stub/README.ru.md#Сборка-проекта
$PATH
для вашей ОС. .container--parallax {}
можно учитывать его наличие в реализации всех элементов блока .container--parallax .container__title {}
....каскад уместен, чтобы менять элементы в зависимости от состояния блока... Вкладывание элементов в элементы и другие тонкости
.container__title--parallax {}
мы сужаем область действия модификации только на элемент.{
tag : 'div',
attrs : {
id : 'anchor1',
name : 'BEM',
},
content : [
{
tag : 'div',
attrs : {
id : 'anchor2',
name : 'BEM 2',
},
content : 'BEM text'
},
]
}
<div id="anchor1" name="BEM">
<div id="anchor2" name="BEM 2">BEM text</div>
</div>
{
"content": "BEM Block!",
"title": "I am BEM"
}
block( 'someBlock' )(
def()( function () {
var data = this.ctx.data || {};
this.ctx.content = [
{ elem : 'title', content : data.title || 'Empty title' },
{ elem : 'content', content : data.content || 'Empty content' },
];
return applyNext();
} )
);
$someObjectId = 1253;
$objects = umiObjectsCollection::getInstance();
$bar = $objects->getObject($someObjectId);
$optioned = $bar->getValue('_');
$data = [];
foreach ($optioned as $item) {
$itemObject = $objects->getObject($item['rel']);
$data[] = array(
'objectId' => $item['rel'],
'name' => $itemObject->getName(),
'value' => $item['float'],
);
}
[
'int' => 1, // bigint(20)
'varchar' => null, // varchar(255)
'rel' => null, // int(10) - идентификатор объекта (umiObject)
'tree' => null, // int(10) - идентификатор страницы (umiHierarchyElement)
'float' => 0 // double
],
9.7. Клиент может изменять, добавлять или удалять любые файлы приобретенной программы (включая базу данных) в соответствие с Российским Законодательством об авторском праве. В этом случае Правообладатель не гарантирует бесперебойную работу программы и обновлений.
<!-- микс блока wrapper, но можно и не миксовать, если нужно -->
<div class="header wrapper">
<!-- элемент блока wrapper -->
<div class="wrapper__left">
<!-- aside элемент блока header c модификатором pink -->
<div class="header__aside header__aside_pink"/>
</div>
<!-- элемент блока wrapper -->
<div class="wrapper__right">
<!-- aside элемент блока header c модификатором blue -->
<div class="header__aside header__aside_blue"/>
</div>
</div>
<div class="header">
<!-- wrappe элемент блока header -->
<div class="header__wrapper">
<!-- wrapperLeft элемент блока header -->
<div class="header__wrapperLeft">
<!-- aside элемент блока header c модификатором pink -->
<div class="header__aside header__aside_pink"/>
</div>
<!-- wrapperRight элемент блока header -->
<div class="header__wrapperRight">
<!-- aside элемент блока header c модификатором blue -->
<div class="header__aside header__aside_blue"/>
</div>
</div>
</div>
<div class="header">
<!-- wrapper элемент блока header c модификатором left -->
<div class="header__wrapper header__wrapper_left">
<!-- aside элемент блока header c модификатором pink -->
<div class="header__aside header__aside_pink"/>
</div>
<!-- wrapper элемент блока header c модификатором right -->
<div class="header__wrapper header__wrapper_right">
<!-- aside элемент блока header c модификатором blue -->
<div class="header__aside header__aside_blue"/>
</div>
</div>
[debug]
enabled = "1"
show-backtrace = "1"
Warning: DOMDocument::load(): Specification mandate value for attribute checked in /umi/xsltTpls/default.xsl
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<!-- debug tools -->
<xsl:template match="*" mode="debug">
<textarea>
<xsl:copy-of select="*"/>
</textarea>
</xsl:template>
</xsl:stylesheet>
<xsl:include href="debug.xsl"/>
и использовать в любом xsl:apply-templates
добавляя mode="debug"
например так:<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="property">
<xsl:apply-templates select="value/option" mode="debug" />
</xsl:template>
</xsl:stylesheet>
APP_DEVICE_NOT_ALLOWEDОбработка ошибок.
1301
Указанное устройство не доступно
/**
* Initializes this class with the given options.
*
* @param array $options {
* @var bool $required Whether this element is required
* @var string $label The display name for this element
* }
*/
/**
* @return array {
* @var bool $required Whether this element is required
* @var string $label The display name for this element
* }
*/
Как можно отправить запрос с ценой = 1 000?
Делать это 40 полями в свойствах объекта не рационально.
Решение: добавить в объект каталога поле: Выпадающий список с множественным выбором, привязать справочник с нужным набором полей, и связать их.
Так не работает: имена полей перекликаются, например name он подставляет заголовок страницы.
3.2.4. Клиент вправе вносить изменения в правомерно приобретённый экземпляр Системы исключительно в целях функционирования Системы на конкретных технических средствах Клиента или под управлением конкретных программ Клиента (адаптация) в пределах, указанных на странице docs.umi-cms.ru/system_modification_rules, а также исправлять явные ошибки Системы.