我在设置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 ...
我真的很感激一些帮助。谢谢。
答案 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; ?>';
这样它就会生成条件的代码。我没有经过测试,因为我没有你正在使用的课程,但它应该有效。
更新以修复报价。