Сообщение #25 korshunov » 16.08.2023, 05:43
Aleks писал(а):У Вас:
1. 2. В админке редактирую первый товар в списке
устанавливая кол-ва у всех вариантов в 1.
И что этим вы проверили? Проверили первую часть кода. Вывод товара в наличии.
Теперь поставьте кол-во товара 0 и получите проверку второй части кода, т.е. вывод в карточке сообщения об отсутствии товара.
Тем, что изменил кол-ва вариантов, я не проверил НИЧЕГО. Чтобы провести проверку, надо полностью аккуратно выполнить описанный процесс. При этом есть еще тонкости - надо не попасть попасть в момент, когда демо сайт обновляется (0-я и 30-я минута каждого часа).
Aleks писал(а):У Вас:
3. Изначально Ф1 содержит на один закрывающий тег больше.
Значит, и заменяющий фрагмент Ф2 должен содержать на один закрывающий тег больше.
Проверил. Вот список дивов всего фрагмента. На один закрывающий див больше
<div>
<div</div>
<div</div>
</div>
{/if}
<div></div>
</div>
Можете последний закрывающий див переставить в первую часть. Сути это не меняет, работает исправно. Даже по-моему этот вариант лучше. Быстрее будут открываться соцкнопки.
Вы, похоже, даже не понимаете, в какой ситуации должно быть "на один закрывающий тег больше" (НОЗТБ).
НОЗТБ в самом тексте Ф1 имеет место. После обработки шаблона текст Ф1 преобразуется в HTML код, в котором также НОЗТБ. Это ВСЕГДА, поскольку Ф1 довольно простой, имеющиеся в нем управляющие конструкции if не влияют на кол-во div в результирующем HTML-коде.
В Ф2, если формально считать по тексту, как Вы делаете, НОЗТБ также имеет место. Но это смысла особого не имеет, так Ф2 уже сложнее и после обработки шаблона текст Ф2 преобразуется в HTML-код, который уже СУЩЕСТВЕННО отличается от текста Ф2 по части наличия div. А именно,
В1. Если товар (хотя бы один вариант) имеется в наличии, то HTML код, получающийся из Ф2, содержит поровну открывающих и закрывающих div (не имеет место НОЗТБ).
В2. Если товар (все варианты) отсутствует в наличии, то HTML код, получающийся из Ф2, удовлетворяет НОЗТБ.
Тем самым в целом на странице при В2 имеем полный порядок, а в случае В1 ошибка. То есть Ваш простой подсчет div-ов в Ф2 - довольно бессмысленное действо. Проверять надо не формально тяп-ляп, а по существу, доходя в проверке до конечного результата...
Aleks писал(а):Можете последний закрывающий див переставить в первую часть. Сути это не меняет, работает исправно. Даже по-моему этот вариант лучше. Быстрее будут открываться соцкнопки.
Если в Ф2 "последний закрывающий див переставить в первую часть", работать все равно будет неверно, ошибка будет проявляться в другом месте - при В2 вместо В1.
[quote="Aleks"]У Вас:
1. 2. В админке редактирую первый товар в списке
[b]устанавливая кол-ва у всех вариантов в 1.[/b]
И что этим вы проверили? Проверили первую часть кода. Вывод товара в наличии.
Теперь поставьте кол-во товара[b] 0[/b] и получите проверку второй части кода, т.е. вывод в карточке сообщения об отсутствии товара.
[/quote]
Тем, что изменил кол-ва вариантов, я не проверил НИЧЕГО. Чтобы провести проверку, надо полностью аккуратно выполнить описанный процесс. При этом есть еще тонкости - надо не попасть попасть в момент, когда демо сайт обновляется (0-я и 30-я минута каждого часа).
[quote="Aleks"]У Вас:
3. Изначально Ф1 содержит на один закрывающий тег больше.
Значит, и заменяющий фрагмент Ф2 должен содержать на один закрывающий тег больше.
Проверил. Вот список дивов всего фрагмента. На один закрывающий див больше
<div>
<div</div>
<div</div>
</div>
{/if}
<div></div>
</div>
Можете последний закрывающий див переставить в первую часть. Сути это не меняет, работает исправно. Даже по-моему этот вариант лучше. Быстрее будут открываться соцкнопки.
[/quote]
Вы, похоже, даже не понимаете, в какой ситуации должно быть "на один закрывающий тег больше" (НОЗТБ).
НОЗТБ в самом тексте Ф1 имеет место. После обработки шаблона текст Ф1 преобразуется в HTML код, в котором также НОЗТБ. Это ВСЕГДА, поскольку Ф1 довольно простой, имеющиеся в нем управляющие конструкции if не влияют на кол-во div в результирующем HTML-коде.
В Ф2, если формально считать по тексту, как Вы делаете, НОЗТБ также имеет место. Но это смысла особого не имеет, так Ф2 уже сложнее и после обработки шаблона текст Ф2 преобразуется в HTML-код, который уже СУЩЕСТВЕННО отличается от текста Ф2 по части наличия div. А именно,
В1. Если товар (хотя бы один вариант) имеется в наличии, то HTML код, получающийся из Ф2, содержит поровну открывающих и закрывающих div (не имеет место НОЗТБ).
В2. Если товар (все варианты) отсутствует в наличии, то HTML код, получающийся из Ф2, удовлетворяет НОЗТБ.
Тем самым в целом на странице при В2 имеем полный порядок, а в случае В1 ошибка. То есть Ваш простой подсчет div-ов в Ф2 - довольно бессмысленное действо. Проверять надо не формально тяп-ляп, а по существу, доходя в проверке до конечного результата...
[quote="Aleks"]
Можете последний закрывающий див переставить в первую часть. Сути это не меняет, работает исправно. Даже по-моему этот вариант лучше. Быстрее будут открываться соцкнопки.
[/quote]
Если в Ф2 "последний закрывающий див переставить в первую часть", работать все равно будет неверно, ошибка будет проявляться в другом месте - при В2 вместо В1.