Федор, ну раз уж вы включились в решение моей задачи, наберусь наглости и попрошу у вас консультации.
Вот файл из директории templates/template_name/warp/systems/joomla/layouts/modules.php
<?php
// load modules
$modules = $this['modules']->load($position);
$count = count($modules);
$output = array();
foreach ($modules as $index => $module) {
// set module params
$params = array();
$params['count'] = $count;
$params['order'] = $index + 1;
$params['first'] = $params['order'] == 1;
$params['last'] = $params['order'] == $count;
$params['suffix'] = $module->parameter->get('moduleclass_sfx', '');
// pass through menu params
if (isset($menu)) {
$params['menu'] = $menu;
}
// get class suffix params
$parts = preg_split('/[\s]+/', $params['suffix']);
foreach ($parts as $part) {
if (strpos($part, '-')!== false) {
list($name, $value) = explode('-', $part, 2);
$params[$name] = $value;
}
}
// remove used parameters from suffix so we dont end up having the wrong css-classes
$params['suffix'] = trim(preg_replace("/(style|color|badge|icon|header)-[a-z0-9]+/", "", $params['suffix']));
// render module
$output[] = $this->render('module', compact('module', 'params'));
}
// render module layout
echo (isset($layout) && $layout)? $this->render("modules/layouts/{$layout}", array('modules' => $output)) : implode("\n", $output);
И вот файл
module.php из директории templates/template_name/layouts/module.php
<?php
// init vars
$id = $module->id;
$position = $module->position;
$title = $module->title;
$showtitle = $module->showtitle;
$content = $module->content;
$split_color = '';
$subtitle = '';
$title_template = '';
// init params
foreach (array('suffix', 'style', 'color', 'badge', 'icon', 'dropdownwidth') as $var) {
$$var = isset($params[$var])? $params[$var] : null;
}
// set default module types
if ($style == '') {
if ($module->position == 'top-a') $style = 'box';
if ($module->position == 'top-b') $style = 'box';
if ($module->position == 'bottom-a') $style = 'box';
if ($module->position == 'bottom-b') $style = 'box';
if ($module->position == 'innertop') $style = 'box';
if ($module->position == 'innerbottom') $style = 'box';
if ($module->position == 'sidebar-a') $style = 'box';
if ($module->position == 'sidebar-b') $style = 'box';
}
// test module styles here
//$style = '';
//$color = '';
//$badge = '';
//$icon = '';
//$title = '';
//$content = '<ul class="line"><li>This is a demo text.</li><li><a href="#">Link</a></li></ul><ul class="zebra"><li>This is a demo text.</li><li><a href="#">Link</a></li></ul><a class="button-default" href="#">Read More</a><ul class="check"><li>Check List</li></ul><em>em Element</em><br /><em class="box">em with class box</em><br /><code>code Element</code><form class="short style"><div><input type="text"></div><div><textarea >Textarea text</textarea></div><div><button type="submit" name="Submit">Log in</button></div></form>';
// force module style
if (in_array($module->position, array('absolute', 'breadcrumbs', 'logo', 'banner', 'search', 'debug'))) {
$style = 'raw';
$showtitle = 0;
}
if (in_array($module->position, array('headerbar', 'toolbar-r' ,'toolbar-l', 'footer'))) {
$style = '';
$showtitle = 0;
}
if ($module->position == 'menu') {
$style = $module->menu ? 'raw' : 'dropdown';
}
// set module template using the style
switch ($style) {
case 'box':
$template = 'default-1';
$style = 'mod-'.$style;
$style .= ($color)? ' mod-box-'.$color : '';
$split_color = 1;
$subtitle = 1;
$title_template = '<h3 class="module-title">%s</h3>';
break;
case 'dropdown':
$template = 'dropdown';
$subtitle = 1;
break;
case 'raw':
$template = 'raw';
break;
default:
$template = 'default-1';
$style = $suffix;
$suffix = '';
$title_template = '<h3 class="module-title">%s</h3>';
}
$style.=" ".$suffix;
// set badge if exists
if ($badge) {
$badge = '<div class="badge badge-'.$badge.'"></div>';
}
// split title in two colors
if ($split_color) {
$pos = mb_strpos($title, ' ');
if ($pos !== false) {
$title = '<span class="color">'.mb_substr($title, 0, $pos).'</span>'.mb_substr($title, $pos);
}
}
// create subtitle
if ($subtitle) {
$pos = mb_strpos($title, '||');
if ($pos !== false) {
$title = '<span class="title">'.mb_substr($title, 0, $pos).'</span><span class="subtitle">'.mb_substr($title, $pos + 2).'</span>';
}
}
// create title icon if exists
if ($icon) {
$title = '<span class="icon icon-'.$icon.'"></span>'.$title.'';
}
// create title template
if ($title_template) {
$title = sprintf($title_template, $title);
}
// set dropdownwidth if exists
if ($dropdownwidth) {
$dropdownwidth = 'style="width: '.$dropdownwidth.'px;"';
}
// render menu
if ($module->menu) {
// set menu renderer
if (isset($params['menu'])) {
$renderer = $params['menu'];
} else if (in_array($module->position, array('menu'))) {
$renderer = 'dropdown';
} else if (in_array($module->position, array('toolbar-l', 'toolbar-r', 'footer'))) {
$renderer = 'default';
} else {
$renderer = 'accordion';
}
// set menu style
if ($renderer == 'dropdown') {
$module->menu_style = 'menu-dropdown';
} else if ($renderer == 'accordion') {
$module->menu_style = 'menu-sidebar';
} else if ($renderer == 'default') {
$module->menu_style = 'menu-line';
} else {
$module->menu_style = null;
}
$content = $this['menu']->process($module, array_unique(array('pre', 'default', $renderer, 'post')));
}
// render module
echo $this->render("modules/templates/{$template}", compact('style', 'badge', 'showtitle', 'title', 'content', 'dropdownwidth'));
В папке templates/template_name/html нет modules.php
В какой из файлов вставить предложенный код? И там, наверное, другой синтаксис будет?
А вот часть template.php
<!DOCTYPE HTML>
<html lang="<?php echo $this['config']->get('language'); ?>" dir="<?php echo $this['config']->get('direction'); ?>">
<head>
<?php echo $this['template']->render('head'); ?>
</head>
<body id="page" class="page <?php echo $this['config']->get('body_classes'); ?>" data-config='<?php echo $this['config']->get('body_config','{}'); ?>'>
<?php if ($this['modules']->count('absolute')) : ?>
<div id="absolute">
<?php echo $this['modules']->render('absolute'); ?>
</div>
<?php endif; ?>
<header id="header">
<div class="wrapper clearfix">
<?php if ($this['modules']->count('toolbar-l + toolbar-r') || $this['config']->get('date')) : ?>
<div id="toolbar" class="clearfix">
<?php if ($this['modules']->count('toolbar-l') || $this['config']->get('date')) : ?>
<div class="float-left">
<?php if ($this['config']->get('date')) : ?>
<time datetime="<?php echo $this['config']->get('datetime'); ?>"><?php echo $this['config']->get('actual_date'); ?></time>
<?php endif; ?>
<?php echo $this['modules']->render('toolbar-l'); ?>
</div>
<?php endif; ?>
<?php if ($this['modules']->count('toolbar-r')) : ?>
<div class="float-right"><?php echo $this['modules']->render('toolbar-r'); ?></div>
<?php endif; ?>
</div>
<?php endif; ?>
<?php if ($this['modules']->count('logo + headerbar')) : ?>
<div id="headerbar" class="clearfix">
<?php if ($this['modules']->count('logo')) : ?>
<div id="logo"><?php echo $this['modules']->render('logo'); ?></div>
<?php endif; ?>
<?php echo $this['modules']->render('headerbar'); ?>
</div>
<?php endif; ?>
Т.е. там тоже модули немного по-другому подключаются?