0 Пользователей и 1 Гость просматривают эту тему.
  • 225 Ответов
  • 345200 Просмотров
*

Mitrich

  • Давно я тут
  • 379
  • 511
  • Все можно. Но сначала учиться, учиться и учиться.
Этот мануал для тех кто уже делал шаблоны для Joomla! 1.0.x
Хотя и новичкам должно быть интересно.

Структура шаблона практически не изменилась.
Шаблоны лежат в папке templates
В папке вашего шаблона обязательно должны находится файлы
index.php и templateDetails.xml (именно так с D в верхнем регистре).

Папки для CSS  и описания своих типов вывода модулей (см. ниже) называются css и html соответственно

Структура выглядит так:
templates
+ my_template
++ css
++ html
++ index.php
++ templateDetails.xml

Файл templateDetails.xml содержит описательную часть шаблона (имя автора,дату создания и т.п.)
и список файлов содержащихся в шаблоне (необходимо для установки шаблона через инсталлятор). Открыв файл templateDetails.xml из существующего шаблона почитайте. Там все предельно ясно
Файл index.php – это собственно и есть шаблон
 
Листинг пустого index.php выглядит так
Код
<?php echo '<?xml version="1.0" encoding="utf-8"?' .'>'; ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="{LANG_TAG}" lang="{LANG_TAG}" dir="{LANG_DIR}" >
<head>
<jdoc:include type="head" />
<link rel="stylesheet" href="templates/{TEMPLATE}/css/template.css" type="text/css" />
</head>
<body> 

</body>
</html> 


Внутри тегов   <body>  </body> находится html содержимое шаблона (возможны включения PHP кода)
 
  Pathway (хлебные крошки)

В Joomla! 1.0.x
Код
<?php echo mosPathWay();?>

В Joomla 1.5
Код
<jdoc:include type="modules" name="breadcrumb" />

  Модули
В Joomla! 1.0.x модули выводились так
Код
<?php mosLoadModules ( 'left',-1); ?> 

Где left : позиция модуля , -1 : тип вывода модуля.

В Joomla! 1.5 вывод модулей осуществляется так
Код
<jdoc:include type="modules" name="right" style="-1" />

type="modules"   говорит о том, что выводится модуль
name="right" указывает на позицию модуля
style="-1" указывает тип вывода модуля
для style="…" появилась возможность указания типа вывода не только цифрами, но и ключевыми словами

style="table" – стандартный вывод модуля в ячейке таблицы

Код
<table cellpadding="0" cellspacing="0" class="moduletable">
  <tr>
    <th valign="top">Module Title</th>
  </tr>
  <tr>
     <td>Module Content</td>
  </tr>
</table>
   
      
style="horz" – горизонтальный вывод
Не увидел разницы со style="table" , хотя в официальном мануале сказано, что формируется горизонтальный вывод модуля

style="xhtml" – вывод модуля в одном DIV с заголовком H3

Код
<div class="moduletable">
 <h3>Module Title</h3>
   Module Content
</div>

style="rounded" – вывод модуля в четырех вложенных DIV ( используется для создания закругленных углов в модулях, подробно о создании закругленных углов можно почитать >>> тут <<<).

Код
<div class="module">
  <div>
    <div>
      <div>
         <h3>Module Title</h3>
Module Content
       </div>
     </div>
   </div>
</div>

style="raw" 
будет выведено содержимое модуля без заголовка ,таблиц и DIVов

В Joomla 1.5 добавлена возможность создавать свои типы вывода модулей
Описание типа вывода модуля находится в файле templates/template_folder/html/modules.php
Имя функции обязательно должно начинаться с modChrome_

Создадим  тип вывода style="example"
В котором модули будут выводиться в таблице шириной 180px,
Заголовок модуля имеет красный фон, текст заголовка выводится в тегах <H3> </H3>
Тело модуля имеет серый фон. Весь текст в верхнем регистре.

Листинг простейшего файла modules.php будет таким

Код
<?php

defined('_JEXEC') or die('Restricted access');

function modChrome_example($module, & $params)
{ ?>
<table width="180px" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td style="background-color:red;"><h3><?php echo $module->title ?></h3></td>
  </tr>
  <tr>
    <td style="background-color:gray; text-transform:uppercase;"><?php echo $module->content ?></td>
  </tr>
</table>
<?php
}
?>

Просторы для фантазии безграничны.


Контент
Вывод контента осуществляется так

В Joomla! 1.0.x
Код
<?php mosMainBody(); ?>

В Joomla! 1.5
Код
<jdoc:include type="component" />

Листинг простейшего index.php трехколоночного шаблона

Код
<?php echo '<?xml version="1.0" encoding="utf-8"?' .'>'; ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="{LANG_TAG}" lang="{LANG_TAG}" dir="{LANG_DIR}" >
<head>
<jdoc:include type="head" />
<link rel="stylesheet" href="templates/{TEMPLATE}/css/template.css" type="text/css" />
</head>
<body>
<table width="100%" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td  class="left"><jdoc:include type="modules" name="left" style="raw"/></td>
    <td class="center"><jdoc:include type="component" /></td>
    <td class="right"><jdoc:include type="modules" name="right" style="raw"/></td>
  </tr>
</table>
</body>
</html>

Трюки с отображением модулей
Спасибо userxp за помощь.Без него я бы не понял как это работает ^-^

Задача:
Для зарегистрированных пользователей выводим модули в right для всех остальных модули в user1
Решение:
После тега <body> пишем
Код
<?php $user =& JFactory::getUser(); ?>

в теле шаблона
Код
<?php if($user->_id) {?>
<jdoc:include type="modules" name="right" style="raw"/>
<?php } else {?>
<jdoc:include type="modules" name="user1" style="raw"/>
<?php }?>


Задача:
Для пользователей группы author выводим модули в right для всех остальных модули в user1
Решение:
После тега <body> пишем
Код
<?php $user =& JFactory::getUser(); ?>

в теле шаблона
Код
<?php if($user->get(‘usertype’) == ‘Author’) {?>
<jdoc:include type="modules" name="right" style="raw"/>
<?php } else {?>
<jdoc:include type="modules" name="user1" style="raw"/>
<?php }?>

Задача:
Вместе с компонентом weblinks выводим модули в user2
Решение:
После тега <body> пишем
Код
<?php  $option = JRequest::getVar( 'option' );?>
в теле шаблона
Код
<?php  if($option == 'com_weblinks') {?>
<jdoc:include type="modules" name="user2" style="raw"/>
<?php } ?>

Некоторые переменные используемые в шаблонах
$mainframe->getCfg('sitename') - имя сайта
$mainframe->getCfg('mailfrom') - e-mail админа
$mainframe->getCfg('live_site') - URL сайта
$this->template - имя папки шаблона
« Последнее редактирование: 18.06.2008, 18:50:28 от Mitrich »
*

beliyadm

  • Профи
  • 8368
  • 1527
  • Севастополь == Россия
Re: [howto] Создание шаблона для Joomla! 1.5
« Ответ #2 : 24.03.2008, 21:20:53 »
Спасибо, очень полезная статья, а как например теперь вставить в шаблон навигатор чтоли, вот раньше было
Код
<?php echo mosPathWay();?>
А сейчас? А форму поиска?
насколько я понимаю то пазвей вставляется так:
Код
<jdoc:include type="modules" name="breadcrumb" />
А форма поиска - это модуль
Все истины, которые я хочу вам изложить, — бесстыдная ложь.
Записки нетрезвого кодера || -=Joomla FAQ=- || -=все плохо=- || skype: beliyadm_pb
*

userxp

  • Практически профи
  • 2054
  • 397
  • Злой и ужасный бармалей
Re: [howto] Создание шаблона для Joomla! 1.5
« Ответ #3 : 26.07.2008, 17:57:16 »
видимо, прийдется добавить комментарии, а то я смотрю, вопросы пошли
насчет позиции модулей
итак, цифры "не канают" :) а потому выводим через определенные заранее функции
в базовой версии Joomla 1.5(.4) доступны следующие типы показов модулей:

front-end
none
table
horz
xhtml
rounded
outline

back-end
none
xhtml
sliders
tabs

при желании, любой тип показа добавляется своей функцией в формате modChrome_ТИП

пример:
function modChrome_sliders($module, &$params, &$attribs)
{
...
}
Как правильно задавать вопрос службе технической поддержки  yes!
SGA CM 7.2.0 RC0 KANG Build GWK74 + s95allinonescript + CWM 5.0.2.6 + Modem XWKT3
*

beliyadm

  • Профи
  • 8368
  • 1527
  • Севастополь == Россия
Re: [howto] Создание шаблона для Joomla! 1.5
« Ответ #4 : 14.08.2008, 18:45:48 »
как вывести мейн меню как например на главной joomlaportal.ru... он ведь выводится не в качестве модуля
кто сказал что не через модуль?
1 - в параметрах модуля меню выставить горизонтальный тип отображения
2 - настраивать CSS
Все истины, которые я хочу вам изложить, — бесстыдная ложь.
Записки нетрезвого кодера || -=Joomla FAQ=- || -=все плохо=- || skype: beliyadm_pb
*

fred

  • Осваиваюсь на форуме
  • 135
  • 13
  • Прошлое лишено смысла
Re: [howto] Создание шаблона для Joomla! 1.5
« Ответ #5 : 16.09.2008, 10:54:42 »
вот в нете надыбал русский мануал с рисунками по созданию шаблона для Joomla 1.5 (в формате *.pdf 37 страниц)   может кому пригодится ;)
http://fred.com.ua/fred/Template_User_Manual_RUS.pdf
« Последнее редактирование: 28.07.2010, 14:32:35 от fred »
Прошлое лишено смысла
*

VETERINAR

  • Живу я здесь
  • 868
  • 151
  • Kiss my shiny metal ass!
Re: [howto] Создание шаблона для Joomla! 1.5
« Ответ #6 : 17.09.2008, 15:30:59 »
$mainframe->getCfg('live_site') - не работает.
*

sega

  • Давно я тут
  • 259
  • 4
Re: [howto] Создание шаблона для Joomla! 1.5
« Ответ #7 : 02.10.2008, 16:01:13 »
а как сделать проверку на главную (в шаблоне), ну то есть чтобы модуль выходил только на главной.
помню что для 1.0 много всяких проверок можно было а как для 1.5?
*

userxp

  • Практически профи
  • 2054
  • 397
  • Злой и ужасный бармалей
Re: [howto] Создание шаблона для Joomla! 1.5
« Ответ #8 : 02.10.2008, 16:10:23 »
$mainframe->getCfg('live_site') - не работает.
а то.
иба
global $mainframe
Как правильно задавать вопрос службе технической поддержки  yes!
SGA CM 7.2.0 RC0 KANG Build GWK74 + s95allinonescript + CWM 5.0.2.6 + Modem XWKT3
*

VETERINAR

  • Живу я здесь
  • 868
  • 151
  • Kiss my shiny metal ass!
*

COF

  • Новичок
  • 8
  • 0
Re: [howto] Создание шаблона для Joomla! 1.5
« Ответ #10 : 03.10.2008, 13:53:06 »
Так как же все таки это вывести:

$mainframe->getCfg('sitename') - имя сайта
$mainframe->getCfg('mailfrom') - e-mail админа
$mainframe->getCfg('live_site') - URL сайта

напишите пожалуйста, кто разобрался, я с Joomla меньше недели всего работаю.
*

beliyadm

  • Профи
  • 8368
  • 1527
  • Севастополь == Россия
Re: [howto] Создание шаблона для Joomla! 1.5
« Ответ #11 : 03.10.2008, 14:00:44 »
Так как же все таки это вывести:
Код: php
<?php
echo $mainframe->getCfg('sitename');
echo $mainframe->getCfg('mailfrom');
echo $mainframe->getCfg('live_site');
?>
Все истины, которые я хочу вам изложить, — бесстыдная ложь.
Записки нетрезвого кодера || -=Joomla FAQ=- || -=все плохо=- || skype: beliyadm_pb
*

COF

  • Новичок
  • 8
  • 0
Re: [howto] Создание шаблона для Joomla! 1.5
« Ответ #12 : 03.10.2008, 14:13:20 »
О, вот так прокатило)

<?
$title = $mainframe->getCfg('sitename');
$title = str_replace( $mosConfig_sitename.' - ', '', $title );
echo $title;
?>

beliyadm

LOL, Спасибо, тупо эхонуть я не попытался)))
*

Mitrich

  • Давно я тут
  • 379
  • 511
  • Все можно. Но сначала учиться, учиться и учиться.
Re: [howto] Создание шаблона для Joomla! 1.5
« Ответ #13 : 09.10.2008, 00:55:03 »
Чуется мне что надо основательно дополнить мысли о шаблоностроении в 1.5
*

7Rei

  • Осваиваюсь на форуме
  • 135
  • 20
Re: [howto] Создание шаблона для Joomla! 1.5
« Ответ #14 : 09.10.2008, 00:59:44 »
Чуется мне что надо основательно дополнить мысли о шаблоностроении в 1.5
Было бы замечательно!!
Плиз, подскажи как сегодня справиться с проблемой или где об этом почитать :)
*

7Rei

  • Осваиваюсь на форуме
  • 135
  • 20
Re: [howto] Создание шаблона для Joomla! 1.5
« Ответ #15 : 09.10.2008, 01:43:52 »
вставил код в модуль и вывел его только для зарегистрированных... ;)
*

Mitrich

  • Давно я тут
  • 379
  • 511
  • Все можно. Но сначала учиться, учиться и учиться.
Re: [howto] Создание шаблона для Joomla! 1.5
« Ответ #16 : 09.10.2008, 01:44:18 »
а я не увидел проблемы

как рекомендация
сделай print_r($user);
и погляди что у него внутри лежит.
*

Gassava

  • Осваиваюсь на форуме
  • 32
  • 0
Re: [howto] Создание шаблона для Joomla! 1.5
« Ответ #17 : 22.11.2008, 20:01:09 »
Скажите а как можно продублировать вывод меню из позиции user3 в позицию footer, ну или новую. Что бы меню было и сверху и снизу. Но не создавая новое меню.
Big SenQ за отзывчивость.
Denwer + Joomla 1.5.3 + JComments 2.0.0.2 + multithumb 2.0 α3 пока все :-)
*

beliyadm

  • Профи
  • 8368
  • 1527
  • Севастополь == Россия
Re: [howto] Создание шаблона для Joomla! 1.5
« Ответ #18 : 22.11.2008, 20:05:18 »
два раза объявить одну позицию, но возможны проблемы с оформлением (ибо стили одни будут применяться)
Все истины, которые я хочу вам изложить, — бесстыдная ложь.
Записки нетрезвого кодера || -=Joomla FAQ=- || -=все плохо=- || skype: beliyadm_pb
*

Gassava

  • Осваиваюсь на форуме
  • 32
  • 0
Re: [howto] Создание шаблона для Joomla! 1.5
« Ответ #19 : 22.11.2008, 20:13:44 »
Ниче не понял, но направление видать верное. Ну а вобще так правильно будит или другой способ выбрать?
Denwer + Joomla 1.5.3 + JComments 2.0.0.2 + multithumb 2.0 α3 пока все :-)
*

7Rei

  • Осваиваюсь на форуме
  • 135
  • 20
Re: [howto] Создание шаблона для Joomla! 1.5
« Ответ #20 : 23.11.2008, 00:04:34 »
два раза объявить одну позицию, но возможны проблемы с оформлением (ибо стили одни будут применяться)
Почему, в шаблоне задать другие стили и проблем не будет!
*

beliyadm

  • Профи
  • 8368
  • 1527
  • Севастополь == Россия
Re: [howto] Создание шаблона для Joomla! 1.5
« Ответ #21 : 23.11.2008, 00:15:15 »
Почему, в шаблоне задать другие стили и проблем не будет!
если товарищ умеет работать с новым шаблонизатором и вообще с наследованием стилей - подобного вопроса бы не последовало :)
Все истины, которые я хочу вам изложить, — бесстыдная ложь.
Записки нетрезвого кодера || -=Joomla FAQ=- || -=все плохо=- || skype: beliyadm_pb
*

r.bak

  • Осваиваюсь на форуме
  • 29
  • 3
Re: [howto] Создание шаблона для Joomla! 1.5
« Ответ #22 : 25.11.2008, 19:21:01 »
Ребята, подскажите. Как в J 1.5 задать позиции для модулей следующего плана.
Скажем, имеем 4 позиции. user1, user2,user3, user4. Задача, вывести их в средней колонке в порядке
user1, user2
user3, user4
Сейчас они отображаються так
user1
user2
user3
user4
Буду благодарен за помощь.
*

beliyadm

  • Профи
  • 8368
  • 1527
  • Севастополь == Россия
Re: [howto] Создание шаблона для Joomla! 1.5
« Ответ #23 : 25.11.2008, 19:22:19 »
сделать таблицу 2*2 ячейки, в каждую по позиции модуля, ну или на дивах (два дива рядом с float: left)
Все истины, которые я хочу вам изложить, — бесстыдная ложь.
Записки нетрезвого кодера || -=Joomla FAQ=- || -=все плохо=- || skype: beliyadm_pb
*

r.bak

  • Осваиваюсь на форуме
  • 29
  • 3
Re: [howto] Создание шаблона для Joomla! 1.5
« Ответ #24 : 25.11.2008, 19:25:13 »
сделать таблицу 2*2 ячейки, в каждую по позиции модуля, ну или на дивах (два дива рядом с float: left)
А любой пример кода можно на дивах?
*

beliyadm

  • Профи
  • 8368
  • 1527
  • Севастополь == Россия
Re: [howto] Создание шаблона для Joomla! 1.5
« Ответ #25 : 25.11.2008, 19:40:57 »
Код: html4strict
<div style="width: 200px; float: left;">user1 и user2 - позиции</div>
<div style="width: 200px; float: left;">user3 и user4 - позиции</div>
При условии, естессно, что родительский контейнер не менее 400 пкс в ширину
Все истины, которые я хочу вам изложить, — бесстыдная ложь.
Записки нетрезвого кодера || -=Joomla FAQ=- || -=все плохо=- || skype: beliyadm_pb
*

r.bak

  • Осваиваюсь на форуме
  • 29
  • 3
Re: [howto] Создание шаблона для Joomla! 1.5
« Ответ #26 : 25.11.2008, 20:41:55 »
что-то не получается. Теперь выводит в две колонки, но следование:
user 1 user 3
user 2 user 4
*

beliyadm

  • Профи
  • 8368
  • 1527
  • Севастополь == Россия
Re: [howto] Создание шаблона для Joomla! 1.5
« Ответ #27 : 25.11.2008, 20:46:22 »
user 1 user 3
user 2 user 4
ну товарищи дорогие, включите соображалку
Код: html4strict
<div style="width: 200px; float: left;">user1 и user3 - позиции</div>
<div style="width: 200px; float: left;">user2 и user4 - позиции</div>
Все истины, которые я хочу вам изложить, — бесстыдная ложь.
Записки нетрезвого кодера || -=Joomla FAQ=- || -=все плохо=- || skype: beliyadm_pb
*

r.bak

  • Осваиваюсь на форуме
  • 29
  • 3
Re: [howto] Создание шаблона для Joomla! 1.5
« Ответ #28 : 25.11.2008, 21:00:18 »
Для начала, beliyadm громадное спасибо за отклик.
Но ведь смысл в том, что если посмотреть с ?tp=1 то позиция нормально объявлена.
Те, возьмем случай только с user1 user2. В этом случае позиции на своих местах, а отображается
user1
user2.
Мой код:
<div id="ja-box" style="width: 50%; float: left;">
         
          <jdoc:include type="modules" name="user1" style="jarounded" />
          <jdoc:include type="modules" name="user2" style="jarounded" />
          </div>
PS. с width играл в разных значениях.
*

r.bak

  • Осваиваюсь на форуме
  • 29
  • 3
Re: [howto] Создание шаблона для Joomla! 1.5
« Ответ #29 : 25.11.2008, 21:03:16 »
А вот листнинг такого вида нормально показывает
 <div id="ja-box" style="width: 50%; float: left;">
         
          <jdoc:include type="modules" name="user1" style="jarounded" />
           </div>
           <div id="ja-box" style="width: 50%; float: right;">
          <jdoc:include type="modules" name="user2" style="jarounded" />
          </div>
      
Чтобы оставить сообщение,
Вам необходимо Войти или Зарегистрироваться
 

Различные условия в шаблонах Joomla 1.5

Автор beliyadm

Ответов: 700
Просмотров: 244116
Последний ответ 31.03.2017, 16:09:14
от Roinmana
Создание новой позиции модуля

Автор Ptalameeya

Ответов: 6
Просмотров: 4502
Последний ответ 01.03.2015, 14:32:36
от Natko23
Уникализация шаблона rhuk_milkyway

Автор zosimov

Ответов: 2
Просмотров: 1362
Последний ответ 23.12.2014, 17:30:14
от zosimov
возможность выбора шаблона пользователем

Автор vampire333

Ответов: 5
Просмотров: 5017
Последний ответ 17.02.2014, 04:24:26
от MrAlexSid
Создание новых стилей вывода модуля в файле modules.php

Автор beliyadm

Ответов: 4
Просмотров: 11809
Последний ответ 24.01.2014, 18:52:18
от faradej