1. Уважаемые пользователи, прежде чем ответить в теме или создать новую,
    внимательно ознакомьтесь с правилами раздела

    Кому лень работать или руки не оттуда - пользуйтесь услугами специалистов
  2. Не задавайте глупых вопросов "Посоветуйте какой-нибудь компонент.."

    Есть JED!!! Ищите там!!!

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

Тема в разделе "Joomla", создана пользователем Gudym, 9 май 2014.

Информация :
  • Уважаемые пользователи, прежде чем ответить в теме или создать новую, внимательно ознакомьтесь с правилами раздела
  • Не задавайте глупых вопросов "Посоветуйте какой-нибудь компонент.." Есть JED!!! Ищите там!!!
  • Аналоги ищите там же - на JED!!!
  • Новая версия? - У кого будет - тот выложит!
Модераторы: arman29, DMS, Genk0, NightHunter
  1. Gudym

    Gudym Постоялец

    Регистр.:
    19 мар 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 и в конце закрывающий ?> (возможно в этом тоже есть нюанс).

    Буду рад любой помощи! Заранее спасибо!
     
  2. Vishez

    Vishez

    Регистр.:
    19 авг 2013
    Сообщения:
    170
    Симпатии:
    81
    Попробуй проверить текущий пункт меню с помощтб
    Код:
    JSite::getMenu()->getActive()->name 
    
    Проверить наличие модулей в определенной позиции можно с помощью

    Код:
     <?php if ($this->countModules('topmenu')) { ?>   
      <div id="topmenu">
      <jdoc:include type="modules" name="topmenu" />
      </div>
      <?php } ?>
    
    Судя по всему ты делаешь собственный шаблон с нуля. Потому что в джумле нужный тебе функционал итак встроен в админке.
     
  3. gusewww

    gusewww

    Регистр.:
    4 июл 2011
    Сообщения:
    670
    Симпатии:
    300
    Чего париться, просто скрой дивку на главной, делов.
    <style>#pathway{display:none;}</style>
    Только проверку на главную страницу сделай и этот код туда закинь.
     
  4. Gudym

    Gudym Постоялец

    Регистр.:
    19 мар 2013
    Сообщения:
    55
    Симпатии:
    24
    Ребята, спасибо за помощь! Но я не такой продвинутый, как вы, наверное, подумали :) С ваших сообщений мне тяжело что-то понять. Я почти ничего не понимаю в PHP, если что-то и выходит сделать, то только методом тыка))
    А куда этот код нужно вставлять? В индекс.пхп? Его нужно как-то приплести к моему вот этому куску кода? Или как?
    Код:
    // output pathway
        if ($option != 'com_frontpage') {
            echo '            <div id="pathway">' . "\n";
            echo '<jdoc:include type="modules" name="breadcrumb" />';
            echo '            </div>' . "\n";
        }
    А что значит проверить наличие модулей в определенной позиции? И как этим кодом правильно воспользоваться?
    Нет, шаблон мне сделали когда-то, точнее переделали под Джумлу 1.5 уже существующий забугорный шаблон. Сам я далек от этого. В HTML и CSS еще боле-менее разбираюсь, а вот в PHP очень плохо.
    А где там такой функционал? В Админке я разбираюсь неплохо, но никогда подобного не встречал.
    Если я в стилях для #pathway применю display:none, то хлебные крошки перестанут отображаться вообще на всех страницах, а мне нужно чтобы только на главной не выводились и не оставалось на месте модуля пустое место. Я не как не пойму, как сделать эту проверку на главную страницу...
     
  5. Vishez

    Vishez

    Регистр.:
    19 авг 2013
    Сообщения:
    170
    Симпатии:
    81
    Ну в админке там где заходишь в редактирование модуля. Там есть примерно такое Перейти по ссылке

    По русски "привязка к пунктам меню" как то так
     
  6. gusewww

    gusewww

    Регистр.:
    4 июл 2011
    Сообщения:
    670
    Симпатии:
    300
    Выбери третью радиокнопку(select menu from list) и дeржа зажатым CTRL исключи пункт главной страницы. Сохранить.
     
  7. Gudym

    Gudym Постоялец

    Регистр.:
    19 мар 2013
    Сообщения:
    55
    Симпатии:
    24
    Друзья, в том то и загвоздка, что пункт главной страницы там исключен (это я знал), но пустота все равно остается. Место как будто бы зарезервировано под модуль.
    Пробовал и на других модулях. Создавал модуль (между статьей и хлебными крошками, также пробовал и в левой колонке между двумя существующими модулями), активировал его только на главной, например. Но на других страницах опять остается эта пустота (без содержимого модуля), если, к примеру, к модулю применить css стили, например, сделать рамку, то выводится пустая рамка. Похоже на Джумле 1.5 - это стандартная недоработка или возможно это у меня шаблон такой. Решение пока не нашел. Я так понимаю, что тут руками надо править файл index.php, отдельно каждую позицию модуля. Но мне хотя бы пока с этими хлебными крошками разобраться. Если есть еще какие-нибудь идеи, буду рад помощи! Заранее спасибо!
     
  8. Vishez

    Vishez

    Регистр.:
    19 авг 2013
    Сообщения:
    170
    Симпатии:
    81
    это недоработка шаблона... скинь шаблон посмотрим что к чему
     
  9. Gudym

    Gudym Постоялец

    Регистр.:
    19 мар 2013
    Сообщения:
    55
    Симпатии:
    24
    Вот содержимое файла 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>
    Или нужно всю папку с шаблоном прикрепить?
     
  10. Genk0

    Genk0 Инквизитор из раздела J!

    Moderator
    Регистр.:
    2 июн 2010
    Сообщения:
    1.645
    Симпатии:
    1.349
    Если сейчас так, то поменять
    Код:
    // 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
     
    Gudym нравится это.