Модуль Как убрать пустоту на месте модуля breadcrumb. Joomla 1.5. Нужна помощь в PHP

Gudym

Постоялец
Регистрация
18 Мар 2013
Сообщения
55
Реакции
24
Для просмотра ссылки Войди или Зарегистрируйся
Доброго времени суток, друзья :)

Есть на Joomla 1.5 такая неприятность, когда создаешь модуль и активируешь его, к примеру, только на одной странице, то на других страницах на месте этого модуля будет "светится" пустота или если есть стили, то будут выводится только они без содержимого самого модуля.

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

В моем случае нужно вывести модуль breadcrumb (хлебные крошки) на всех страницах, кроме главной. И вот на главной странице в той же позиции остается просто пустое место, которое никак убрать пока не получается.

Вот кусок кода, который отвечает за вывод той позиции, в которую публикую модуль Хлебные крошки:
Код:
// output pathway
    if ($option != 'com_frontpage') {
        echo '            <div id="pathway">' . "\n";
        echo '<jdoc:include type="modules" name="breadcrumb" />';
        echo '            </div>' . "\n";
    }

Подозреваю, что играться нужно с ним. На другом форуме посоветовали вот такое решение:
Код:
<?php if (JURI::current()!== JURI::base()): ?>
<div id="pathway">
<jdoc:include type="modules" name="breadcrumb" />
</div>
<?php endif; ?>

Оно не работает, сайт падает, открывается белая страница. Возможно я как-то неправильно применил тот код, я хз. И еще чувствуется мне, что тут какая-то замануха из этими echo '. У меня в index.php все позиции модулей прописаны с этим вот echo '. И еще в индексном файле только после тега <body> встречается открывающих тег <?php и в конце закрывающий ?> (возможно в этом тоже есть нюанс).

Буду рад любой помощи! Заранее спасибо!
 
Для просмотра ссылки Войди или Зарегистрируйся
Доброго времени суток, друзья :)

Есть на Joomla 1.5 такая неприятность, когда создаешь модуль и активируешь его, к примеру, только на одной странице, то на других страницах на месте этого модуля будет "светится" пустота или если есть стили, то будут выводится только они без содержимого самого модуля.

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

В моем случае нужно вывести модуль breadcrumb (хлебные крошки) на всех страницах, кроме главной. И вот на главной странице в той же позиции остается просто пустое место, которое никак убрать пока не получается.

Вот кусок кода, который отвечает за вывод той позиции, в которую публикую модуль Хлебные крошки:
Код:
// output pathway
    if ($option != 'com_frontpage') {
        echo '            <div id="pathway">' . "\n";
        echo '<jdoc:include type="modules" name="breadcrumb" />';
        echo '            </div>' . "\n";
    }

Подозреваю, что играться нужно с ним. На другом форуме посоветовали вот такое решение:
Код:
<?php if (JURI::current()!== JURI::base()): ?>
<div id="pathway">
<jdoc:include type="modules" name="breadcrumb" />
</div>
<?php endif; ?>

Оно не работает, сайт падает, открывается белая страница. Возможно я как-то неправильно применил тот код, я хз. И еще чувствуется мне, что тут какая-то замануха из этими echo '. У меня в index.php все позиции модулей прописаны с этим вот echo '. И еще в индексном файле только после тега <body> встречается открывающих тег <?php и в конце закрывающий ?> (возможно в этом тоже есть нюанс).

Буду рад любой помощи! Заранее спасибо!
Попробуй проверить текущий пункт меню с помощтб
Код:
JSite::getMenu()->getActive()->name

Проверить наличие модулей в определенной позиции можно с помощью

Код:
 <?php if ($this->countModules('topmenu')) { ?>   
  <div id="topmenu">
  <jdoc:include type="modules" name="topmenu" />
  </div>
  <?php } ?>

Судя по всему ты делаешь собственный шаблон с нуля. Потому что в джумле нужный тебе функционал итак встроен в админке.
 
Чего париться, просто скрой дивку на главной, делов.
<style>#pathway{display:none;}</style>
Только проверку на главную страницу сделай и этот код туда закинь.
 
Ребята, спасибо за помощь! Но я не такой продвинутый, как вы, наверное, подумали :) С ваших сообщений мне тяжело что-то понять. Я почти ничего не понимаю в PHP, если что-то и выходит сделать, то только методом тыка))
Попробуй проверить текущий пункт меню с помощтб
Код:
JSite::getMenu()->getActive()->name

А куда этот код нужно вставлять? В индекс.пхп? Его нужно как-то приплести к моему вот этому куску кода? Или как?
Код:
// output pathway
    if ($option != 'com_frontpage') {
        echo '            <div id="pathway">' . "\n";
        echo '<jdoc:include type="modules" name="breadcrumb" />';
        echo '            </div>' . "\n";
    }
Проверить наличие модулей в определенной позиции можно с помощью

Код:
<?php if ($this->countModules('topmenu')) { ?> 
  <div id="topmenu">
  <jdoc:include type="modules" name="topmenu" />
  </div>
  <?php } ?>
А что значит проверить наличие модулей в определенной позиции? И как этим кодом правильно воспользоваться?
Судя по всему ты делаешь собственный шаблон с нуля. Потому что в джумле нужный тебе функционал итак встроен в админке.
Нет, шаблон мне сделали когда-то, точнее переделали под Джумлу 1.5 уже существующий забугорный шаблон. Сам я далек от этого. В HTML и CSS еще боле-менее разбираюсь, а вот в PHP очень плохо.
А где там такой функционал? В Админке я разбираюсь неплохо, но никогда подобного не встречал.
Чего париться, просто скрой дивку на главной, делов.
<style>#pathway{display:none;}</style>
Только проверку на главную страницу сделай и этот код туда закинь.
Если я в стилях для #pathway применю display:none, то хлебные крошки перестанут отображаться вообще на всех страницах, а мне нужно чтобы только на главной не выводились и не оставалось на месте модуля пустое место. Я не как не пойму, как сделать эту проверку на главную страницу...
 
Нет, шаблон мне сделали когда-то, точнее переделали под Джумлу 1.5 уже существующий забугорный шаблон. Сам я далек от этого. В HTML и CSS еще боле-менее разбираюсь, а вот в PHP очень плохо.
А где там такой функционал? В Админке я разбираюсь неплохо, но никогда подобного не встречал.
Ну в админке там где заходишь в редактирование модуля. Там есть примерно такое Для просмотра ссылки Войди или Зарегистрируйся

По русски "привязка к пунктам меню" как то так
 
Выбери третью радиокнопку(select menu from list) и дeржа зажатым CTRL исключи пункт главной страницы. Сохранить.
 
Выбери третью радиокнопку(select menu from list) и дeржа зажатым CTRL исключи пункт главной страницы. Сохранить.
Друзья, в том то и загвоздка, что пункт главной страницы там исключен (это я знал), но пустота все равно остается. Место как будто бы зарезервировано под модуль.
Пробовал и на других модулях. Создавал модуль (между статьей и хлебными крошками, также пробовал и в левой колонке между двумя существующими модулями), активировал его только на главной, например. Но на других страницах опять остается эта пустота (без содержимого модуля), если, к примеру, к модулю применить css стили, например, сделать рамку, то выводится пустая рамка. Похоже на Джумле 1.5 - это стандартная недоработка или возможно это у меня шаблон такой. Решение пока не нашел. Я так понимаю, что тут руками надо править файл index.php, отдельно каждую позицию модуля. Но мне хотя бы пока с этими хлебными крошками разобраться. Если есть еще какие-нибудь идеи, буду рад помощи! Заранее спасибо!
 
Друзья, в том то и загвоздка, что пункт главной страницы там исключен (это я знал), но пустота все равно остается. Место как будто бы зарезервировано под модуль.
Пробовал и на других модулях. Создавал модуль (между статьей и хлебными крошками, также пробовал и в левой колонке между двумя существующими модулями), активировал его только на главной, например. Но на других страницах опять остается эта пустота (без содержимого модуля), если, к примеру, к модулю применить css стили, например, сделать рамку, то выводится пустая рамка. Похоже на Джумле 1.5 - это стандартная недоработка или возможно это у меня шаблон такой. Решение пока не нашел. Я так понимаю, что тут руками надо править файл index.php, отдельно каждую позицию модуля. Но мне хотя бы пока с этими хлебными крошками разобраться. Если есть еще какие-нибудь идеи, буду рад помощи! Заранее спасибо!
это недоработка шаблона... скинь шаблон посмотрим что к чему
 
это недоработка шаблона... скинь шаблон посмотрим что к чему
Вот содержимое файла index.php:
Код:
<?php
defined( '_JEXEC' ) or die( 'Restricted access' );
JPlugin::loadLanguage( 'tpl_SG1' );
define( 'path', dirname(__FILE__) );
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<?php echo $this->language; ?>" lang="<?php echo $this->language; ?>" >
<head>
<jdoc:include type="head" />
<link rel="stylesheet" href="templates/system/css/system.css" type="text/css" />
<link rel="stylesheet" href="templates/<?php echo $this->template ?>/css/template_css.css" type="text/css" />
<link rel="stylesheet" href="templates/<?php echo $this->template ?>/css/content.css" type="text/css" />
<!--[if IE]>
<style type="text/css">
#pos_banner, #pos_footer {
    float: left;
}
</style>
<![endif]-->

<!--[if lt IE 7]>
<link href="<?php echo $template_path; ?>/css/template_css_ie6.css" rel="stylesheet" type="text/css" />
<script type="text/javascript">
var blankImg = '<?php echo $template_path; ?>/images/blank.gif';
</script>
<style type="text/css">
.pngfix { behavior: url(<?php echo $template_path; ?>/js/iepngfix.htc); }
</style>
<![endif]-->

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.8.1/jquery.min.js"></script>
<script type="text/javascript" src="/templates/bt_liveestate/js/jquery.cookie.js"></script>

</head>

<body>
<?php

    echo '<div id="page_top"></div>' . "\n";

    echo '<div id="wrapper">' . "\n";

    // output positions: banner + header
    if ($this->countModules( 'banner' ) + $this->countModules( 'header' ) > 0) {
        echo '    <div id="header">' . "\n";
        if ($this->countModules( 'header' )) {
            $width = empty($cfg['pos_header_width']) ? '' : ' style="width:' . $cfg['pos_header_width'] . '"';
            echo '        <div id="pos_header"' . $width . '>' . "\n";
            echo '<jdoc:include type="modules" name="header" style="xhtml" />';
            echo '        </div>' . "\n";
        }

        if ($this->countModules( 'banner' )) {
            echo '        <div id="pos_banner">' . "\n";
            echo '<jdoc:include type="modules" name="banner" style="xhtml" />';
            echo '        </div>' . "\n";
        }

        echo '        <div style="clear:both"></div>' . "\n";
        echo '    </div>' . "\n";
    }

    // output position: top
    if ($this->countModules( 'top' ) > 0) {
        echo '    <div id="pos_top">' . "\n";
        echo '<jdoc:include type="modules" name="top" style="xhtml" />';
        echo '</div>' . "\n";
    }

    // output page content
    echo '    <div id="page_content">' . "\n";

    // output position: left
    echo '        <noindex><div id="pos_left">' . "\n";
    echo '<jdoc:include type="modules" name="left" style="xhtml" />';
    echo '        </div></noindex>' . "\n";
   
    echo '        <div id="left_gap">&nbsp;</div>' . "\n";
   
    // output position: right
    echo '        <noindex><div id="pos_right">' . "\n";
    echo '<jdoc:include type="modules" name="right" style="xhtml" />';
    echo '        </div></noindex>' . "\n";
   
    // output content
    echo '        <div id="content_area">' . "\n";
   
    // output pathway
    if ($option != 'com_frontpage') {
        echo '            <div id="pathway">' . "\n";
        echo '<jdoc:include type="modules" name="breadcrumb" />';
        echo '            </div>' . "\n";
    }

        // output topenblok
        echo '            <div class="topenblok">' . "\n";
        echo '<jdoc:include type="modules" name="topenblok" />';
        echo '        </div>' . "\n";

    // output mainbody
    echo '            <div id="mainbody">' . "\n";
    echo '<jdoc:include type="component" />';
    echo '            </div>' . "\n";

    // output positions: user1 + user2

    $user_positions_count = $this->countModules( 'user1' ) + $this->countModules( 'user2' );
    if ($user_positions_count > 0) {
        $user_pos_width = $user_positions_count == 1 ? 445 : 209; // 209 + 27 + 209 = 445

        $splitter = $user_positions_count == 1 ? '' : ' style="background:url(' . $template_path . '/images/imgCntSplitter.gif) repeat-y top center;"';
        echo '            <div id="user_positions"' . $splitter . '>' . "\n";

        if ($this->countModules( 'user1' ) > 0) {
            echo '                <div id="pos_user1">' . "\n";
            echo '<jdoc:include type="modules" name="user1" style="xhtml" />';
            echo '                </div>' . "\n";
        }

        if ($user_positions_count > 1) {
            echo '                <div id="user_pos_gap">&nbsp;</div>' . "\n";
        }

        if ($this->countModules( 'user2' ) > 0) {
            echo '                <div id="pos_user2">' . "\n";
            echo '<jdoc:include type="modules" name="user2" style="xhtml" />';
            echo '                </div>' . "\n";
        }

        echo '                <div style="clear:both"></div>' . "\n";
        echo '            </div>' . "\n";
    }

    echo '        </div>' . "\n";
    echo '        <div style="clear:both"></div>' . "\n";
    echo '    </div>' . "\n";

    // output positions: footer + bottom
    if ($this->countModules( 'footer' ) + $this->countModules( 'bottom' ) > 0) {
        echo '    <div id="bottom">' . "\n";
        if ($this->countModules( 'bottom' )) {
            $width = empty($cfg['pos_bottom_width']) ? '' : ' style="width:' . $cfg['pos_bottom_width'] . '"';
            echo '        <div id="pos_bottom"' . $width . '>' . "\n";
            echo '<jdoc:include type="modules" name="bottom" style="xhtml" />';
            echo '        </div>' . "\n";
        }

        if ($this->countModules( 'footer' )) {
            echo '        <div id="pos_footer">' . "\n";
            echo '<jdoc:include type="modules" name="footer" style="xhtml" />';
            echo '        </div>' . "\n";
        }

        echo '        <div style="clear:both"></div>' . "\n";
        echo '    </div>' . "\n";
    }

    echo '</div>' . "\n";

?>

<div align="center">
<div style="width:1220px; padding-left:10px; padding-right:10px">
<div class="footer2"><jdoc:include type="modules" name="footer2" /></div>
<div class="footer3"><jdoc:include type="modules" name="footer3" /></div>
</div>
</div>

</body>

</html>
Или нужно всю папку с шаблоном прикрепить?
 
Если сейчас так, то поменять
Код:
// output pathway
if ($option != 'com_frontpage') {
echo ' <div id="pathway">' . "\n";
echo '<jdoc:include type="modules" name="breadcrumb" />';
echo ' </div>' . "\n";
}
На вот это:
Код:
$menu = & JSite::getMenu();
if ($menu->getActive() != $menu->getDefault()) {
echo ' <div id="pathway">' . "\n";
echo '<jdoc:include type="modules" name="breadcrumb" />';
echo ' </div>' . "\n";
}
Так будет правильнее, нежели указывать com_frontpage
 
Назад
Сверху