Просмотр полной версии : Объясните место в мануале, плз
Пытаюсь вкурить элементарные вещи из Futuristic Template Building, и вот мне что непонятно:
# Menu 1 cObject
lib.menu_1 = HMENU
menu_1 = HMENU - это мы вроде как создаём объект с именем menu_1 типа HMENU, правильно?
А откуда взялся "lib."? Или это придуманное имя для данного примера?
-=UncleByte=-
23.07.2008, 18:02
Из наших же записей. Когда мы создаем некий элемент в шаблоне TV, который имеет тип TypoScript Object Path, то мы просто обязаны задать ему некое имя, а TV ему присваивает этот самый "lib.".
То есть в приведенном примере объект мы создали еще раньше в TV, а сейчас просто описываем его средствами TS.
Из наших же записей. Когда мы создаем некий элемент в шаблоне TV, который имеет тип TypoScript Object Path, то мы просто обязаны задать ему некое имя, а TV ему присваивает этот самый "lib.".
То есть в приведенном примере объект мы создали еще раньше в TV, а сейчас просто описываем его средствами TS.
Всё равно не догоняю. То есть lib - это некий родительский объект автоматический создаваемый TV? Судя по нотации - это должен быть объект или класс.
На самом деле, имя lib - просто общепринятое соглашение. В TS нет жёсткой иерархии "объектов" и "классов". Например, вполне допустимо написать
ttt.aaa.bbb = PAGE или
xxx.bb = IMAGE
xxx.bb.file = fileadmin/path/to/image.jpeg
или даже
lib.smth = IMAGE
lib.smth.other = TEXT
lib.smth.another = PAGE
TS-"свойства" можно свободно создавать и определять... То есть, они определяются при создании. Есть некая часть свойств, которая отвечает за работу встроенных объектов, и она описана в TSREF. В остальном же предполагается полная свобода... Вы даже можете сделать так, чтобы код
lib.cat = CAT
lib.cat.tail_count = 1
lib.cat.foot_count = 4
lib.cat.eye_count = 3
был не бессмыслицей, а выводил изображение кошки с тремя глазами, одним хвостом и четырьмя ногами -)
В общем, весь TS преобразуется в массивы, а как их обрабатывать - отдельная песня.
ЗЫ. Извините, был несдержан))
На самом деле, имя lib - просто общепринятое соглашение. В TS нет жёсткой иерархии "объектов" и "классов". Например, вполне допустимо написать
ttt.aaa.bbb = PAGE или
xxx.bb = IMAGE
xxx.bb.file = fileadmin/path/to/image.jpeg
или даже
lib.smth = IMAGE
lib.smth.other = TEXT
lib.smth.another = PAGE
...
ЗЫ. Извините, был несдержан))
То есть вместо lib я могу написать какое угодно слово (не совпадающее с именем встроенных объектов и оно будет работать? А почему не писать просто menu_1 = HMENU ?
За что же извинять? Тут благодарность как минимум с занесением. :-)
-=UncleByte=-
23.07.2008, 20:36
То есть вместо lib я могу написать какое угодно слово (не совпадающее с именем встроенных объектов и оно будет работать? А почему не писать просто menu_1 = HMENU ?
За что же извинять? Тут благодарность как минимум с занесением. :-)
Вполне возможно написать. Но при использовании TV _принято_ использовать этот самый "lib." и изначально TV создает имена объектов с "lib." спереди, вот и все.
Вполне возможно написать. Но при использовании TV _принято_ использовать этот самый "lib." и изначально TV создает имена объектов с "lib." спереди, вот и все.
А ведь в css_styled_content/static/setup.txt присутствует это самый lib:
# Creates persistent ParseFunc setup for non-HTML content. This is recommended to use (as a reference!)
lib.parseFunc {
...
Неспроста! То есть этот самый lib. - суть объект, создаваемый по умолчанию, ну вроде как temp.?
Чтобы было более понятно, в данном случае lib, можно представить просто как пространство, в котором собраны полезные объекты, используемые на странице. CSS Styled Content использует это пространство для определения нескольких полезных объектов (функций), но никто Вам не мешает и темболее не запрещается добавлять туда свои собственные объекты.
Да, lib - это именно namespace, пространство имён. menu_1 = HMENU обычно не пишут именно чтобы не "загрязнять" глобальное пространство имён.
Ага, теперь всё - понятней некуда. Так и запишем. Спасибо!
Работает на vBulletin® версия 3.8.1. Copyright ©2000-2025, Jelsoft Enterprises Ltd. Перевод: zCarot