有条件的Joomla模块位置和跨度

时间:2015-08-29 08:07:15

标签: php joomla module position conditional

我在设置joomla条件模块位置和跨度时遇到问题。 虽然我理解HTML,但我在使用php时遇到了麻烦。根据教程,我必须添加

<?php if ($this->countModules( 'user1' )) : ?>
  <div class="user1">
    <jdoc:include type="modules" name="user1" style="rounded" />
  </div>
<?php endif; ?>

虽然当我添加类似的东西时,我收到错误。

我想要更改的代码是:

 <?php
//no direct accees
defined ('_JEXEC') or die('resticted aceess');

class Helix3FeatureTitle {

    private $helix3;

    public function __construct($helix){
        $this->helix3 = $helix;
        $this->position = 'title';
    }

    public function renderFeature() {

        $app        = JFactory::getApplication();
        $menuitem   = $app->getMenu()->getActive(); // get the active item

        if($menuitem) {

            $params     = $menuitem->params; // get the menu params

            if($params->get('enable_page_title', 0)) {

                $page_title          = $menuitem->title;
                $page_title_alt      = $params->get('page_title_alt');
                $page_subtitle       = $params->get('page_subtitle');
                $page_title_bg_color = $params->get('page_title_bg_color');
                $page_title_bg_image = $params->get('page_title_bg_image');

                $style = '';

                if($page_title_bg_color) {
                    $style .= 'background-color: ' . $page_title_bg_color . ';';
                }

                if($page_title_bg_image) {
                    $style .= 'background-image: url(' . JURI::root(true) . '/' . $page_title_bg_image . ');';
                }

                if( $style ) {
                    $style = 'style="' . $style . '"';
                }

                if($page_title_alt) {
                    $page_title      = $page_title_alt;
                }

                $output = '';

                $output .= '<div class="sp-page-title"'. $style .'>';
                $output .= '<div class="container" id="pagetitle">';
                                $output .= '<div class="row">';
                                $output .= '<div class="col-md-6 col-sm-8">';
                $output .= '<h1>'. $page_title .'</h1>';

                if($page_subtitle) {
                    $output .= '<p class="lead">'. $page_subtitle .'</p>';
                }
                $output .= '</div>';

                                $output .= '<div class="col-md-6 col-sm-4 hidden-xs">';
                                $output .= '<jdoc:include type="modules" name="datetime" style="none" />';
                                $output .= '</div>';

                $output .= '</div>';
                $output .= '</div>';
                                $output .= '</div>';

                return $output;

            }

        }

    }    
}

我想要做的是告诉模板当模块位置'datetime'为空时,“title”位置应该是12span并且是“text-center”。 否则,如果模块位置'datetime'有一个模块,'title'位置应该是6span并且是“text-left”。

我尝试了不同的方法,每次都会收到不同的错误。这就是为什么我没有提到一个spcecific错误。例如,如果我使用此方法:

if($this->countModules('datetime')) { $output .= '<div class="col-md-6 col-sm-4 hidden-xs">'; $output .= '<jdoc:include type="modules" name="datetime" style="none" />'; $output .= '</div>'; };

我收到以下错误:

Fatal error: Call to undefined method Helix3FeatureTitle::countModules() in ... 

我真的很感激一些帮助。谢谢。

1 个答案:

答案 0 :(得分:1)

问题是,您正在尝试将我们countModules()放置在无法使用的地方,因为该方法来自不同的类。

从它的外观来看,这个方法正在做的是生成Joomla模板。

所以你可以做的是

  $output .="<?php if ($this->countModules( 'user1' )) : ?>";
       $output .= '<div class="col-md-6 col-sm-4 hidden-xs">';

          $output .= '<jdoc:include type="modules" name="datetime" style="none" />';

        $output .= '</div>';
  $output .= '<?php endif; ?>';

这样它就会生成条件的代码。我没有经过测试,因为我没有你正在使用的课程,但它应该有效。

更新以修复报价。