Проверка Joomla 1.5.x на главную страницу

Есть куча вариантов проверки на главную страницу в Joomla 1.5.x, интернеты ими просто кишат. Хочу предложить свой с тем учетом, что в качестве главной страницы у меня воткнут com_virtuemart.

Для начала покажу, как можно вообще проверить на главную страницу.

Итак, вариант первый — воспользоваться стандартной проверкой Joomla:

<?php if(!$tmpTools->isFrontPage()) : ?>
<div id="pathway">
<jdoc:include type="module" name="breadcrumbs" />
</div>
<?php endif ; ?>

Почему не он? В массиве $isFrontPage, элемент «view» должен быть равен «frontpage«, а это не всегда достижимо, особенно, когда в качестве главной страницы у нас компонент. Откуда утверждение? А прямо из функции isFrontPage() в файле templates/ja_purity/ja_templatetools.php

Вариант второй — сравнить массивы с меню:

$menu = & JSite::getMenu();
if ($menu->getActive() == $menu->getDefault()) {
// на главной
} else {
// тут всё что не на главной
}

Почему не он? Не уверен, но по ходу по той же причине, что и первый — на главной расположен компонент, поэтому этому варианту «все едино», по крайней мере, как я ни извращался — он у меня не заработал, хотя, спору нет, идея отличная, кстати взята с джумлафорума.

Вариант третий — проверять отсутствие наличия $Itemid.

<?php if ($Itemid != '1') { ?>
<jdoc:include type="modules" name="breadcrumb" />
<?php } else { } ?>
<jdoc:include type="component" />

Что же, в определенных обстоятельствах он тоже хорош, но $Itemid в случае, когда компонент на главной тоже становится равным «1» .

Итак, выход из ситуевины.

Постольку поскольку com_virtuemart сразу без объявления войны передает GET’ом массив из двух параметров — будем считать, что тут он и попался. Кстати, при загрузке главной страницы, в адресной строке вы их не найдете, не смотря на то, что это GET. Для того, чтобы его увидеть надо в шаблоне написать «а покажи-ка, друг любезный, что у тебя на уме»:

 <pre><?php echo print_r ($_GET);?></pre>

тут-то он нам и покажет свой спрятанный массив $_GET.

Собственно, вот решение проблемы. В начале index.php пишем условие (мало ли придется повторять это условие, чтобы не плодить срач в коде):

<?php 

// проверка на главную - смотрим сколько в массиве элементов и какие. Если нас все устраивает - это главная
// так происходит потому, что по умолчанию модуль главной страницы с категориями "com_virtuemart" передает два параметра в GET
if(count ($_GET) == 2 && $_GET['option']=="com_virtuemart" && $_GET['Itemid']=="1")
 $frontPage=True; //главная
else
 $frontPage=False; //не главная 

?>

и уже в том месте, где нужно выводить или не выводить — пишем следующее:

<?php if(!$frontPage) : ?>
<div id="ja-pathway">
<jdoc:include type="module" name="breadcrumbs" />
</div>
<?php endif ; ?>

Если у кого-то есть что добавить — буду рад критике.

0

Проверка Joomla 1.5.x на главную страницу: 3 комментария

  1. Сергей

    Здравствуйте! Спасибо за хорошие темы VirtueMart, JOOMLA, два года с этим сижу, и не где не мог найти. Я собственно, не силен PHP, но представление имею. Хорошо бы к этим кодам пути прописать куда их воткнуть. Большое спасибо!

    1. merinovkv Автор записи

      Спасибо за отзыв 🙂
      Этот код вставляется в тот файл, где нужно провести проверку. Обычно (но, не исключая прочих), в index.php Вашего шаблона, который сидит в /templates/ВАШ_ШАБЛОН/index.php
      На самом деле, можно вставлять и в другие файлы php — тут все зависит от того, чего Вы хотите добиться и в каком именно модуле/плагине/компоненте/шаблоне.

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