в общем, интуитивно понимая как это работает, по прочтению, чисто для себя, могу резюмировать в следующее, правильно ли это:
для тэгов циклов (<thumb>, <category>, etc) существует функционально 3 типа параметров:
1.
параметры-предикаты - на их основании строится предикатная часть sql-выражений и осуществляется непосредственно выборка результатов из базы, используя данный тип параметров в качестве условий. к таким параметрам можно отнести, например: num (частично), allow_dupes (частично), order, sort, category_id, sponsor_id, model_id, gallery_id, gallery_slug, duration_min, content_type, skip_*, custom_var_* etc
2.
параметры форматирования результата выборки - они не являются условиями по которым строится конечный запрос в базу, но влияют на полученный результат самой выборки. не смотря на то, что они присутствуют в конечном sql-выражении, на сам характер join-ов и условий не влияют. к этому типу относятся: num (частично), allow_dupes (частично), num_range_shift, exclude_current_thumb, etc
3.
параметры-флаги - служебные параметры специфичные только для ф-нала самого тага. они могут изменять общий принцип выполнения самого тага самостоятельно, как и только в случае наличия параметров других типов, например: do_not_count_shows, zero_items_return_404, inline_thumbs, cache_time etc
так вот, для каждого цикла-тэга, на уникальность результата влияют только параметры-предикаты, не не параметры других типов, т.е.:
Code: Select all
<thumb num=1-5 sort=desc>...</thumb>
<thumb num=1-5 sort=desc do_not_count_shows=true zero_items_return_404=off cache_time=60 skip_test_thumbs=true>...</thumb>
<thumb num=1-5 sort=desc>...</thumb>
<thumb num=1-4 sort=desc>...</thumb>
<thumb num=1-3 sort=desc>...</thumb>
<thumb num=1-2 sort=desc>...</thumb>
вернёт один и тот же набор тумб (хоть и разный по кол-ву, с пред-пост обработкой на основе параметров 2 и 3-го типов), не смотря на то, что каждый из тэгов имеет разный набор параметров как по кол-ву, так и по значению... но:
Code: Select all
<thumb num=1-5 allow_dupes=true order=duration sort=desc>...</thumb>
<thumb num=1-5 allow_dupes=true order=rating sort=desc>...</thumb>
вернут разные тумбы.
результат выборки тэгов-циклов кэшируется (или singleton-ятся ещё как-то) именно на основе параметров первого типа (
параметры-предикаты): если они разные, то осуществляется новый запрос (и именно в этом случае происходит засчитывание показов там и прочее), или же если они одинаковые - то возвращается закэшенный, и после обрабатывается теми или иными параметрами 2-го и/или 3-го типов, и в этом случае, никаких новых показов элементы уже имеющейся выборки не получат.
-----
кстати, хотелось бы уточнить: заметил, что внутри тага цикла переносы строк не работают, т.е. параметры можно петедавать только в той же строке, где используется таг, например это не работает:
Code: Select all
<thumb
num=1-5
order=duration
sort=asc
sponsor=CURRENT_ITEM_SPONSOR
tag=CURRENT_ITEM_TAGS_COMBINED
>
//...
</thumb>
иногда просто для читабельности удобно передавать каждый параметр с новой строки... не планируется ли это поменять в будущем (правки в принципе минимальные - удаление \r\n\t с заменой на пробел, до ">")?