Есть куча вариантов проверки на главную страницу в 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 ; ?>
Если у кого-то есть что добавить — буду рад критике.
Здравствуйте! Спасибо за хорошие темы VirtueMart, JOOMLA, два года с этим сижу, и не где не мог найти. Я собственно, не силен PHP, но представление имею. Хорошо бы к этим кодам пути прописать куда их воткнуть. Большое спасибо!
Спасибо за отзыв 🙂
Этот код вставляется в тот файл, где нужно провести проверку. Обычно (но, не исключая прочих), в index.php Вашего шаблона, который сидит в /templates/ВАШ_ШАБЛОН/index.php
На самом деле, можно вставлять и в другие файлы php — тут все зависит от того, чего Вы хотите добиться и в каком именно модуле/плагине/компоненте/шаблоне.
Спасибо огромное! Понял, то есть в сам шаблон сайта, ещё раз спасибо!