Joomla: определение главной страницы
Чтобы в Joomla вывести какие-либо данные только на главной странице сайта (например, рекламу Sape), надо эту главную как-то определить программно. Порывшись на просторах интернета, я нашел такой кусок кода:
$menu = JSite::getMenu(); if ($menu->getActive() == $menu->getDefault()) { echo 'Главная страница'; } else { echo 'Это не главная страница'; }
Этот код функционирует, но с ошибками. Если несколько пунктов меню ссылаются на главную, то, соответственно, работать не будет. Так что этот код использовать не рекомендуется!
Правильным является такой подход:
if(JRequest::getVar('view') == "frontpage" ) { echo 'Главная страница'; } else { echo 'Это не главная страница'; }
Если у вас главная страница — это, допустим, список материалов или список товаров, тогда попробуйте так (в 2.5 работает точно):
if (JUri::base() === JUri::current()) { echo 'Главная страница'; } else { echo 'Это не главная страница'; }
Щас редко что то вешается только на главную страницу. Сейчас все блоки сквозные.
Кто это вам сказал? Присмотритесь даже к этому сайту )
Спасибо. про метатеги напиши. например как автогенерировать их из текста, если нет прописанных тегов для статьи
if($_SERVER[‘REQUEST_URI’]==’/’ || $_SERVER[‘REQUEST_URI’]==’/index.php’){ echo «Это полюбому главная страница»; }
Кто вам сказал, что joomla может быть только в корне проекта? Может же быть в каталоге, например, site.ru/joomla/
А что вам мешает добавить соответстующие строки в данную конструкцию?
Смысл ставить костыли, когда в API все уже предусмотрено?
Смысл напрягать API, тратя дополнительные ресурсы и память, ради простейшей операции?
У нас с вами разные взгляды на жизнь, делайте как вам удобно, никто не запрещает, я всегда следую API
Вы совершенно правы, я стараюсь никогда не следовать чужому API, именно из за взглядов на жизнь. Особенно, я категорически отказываюсь следовать API Joomla, ибо считаю что лишний раз пинать этого «слона» с монстроподобной архитектурой из роутеров, контроллеров, валидаторов и т.д. ради определения главной страницы это как минимум не профессионально. Когда у вас будет 500+ проектов на жумле под присмотром, вы то-же начнёте обращать внимание на подобные мелочи. Особенно когда они все на одном VDS. Что вы знаете о этих методах JRequest::getVar или JUri::base() ? Сколько происходит лишних обращений к БД, сколько происходит лишних операций i/o на диск? Сколько выделяется дополнительно памяти для свойств этих классов? Вот например про суперглобальную переменную $_SERVER всё известно, она и так уже существует в любом случае…
На мультиязычном сайте код не работает.
А что выводят указанные переменные?
На мультиязічном сайте не один из вариантов не работает корректно
Скоре всего оно вообще не работает, статья написана 7 лет назад, а Joomla я не промышляю лет 5 точно уже.