У меня проблемы с настройкой позиции и диапазона условного модуля 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».
Я пробовал разные методы и каждый раз получаю разные ошибки. Вот почему я не упомянул о существенной ошибке. Например, если я использую этот метод:
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 ...
Я был бы очень признателен за помощь. Спасибо.
Проблема в том, что вы пытаетесь нам 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; ?>';
Так что он сгенерирует код для условия. Я не проверял, потому что у меня нет класса, который вы используете, но он должен работать.
Обновлено для исправления цитирования.
Других решений пока нет …