Joomla: определение главной страницы

Чтобы в Joomla вывести какие-либо данные только на главной странице сайта (например, рекламу Sape), надо эту главную как-то определить программно. Порывшись на просторах интернета, я нашел такой кусок кода:


<?php
$menu = JSite::getMenu();
if ($menu->getActive() == $menu->getDefault()) {
    echo 'Главная страница';
} else { 
    echo 'Это не главная страница';
}
?>

Этот код функционирует, но с ошибками. Если несколько пунктов меню ссылаются на главную, то, соответственно, работать не будет. Так что этот код использовать не рекомендуется!

Правильным является такой подход:


<?php
if(JRequest::getVar('view') == "frontpage" ) {
    echo 'Главная страница';
}
else {
    echo 'Это не главная страница';
}
?>

Если у вас главная страница — это, допустим, список материалов или список товаров, тогда попробуйте так (в 2.5 работает точно):


<?php
if (JUri::base() === JUri::current()) {
    echo 'Главная страница';
} else {
    echo 'Это не главная страница';
}
?>

Для вставки кода используйте HTML-теги
<pre><code class="php">ваш код</code></pre>

  • mraak

    if($_SERVER[‘REQUEST_URI’]==’/’ || $_SERVER[‘REQUEST_URI’]==’/index.php’){ echo «Это полюбому главная страница»; }

    • Кто вам сказал, что joomla может быть только в корне проекта? Может же быть в каталоге, например, site.ru/joomla/

      • mraak

        А что вам мешает добавить соответстующие строки в данную конструкцию?

        • Смысл ставить костыли, когда в API все уже предусмотрено?

          • mraak

            Смысл напрягать API, тратя дополнительные ресурсы и память, ради простейшей операции?

            • У нас с вами разные взгляды на жизнь, делайте как вам удобно, никто не запрещает, я всегда следую API

              • mraak

                Вы совершенно правы, я стараюсь никогда не следовать чужому API, именно из за взглядов на жизнь. Особенно, я категорически отказываюсь следовать API Joomla, ибо считаю что лишний раз пинать этого «слона» с монстроподобной архитектурой из роутеров, контроллеров, валидаторов и т.д. ради определения главной страницы это как минимум не профессионально. Когда у вас будет 500+ проектов на жумле под присмотром, вы то-же начнёте обращать внимание на подобные мелочи. Особенно когда они все на одном VDS. Что вы знаете о этих методах JRequest::getVar или JUri::base() ? Сколько происходит лишних обращений к БД, сколько происходит лишних операций i/o на диск? Сколько выделяется дополнительно памяти для свойств этих классов? Вот например про суперглобальную переменную $_SERVER всё известно, она и так уже существует в любом случае…

  • Максим

    Спасибо. про метатеги напиши. например как автогенерировать их из текста, если нет прописанных тегов для статьи

  • Щас редко что то вешается только на главную страницу. Сейчас все блоки сквозные.