Просмотр полной версии : MENU: главная страница
собственно возвращаясь к вопросу поднятому в теме о ярлыках для главной странице http://forum.typo3.biz/showpost.php?p=30598&postcount=3 и решением предложеным -=UncleByte=- , за что ему отдельное спасибо, мы понимает что собственно ярлык для главной нам не нужен, но данно решение пораждает несколько вопросов ..
во первых зачем ссыдаться на главную как
typolink.parameter.data = leveluid:0
когда мы можем сразу и смело написать
typolink.parameter = /
избегая юзанья различных роботов.тхт .аштиассесов и прочих прыжков с бубном .. и естетсвенно нам нужен тайтл для ссылки и тогда самым простым вариантом видеться код
lib.menu_top {
10 = HTML
10.value=<a href="/" title="Главная">Главная</a>
}
тут тоже не все так радужно .. потомучто
1.Зачем огород городить если этот код можно было оставить в шаблоне
2.Юзер из админки не может поменять ни название ссылки ни описания
3.при мультиязычном сайте мы не сможем перевести эту ссылку
4.мы тупо3 используем чтоб отделить контент от офрмления в конце концов или нет? )
Собственно потупив приличное время я пришел к такому коду
lib.menu_top {
10 = TEXT
10 {
insertData = 1
value = {leveltitle : 0}
typolink.parameter = /
typolink.title.data=DB : pages:1:description
typolink.title.crop = 20 | ...
}
Как видим вроде все наши условия выполнены .. правда остается еще одна заморочка , а именно как поменять оформление ссылки при ее активности .. согласитесь с тем что иметь ссылку на главную страницу если вы находитесь в корне сайта - это не очень хорошо во всех отношениях...
добавим такой код типа условие в тупо3 .. ( эхх где вы такие надежные ифы и казы )
[treeLevel = 0]
lib.menu_top.10.typolink.parameter =
lib.menu_top.10.wrap = <span>|</span>
[end]
В общем все работает .. работает именно так как хотелось бы .. НО позволю себе задать вопрос знающим людям.
1. Весь этот наворот с главной это блаж ? можно ли сделать както проще или красивше?
2. Выдержал ли я стиль тупо3 или я мог задействовать какието мне еще не известные функции, свойства и глобалки
3. С точки зрения любого языка програмирования более оптимальный код будет когда сначала будет проверка и присвоение главной страницы без ссылки а потом уже прикручивание ссылки к ней.. в данном же примере все с точностью до наоборот .. мы по умолчанию прикручиваем ссылку а потом если это не главная страница мы ее отменяем..
другими словами возможен ли код условия НЕ РАВНО или БОЛЬШЕ МЕНЬШЕ я пробовал у меня не получилось.. но может есть какие другие варианты?
-=UncleByte=-
18.03.2011, 21:58
Для начала цитата из TSRef:= leveluid : 0
get the id of the root-page of the
website (level zero)Т.е. это отсылка к странице именно к главной странице и ни к какой другой. Напомню что у любой странице в бэкенде есть свойство "is root of website". Остальное вытекает из свойств typolink.parameter - для внутренних страниц цифры, для внешних текст. По теме можно прочесть TSRef Datatype reference и Functions typolink.
Соответственно title для ссылки можно получить из page:title.
Для начала цитата из TSRef:Т.е. это отсылка к странице именно к главной странице и ни к какой другой. Напомню что у любой странице в бэкенде есть свойство "is root of website". Остальное вытекает из свойств typolink.parameter - для внутренних страниц цифры, для внешних текст.
Все верно вы сказали ..
и так как мы идем через дата .. а для внутренних ссылок это уд страницы то мы и получим лабуду типа index.php?page=x
где х равно leveluid : 0 .. в моем случае да и в большинстве х=1 .. так вот для того чтобы поисковики склеили мойСайт.ру/index.php?page=x и просто мойСайт.ру придется писать робот.тхт или .аштиассес. конечно сейчас поисковики "умные" .. да вот только не совсем ) и если он склеит не правильно потом месяцами можно расклеивать) ..
если я не прав то поправьте плиз
По теме можно прочесть TSRef Datatype reference и Functions typolink.
не все вкуриваю если честно, но курю непрерывно
Соответственно title для ссылки можно получить из page:title.
вооот .. собственно вопрос .. а если мы в этот момент находимся не на глваной странице ? а на какомнить вложении 5 лвла .. разве page:title не вернет нам тайтл той страницы на которой мы сидим? и не получим вместо - "Это главная страница" например такую запись "Периоды деторождения моих петов" ?
-=UncleByte=-
19.03.2011, 01:22
Все верно вы сказали ..
и так как мы идем через дата .. а для внутренних ссылок это уд страницы то мы и получим лабуду типа index.php?page=x
где х равно leveluid : 0 .. в моем случае да и в большинстве х=1 .. так вот для того чтобы поисковики склеили мойСайт.ру/index.php?page=x и просто мойСайт.ру придется писать робот.тхт или .аштиассес. конечно сейчас поисковики "умные" .. да вот только не совсем ) и если он склеит не правильно потом месяцами можно расклеивать) ..
если я не прав то поправьте плизНасколько я понимаю в настоящее время подавляющее большинство сайтов оснащается так называемыми "ЧПУ" и в TYPO3 для этого тоже есть экстеншны - RealURL, CoolURI и т.д. Так вот чтобы они нормально функционировали (в частности сейчас я веду речь про RealURL, поскольку привык к нему) необходимо чтобы ссылки в чистом виде генерировались обычным порядком, в противном случае, думаю, глюков можно нахватать можно будет много. Так вот при использовании RealURL не нужно ничего прописывать в robots.txt дополнительно. Достаточно настроить рерайты на стороне сервера; для Апача надо писать больше условий в .htaccess (хотя эта конфигурация есть в руководстве), для nginx меньше в конфигурации сайта/сервера, но факт что это работает.
вооот .. собственно вопрос .. а если мы в этот момент находимся не на глваной странице ? а на какомнить вложении 5 лвла .. разве page:title не вернет нам тайтл той страницы на которой мы сидим? и не получим вместо - "Это главная страница" например такую запись "Периоды деторождения моих петов" ? Так для этого и советовал читать Datatype reference в TSRef - там как раз и описано каким образом какие данные можно получать, есть leveltitle например. Кстати куча примеров была на wiki.typo3.org как раз по этой теме.
еще не ставил чпу под эту систему.. так что ничего пока сказать не могу ).
что касается leveltitle он и использован у меня в примере..
другой вопрос что функции (переменной) leveldescription я не нашел по этому собственно и выполнил запрос к базе данных DB : pages:1:description
я и говрорю . что склейку либо через роботс либо через .аштиассес.. чпу это какраз второй вариант. а робот всеравно писать можно и нужно гугль любит его.. а яндекс до недавнего времени даже руководствовался им
И так всетаки page:title работает для текущей страницы или его можно както зафиксировать?
-=UncleByte=-
19.03.2011, 06:19
И так всетаки page:title работает для текущей страницы или его можно както зафиксировать? Для текущей. Можно нужных полей достичь другим путем: либо levelfield, либо fullRootLine. Читайте все тот же TSRef - Datatype reference и wiki - http://wiki.typo3.org/TSref/getText#fullRootLine:.3Cposition.3E.2C.3Cfieldname .3E.5B.2Cslide.5D
Для текущей. Можно нужных полей достичь другим путем: либо levelfield, либо fullRootLine. Читайте все тот же TSRef - Datatype reference и wiki - http://wiki.typo3.org/TSref/getText#fullRootLine:.3Cposition.3E.2C.3Cfieldname .3E.5B.2Cslide.5D
все верно и если мы разбираем fullRootLine: 0 , title или тотже вариант с левелфиелд, то все работает ибо поле тайтл определено в конфигурации по умолчанию, но нам какраз заголовок не нужен у нас есть идеальный инстумент для получения заголовка .. нам нужно описание и тогда поле description таблицы pages мы должны прописать в TYPO3_CONF_VARS .. а это уже в теории не прозрачный код требующий лишних телодвижений и резервирующий переменую в машинной памяти .. и скорее всего при вызове typolink.title.data=fullRootLine: 0 , description будет сгенерирован запрос к базе данных.. но тут все зависит от реализации в коде пхп .. лезть туда пока не охота.. но общий смысл сводится к тому что есть 2 рарианта .
1. Прописанное поле в варс будет заполнятнься сразу общим запросом совместно с другими полями .
2. каждый раз будет генерироваться новый запрос при вызове конструкции fullRootLine: 0 , description или levelfield: 0 , description поле leveluid:0 .. так былобы намного универсальнее .. но у меня почемуто не получается
я склоняюсь ко второму варианту ибо бессмысленно при каждом вызове страницы читать поля десткрипшен для всех страниц сайта, и если я прав и конструкция генерирует запрос при исполнении, то вариант
DB : pages:1:description будет более редпочтителен. т.к.
1. не создается доп переменной постоянно висящей в памяти
2. не требует правки конфига сайта.
Если в чемто мои рассуждения не верны.. поправьте меня пожалуйста .. но без правки конфига я не смог обратиться к полю ни через fullRootLine ни через levelfield.
еще подскажите пожалуйста как мне в DB : pages:1:description вместо 1 подстаить
-=UncleByte=-
19.03.2011, 17:03
Обращение к базе для генерации страницы происходит раз в сутки (если не указано явным образом другое значение в свойствах страницы или же она содержит некешируемые данные), все остальное время она лежит в кеше и выдается оттуда.
Обращение к базе для генерации страницы происходит раз в сутки (если не указано явным образом другое значение в свойствах страницы или же она содержит некешируемые данные), все остальное время она лежит в кеше и выдается оттуда.
это я прекрасно понимаю... я говорю про этап формирования
-=UncleByte=-
19.03.2011, 17:31
это я прекрасно понимаю... я говорю про этап формирования
Этап формирования чего?
Этап формирования чего?
этап формирования страницы .. допустим я запретил кешировать страницу.. для примера
-=UncleByte=-
19.03.2011, 18:03
Значит будут обращения к базе по всем необходимым поводам.
Работает на vBulletin® версия 3.8.1. Copyright ©2000-2025, Jelsoft Enterprises Ltd. Перевод: zCarot