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 'Это не главная страница';
}

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

Добавить комментарий

Такой e-mail уже зарегистрирован. Воспользуйтесь формой входа или введите другой.

Вы ввели некорректные логин или пароль

Извините, для комментирования необходимо войти.

10 комментариев

по хронологии
по рейтингу сначала новые по хронологии

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

Автор
Кобзарёв Михаил

Кто это вам сказал? Присмотритесь даже к этому сайту )

Максим

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

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 всё известно, она и так уже существует в любом случае...