Сайт - http://zolotaia-geisha.com/index.php/ru/about-kennel.html Подскажите, пожалуйста, как добавить шапку с изображением над статичным горизонтальным меню, чтобы контент прокручивался под него аналогично тому, как он уходит под верхнее меню. Спасибо.
вообще сначала неужно в шаблоне создать блок!! и выставить его так как нужно Вам. а затем вставить <jdoc:include type="modules" name="XXX" /> а затем templateDetails вставить <position>XXX</position>
Здравствуйте, при добавлении в index.php jdoc'a сайт не открывается... пишет ошибка 500 вроде... подскажите куда вставлять jdoc? вот полная копия моего файла index.php <?php // no direct access defined( '_JEXEC' ) or die( 'Restricted access' ); include_once (dirname(__FILE__).DS.'libs'.DS.'gk.template.helper.php'); $tmpl = GKTemplateHelper::getInstance($this, array('ui', GK_TOOL_SCREEN, GK_TOOL_MENU, 'main_layout', 'direction')); //Calculate the width of template $tmplWidth = ''; $tmplWrapMin = '100%'; switch ($tmpl->getParam(GK_TOOL_SCREEN)){ case 'auto': $tmplWidth = '97%'; break; case 'fluid': $tmplWidth = intval($tmpl->getParam('gk_screen-fluid-fix-gk_screen_width')); $tmplWidth = $tmplWidth ? $tmplWidth.'%' : '90%'; break; case 'fix': $tmplWidth = intval($tmpl->getParam('gk_screen-fluid-fix-gk_screen_width')); $tmplWrapMin = $tmplWidth ? ($tmplWidth+1).'px' : '771px'; $tmplWidth = $tmplWidth ? $tmplWidth.'px' : '770px'; break; default: $tmplWidth = intval($tmpl->getParam(GK_TOOL_SCREEN)); $tmplWrapMin = $tmplWidth ? ($tmplWidth+1).'px' : '983px'; $tmplWidth = $tmplWidth ? $tmplWidth.'px' : '982px'; break; } $tmpl->setParam ('tmplWidth', $tmplWidth); $tmpl->setParam ('tmplWrapMin', $tmplWrapMin); //Main navigation $gk_menutype = $tmpl->getMenuType(); $gkmenu = null; if ($gk_menutype && $gk_menutype != 'none') { $gkparams = new JParameter(''); $gkparams->set( 'menutype', $tmpl->getParam('menutype', 'mainmenu') ); $gkparams->set( 'menu_images_align', 'left' ); $gkparams->set( 'menupath', $tmpl->templateurl() .'/gk_menus'); $gkparams->set('menu_images', 0); //0: not show image, 1: show image which set in menu item $gkparams->set('menu_background', 1); //0: image, 1: background $gkparams->set('mega-colwidth', 200); //Megamenu only: Default column width $gkparams->set('mega-style', 1); //Megamenu only: Menu style. $gkparams->set('rtl',($tmpl->getParam('direction')=='rtl' || $tmpl->direction == 'rtl')); $gkmenu = $tmpl->loadMenu($gkparams, $gk_menutype); } //End for main navigation $layout = $tmpl->getLayout (); if ($layout) { $tmpl->display($layout); } function gkCSSReplace(){ $buf = JResponse::getBody(); preg_match_all('/\<link.*href=".*(modules|components).*\/\>/', $buf, $matches); for($i = 0; $i < count($matches[0]); $i++){ $buf = str_replace($matches[0][$i], '', $buf); } $startpoint = strpos($buf, '</title>'); $startpoint += 8; $buf_start = substr($buf, 0, $startpoint); $buf_end = substr($buf, $startpoint); $buf_links = ''; for($i = 0; $i < count($matches[0]); $i++) { $link_to_add = $matches[0][$i]; if(preg_match('/styleIE6/', $matches[0][$i])) { $link_to_add = '<!--[if IE 6]>' . $link_to_add . '<![endif]-->'; } if(preg_match('/styleIE7/', $matches[0][$i])) { $link_to_add = '<!--[if IE 7.0]>' . $link_to_add . '<![endif]-->'; } $buf_links .= $link_to_add; } $buf = $buf_start . $buf_links . $buf_end; JResponse::setBody($buf); } $dispatcher = &JDispatcher::getInstance(); $dispatcher->register('onAfterRender', 'gkCSSReplace');
Добавлять нужно в index.php шаблона. Вы выложили не тот файл. \localhost\www\название сайта \templates\название шаблона\index.php
боюсь что все выложил правильно, возможно поэтому и не могу понять = ( \intercable.su\www\templates\gk_mystore_dark\index.php
На других шаблонах мне все понятно и спокойно все можно добавить и там нормальный index.php с jdoc'ами... Но мне нужен именно этот шаблон = ( вот что в файле template.helpe r.php ПРИШЛОСЬ ОБРЕЗАТЬ КОД(а именно начало), ибо пишет слишком большое сообщение... Но все равно я почти уверен, что данный фаил не причем... Код (PHP): <?php urn $modules?$_tpl->countModules ($modules):0; } function definePosition ($positions) { $this->_positions = $positions; //parse layout $this->_colwidth = array(); //Left $l = 0; $left1 = $this->getPositionName ('left1'); $left2 = $this->getPositionName ('left2'); $mt = $this->getPositionName ('left-mass-top'); $mb = $this->getPositionName ('left-mass-bottom'); if ($this->countModules ("$mt") || $this->countModules ("$mb") || $this->countModules ("$left1") || $this->countModules ("$left2") ){ $l = $this->getColumnBasedWidth ('left'); } //right $r = 0; $right1 = $this->getPositionName ('right1'); $right2 = $this->getPositionName ('right2'); $mt = $this->getPositionName ('right-mass-top'); $mb = $this->getPositionName ('right-mass-bottom'); if ($this->countModules ("$mt") || $this->countModules ("$mb") || $this->countModules ("$right1") || $this->countModules ("$right2") ){ $r = $this->getColumnBasedWidth ('right'); } //inset $inset1 = $this->getPositionName ('inset1'); $inset2 = $this->getPositionName ('inset2'); $i1=$i2=0; if ($this->countModules("$inset1")) $i1 = $this->getColumnBasedWidth ('inset1'); if ($this->countModules("$inset2")) $i2 = $this->getColumnBasedWidth ('inset2'); //width $this->_colwidth ['r'] = $r; $this->_colwidth ['mw'] = 100 - $r; $m = 100 - $l - $r; $this->_colwidth ['l'] = ($l + $m)?round($l * 100 / ($l + $m)):0; $this->_colwidth ['m'] = 100 - $this->_colwidth ['l']; $c = $m - $i1 - $i2; $this->_colwidth ['i2'] = round($i2 * 100 / $m); $this->_colwidth ['cw'] = 100 - $this->_colwidth ['i2']; $this->_colwidth ['i1'] = ($c+$i1)?round($i1 * 100 / ($c+$i1)):0; $this->_colwidth ['c'] = 100 - $this->_colwidth ['i1']; } function customwidth ($name, $width) { if (!isset ($this->_customwidth)) $this->_customwidth = array(); $this->_customwidth [$name] = $width; } function getColumnBasedWidth ($name) { if ($this->isContentEdit()) return 0; return (isset ($this->_customwidth) && isset ($this->_customwidth[$name]) && $this->_customwidth[$name]) ? $this->_customwidth[$name]:$this->_basewidth; } function getPositionName ($name) { if (isset ($this->_positions[$name])) return trim($this->_positions[$name]); return ''; } function hasPosition ($name) { return $this->countModules ($this->getPositionName ($name)); } function getColumnWidth ($name) { if (isset($this->_colwidth [$name])) return ($this->_colwidth [$name]/* - ($this->isIE() ? 0.1 : 0)*/); return null; } /** * * Function for CSS/JS compression * */ function useCache($cache_css, $overwrite = false) { $document =& JFactory::getDocument(); $scripts = array(); $css_urls = array(); if($cache_css) { foreach ($document->_styleSheets as $strSrc => $strAttr ) { if(!preg_match('/\?.{1,}$/', $strSrc)) { $srcurl = $this->cleanUrl($strSrc); if (!$srcurl) continue; //remove this css and add later unset ($document->_styleSheets [$strSrc]); $path = str_replace ('/', DS, $srcurl); $css_urls[] = array (JPATH_SITE.DS.$path, JURI::base(true).'/'.$srcurl); } } } /*if($cache_js) { foreach ($document->_scripts as $strSrc => $strType) { if(!preg_match('/\?.{1,}$/', $strSrc)) { $srcurl = $this->cleanUrl ($strSrc); if (!$srcurl) continue; unset ($document->_scripts [$strSrc]); $path = str_replace ('/', DS, $srcurl); $scrips[] = array (JPATH_SITE.DS.$path, JURI::base(true).'/'.$srcurl); } } }*/ if($cache_css) { $url = $this->optimizecss($css_urls, $overwrite); if ($url) $document->addStylesheet($url); else{ foreach ($css_urls as $urls) $document->addStylesheet($url[1]); //re-add stylesheet to head } } /*if($cache_js) { $url = $this->optimizejs($scrips); if ($url) $scrips = array(array('', $url)); foreach ($scrips as $url) $document->addScript ($url[1]); //re-add stylesheet to head }*/ } function cleanUrl ($strSrc) { if (preg_match ('/^https?\:/', $strSrc)) { if (!preg_match ('#^'.preg_quote(JURI::base()).'#', $strSrc)) return false; //external css $strSrc = str_replace (JURI::base(), '', $strSrc); } else if (preg_match ('/^\//', $strSrc)) { if (!preg_match ('#^'.preg_quote(JURI::base(true)).'#', $strSrc)) return false; //same server, but outsite website $strSrc = preg_replace ('#^'.preg_quote(JURI::base(true)).'#', '', $strSrc); } $strSrc = str_replace ('//', '/', $strSrc); $strSrc = preg_replace ('/^\//', '', $strSrc); return $strSrc; } function optimizecss ($css_urls, $overwrite = false) { $content = ''; $files = ''; jimport('joomla.filesystem.file'); foreach ($css_urls as $url) { $files .= $url[1]; //join css files into one file $content .= "/* FILE: {$url[1]} */\n".$this->compresscss(@JFile::read ($url[0]), $url[1])."\n\n"; } $file = md5 ($files).'.css'; $url = $this->store_file ($content, $file, $overwrite); return $url; } /*function optimizejs ($js_urls) { $content = ''; $files = ''; jimport('joomla.filesystem.file'); foreach ($js_urls as $url) { $files .= $url[1]; //join css files into one file $content .= "/* FILE: {$url[1]} *//*\n".$this->compressjs(@JFile::read ($url[0]), $url[1])."\n\n"; } $file = md5 ($files).'.js'; $url = $this->store_file ($content, $file); return $url; }*/ function compresscss($data, $url) { global $current_css_url; //if ($url[0] == '/') $url = JURI::root(false, '').substr($url, 1); $current_css_url = $url; /* remove comments */ $data = preg_replace('!/\*[^*]*\*+([^/][^*]*\*+)*/!', '', $data); /* remove tabs, spaces, new lines, etc. */ $data = str_replace(array("\r\n", "\r", "\n", "\t", ' ', ' ', ' '), ' ', $data); /* remove unnecessary spaces */ $data = preg_replace ('/[ ]+([{};,:])/', '\1', $data); $data = preg_replace ('/([{};,:])[ ]+/', '\1', $data); /* remove empty class */ $data = preg_replace ('/(\}([^\}]*\{\})+)/', '}', $data); /* replace url*/ $data = preg_replace_callback ('/url\(([^\)]*)\)/', array('GKTemplateHelper1', 'replaceurl'), $data); return $data; } /*function compressjs($data, $url) { return $data; }*/ function replaceurl ($matches) { $url = str_replace (array('"', '\''), '', $matches[1]); global $current_css_url; $url = GKTemplateHelper1::converturl ($url, $current_css_url); return "url('$url')"; } function converturl ($url, $cssurl) { $base = dirname ($cssurl); if (preg_match ('/^(\/|http)/', $url)) return $url; /*absolute or root*/ while (preg_match ('/^\.\.\//', $url)) { $base = dirname ($base); $url = substr ($url, 3); } $url = $base.'/'.$url; return $url; } function store_file ($data, $filename, $overwrite = false) { $path = JPATH_SITE.DS.'cache'.DS.'gk'; if (!is_dir ($path)) @JFolder::create ($path); $path = $path.DS.$filename; $url = JURI::base(true).'/cache/gk/'.$filename; if (is_file ($path) && !$overwrite) return $url; @file_put_contents($path, $data); return is_file ($path)?$url:false; } /** * * Functions from GK Framework * */ function checkComponent() { $menu = & JSite::getMenu(); $result = !(($this->_tpl->params->get("frontpage") == 1) ? false : ($menu->getActive() == $menu->getDefault())); return (!isset($_POST['option'])) ? $result : true; } function checkMainbody() { return (($this->_tpl->params->get('mainbody_pos') != 0) && $this->countModules("mainbody") > 0); } function fontFamily($n, $g = 'none'){ if($g != 'none' && $this->_tpl->params->get('font_method') == 2){ $gfont = $g; $gfont = str_replace(':bold','',$gfont); $gfont = str_replace(':italic','',$gfont); $gfont = str_replace(':bolditalic','',$gfont); return '\''.str_replace('+', ' ', $gfont).'\', Arial, sans-serif'; }else{ switch($n) { case 1: return 'Verdana, Geneva, sans-serif';break; case 2: return 'Georgia, "Times New Roman", Times, serif';break; case 3: return 'Arial, Helvetica, sans-serif';break; case 4: return 'Impact, Arial, Helvetica, sans-serif';break; case 5: return 'Tahoma, Geneva, sans-serif';break; case 6: return '"Trebuchet MS", Arial, Helvetica, sans-serif';break; case 7: return '"Arial Black", Gadget, sans-serif';break; case 8: return '"Times New Roman", Times, serif';break; case 9: return '"Palatino Linotype", "Book Antiqua", Palatino, serif';break; case 10: return '"Lucida Sans Unicode", "Lucida Grande", sans-serif';break; case 11: return '"MS Serif", "New York", serif';break; case 12: return '"Comic Sans MS", cursive';break; case 13: return '"Courier New", Courier, monospace';break; case 14: return '"Lucida Console", Monaco, monospace';break; default: return '';break; } } } function lessCSS($file){ if($this->getParam('less_php',0)){ // check if LESS.js is enabled jimport('joomla.filesystem.file'); if(JFile::exists($this->templatepath().DS.'less'.DS.str_replace('/',DS, $file).'.less')){ // check if file duplicate written in LESS exists require_once('lessc.inc.php'); try { lessc::ccompile($this->templatepath().DS.'less'.DS.str_replace('/',DS, $file).'.less', $this->templatepath().DS.'less'.DS.str_replace('/',DS, $file).'.css'); } catch (exception $ex) { exit('lessc fatal error:<br />'.$ex->getMessage()."\n FILE:".$file); } echo '<link rel="stylesheet" href="'.$this->templateurl().'/less/'.$file.'.css" type="text/css" />'."\n"; }else{ echo '<link rel="stylesheet" href="'.$this->templateurl().'/css/'.$file.'.css" type="text/css" />'."\n"; } }else{ echo '<link rel="stylesheet" href="'.$this->templateurl().'/css/'.$file.'.css" type="text/css" />'."\n"; } } } make_object_extendable ('GKTemplateHelper');
Ну а шаблон выводит из массива позиции .Нет времени разбираться в коде,но больше похоже на вызов методов разметки шаблона.
nenabul, что у вас за шаблон, можно его где нибудь посмотреть (если не секрет конечно) Интересно, потому что какие-то необычные у него файлы.
А что необычного - клубный шаблон, от Gavik - MyStore. У клубов обычно для создания шаблонов используются собственные фреймворки и их код отличается от стандартных достаточно значительно. Gavik насколько мне известно для Joomla 1.5 использовал T3 Framework от JoomlArt а начиная с версии J1.7 сделали свой - Gavern Framework. Читайте документацию, разбирайтесь.