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 {}
Подскажите, для чего в БЭМ т.н. "первый уровень вложенности", то есть "блок__элемент"?
Зачем весь этот цирк с двойным подчеркиванием и якобы вложенностью, но запретом на ее использование?
А для чего вводить двойное подчеркивание, если элемент может быть с указанным родителем в качестве модификатора?
Вопрос почему кодеры так активно кричат "бэм это хорошо", если достаточно было сказать "ребята, научитесь УМНО пользоваться вложенностью", дескать каждый уровень вложенности это как золото, их нельзя делать 22, максимум 2 или 3??
ну то есть - зачем каждому элементу писать модификатор, отказывая себе во вложенности, если вложенность тут очевидна?
А если делать все равно вложенность, то на какой долбаться с ней без вложенности?
Хотелось бы услышать объяснения без ссылок на "какую-то там статью про бэм" в которой те, кто сломали себе мозг, ломают его остальным.
/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 он подставляет заголовок страницы.