Форум русской поддержки Joomla!® CMS
26.05.2017, 17:03:46 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
   
   Начало   Поиск Joomla 3.0 FAQ Joomla 2.5 FAQ Joomla 1.5 FAQ Правила форума Новости Joomla Реклама Войти Регистрация Помощь  
Страниц: [1] 2 3 4 5 6 7 8   Вниз
  Добавить закладку  |  Печать  
Автор

[howto] Создание шаблона для Joomla! 1.5

 (Прочитано 343826 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Mitrich
Давно я тут
****

Репутация: +524/-13
Offline Offline

Пол: Мужской
Сообщений: 379


Все можно. Но сначала учиться, учиться и учиться.


« : 04.01.2007, 15:54:32 »

Этот мануал для тех кто уже делал шаблоны для 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 за помощь.Без него я бы не понял как это работает Smiley

Задача:
Для зарегистрированных пользователей выводим модули в 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 » Записан
 
Blinp
Гость
« Ответ #1 : 24.02.2008, 23:42:51 »

[howto] Создание новой позиции модулей в Joomla 1.5
Записан
beliyadm
Профи
********

Репутация: +1588/-63
Offline Offline

Пол: Мужской
Сообщений: 8430


Севастополь == Россия


« Ответ #2 : 24.03.2008, 22:20:53 »

Спасибо, очень полезная статья, а как например теперь вставить в шаблон навигатор чтоли, вот раньше было
Код:
<?php echo mosPathWay();?>
А сейчас? А форму поиска?
насколько я понимаю то пазвей вставляется так:
Код:
<jdoc:include type="modules" name="breadcrumb" />
А форма поиска - это модуль
Записан
userxp
Практически профи
*******

Репутация: +403/-6
Offline Offline

Пол: Мужской
Сообщений: 2054


Злой и ужасный бармалей


« Ответ #3 : 26.07.2008, 17:57:16 »

видимо, прийдется добавить комментарии, а то я смотрю, вопросы пошли
насчет позиции модулей
итак, цифры "не канают" Azn а потому выводим через определенные заранее функции
в базовой версии 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)
{
...
}
Записан
beliyadm
Профи
********

Репутация: +1588/-63
Offline Offline

Пол: Мужской
Сообщений: 8430


Севастополь == Россия


« Ответ #4 : 14.08.2008, 18:45:48 »

как вывести мейн меню как например на главной joomlaportal.ru... он ведь выводится не в качестве модуля
кто сказал что не через модуль?
1 - в параметрах модуля меню выставить горизонтальный тип отображения
2 - настраивать CSS
Записан
fred
Осваиваюсь на форуме
***

Репутация: +13/-0
Offline Offline

Пол: Мужской
Сообщений: 135


Прошлое лишено смысла


« Ответ #5 : 16.09.2008, 10:54:42 »

вот в нете надыбал русский мануал с рисунками по созданию шаблона для Joomla 1.5 (в формате *.pdf 37 страниц)   может кому пригодится Wink
http://fred.com.ua/fred/Template_User_Manual_RUS.pdf
« Последнее редактирование: 28.07.2010, 14:32:35 от fred » Записан
VETERINAR
Живу я здесь
******

Репутация: +165/-14
Offline Offline

Пол: Мужской
Сообщений: 868


Kiss my shiny metal ass!


« Ответ #6 : 17.09.2008, 15:30:59 »

$mainframe->getCfg('live_site') - не работает.
Записан
sega
Давно я тут
****

Репутация: +4/-0
Offline Offline

Сообщений: 257


« Ответ #7 : 02.10.2008, 16:01:13 »

а как сделать проверку на главную (в шаблоне), ну то есть чтобы модуль выходил только на главной.
помню что для 1.0 много всяких проверок можно было а как для 1.5?
Записан
userxp
Практически профи
*******

Репутация: +403/-6
Offline Offline

Пол: Мужской
Сообщений: 2054


Злой и ужасный бармалей


« Ответ #8 : 02.10.2008, 16:10:23 »

$mainframe->getCfg('live_site') - не работает.
а то.
иба
global $mainframe
Записан
VETERINAR
Живу я здесь
******

Репутация: +165/-14
Offline Offline

Пол: Мужской
Сообщений: 868


Kiss my shiny metal ass!


« Ответ #9 : 02.10.2008, 16:59:45 »

а то.
иба
global $mainframe

Очень смешно.
Записан
COF
Новичок
*

Репутация: +0/-0
Offline Offline

Пол: Мужской
Сообщений: 8


« Ответ #10 : 03.10.2008, 13:53:06 »

Так как же все таки это вывести:

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

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

Репутация: +1588/-63
Offline Offline

Пол: Мужской
Сообщений: 8430


Севастополь == Россия


« Ответ #11 : 03.10.2008, 14:00:44 »

Так как же все таки это вывести:
Код
<?php
echo $mainframe->getCfg('sitename');
echo $mainframe->getCfg('mailfrom');
echo $mainframe->getCfg('live_site');
?>
Записан
COF
Новичок
*

Репутация: +0/-0
Offline Offline

Пол: Мужской
Сообщений: 8


« Ответ #12 : 03.10.2008, 14:13:20 »

О, вот так прокатило)

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

beliyadm

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

Репутация: +524/-13
Offline Offline

Пол: Мужской
Сообщений: 379


Все можно. Но сначала учиться, учиться и учиться.


« Ответ #13 : 09.10.2008, 00:55:03 »

Чуется мне что надо основательно дополнить мысли о шаблоностроении в 1.5
Записан
7Rei
Осваиваюсь на форуме
***

Репутация: +20/-0
Offline Offline

Пол: Мужской
Сообщений: 135


« Ответ #14 : 09.10.2008, 00:59:44 »

Чуется мне что надо основательно дополнить мысли о шаблоностроении в 1.5
Было бы замечательно!!
Плиз, подскажи как сегодня справиться с проблемой или где об этом почитать Azn
Записан
7Rei
Осваиваюсь на форуме
***

Репутация: +20/-0
Offline Offline

Пол: Мужской
Сообщений: 135


« Ответ #15 : 09.10.2008, 01:43:52 »

вставил код в модуль и вывел его только для зарегистрированных... Wink
Записан
Mitrich
Давно я тут
****

Репутация: +524/-13
Offline Offline

Пол: Мужской
Сообщений: 379


Все можно. Но сначала учиться, учиться и учиться.


« Ответ #16 : 09.10.2008, 01:44:18 »

а я не увидел проблемы

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

Репутация: +0/-0
Offline Offline

Пол: Мужской
Сообщений: 32



« Ответ #17 : 22.11.2008, 21:01:09 »

Скажите а как можно продублировать вывод меню из позиции user3 в позицию footer, ну или новую. Что бы меню было и сверху и снизу. Но не создавая новое меню.
Big SenQ за отзывчивость.
Записан
beliyadm
Профи
********

Репутация: +1588/-63
Offline Offline

Пол: Мужской
Сообщений: 8430


Севастополь == Россия


« Ответ #18 : 22.11.2008, 21:05:18 »

два раза объявить одну позицию, но возможны проблемы с оформлением (ибо стили одни будут применяться)
Записан
Gassava
Осваиваюсь на форуме
***

Репутация: +0/-0
Offline Offline

Пол: Мужской
Сообщений: 32



« Ответ #19 : 22.11.2008, 21:13:44 »

Ниче не понял, но направление видать верное. Ну а вобще так правильно будит или другой способ выбрать?
Записан
7Rei
Осваиваюсь на форуме
***

Репутация: +20/-0
Offline Offline

Пол: Мужской
Сообщений: 135


« Ответ #20 : 23.11.2008, 01:04:34 »

два раза объявить одну позицию, но возможны проблемы с оформлением (ибо стили одни будут применяться)
Почему, в шаблоне задать другие стили и проблем не будет!
Записан
beliyadm
Профи
********

Репутация: +1588/-63
Offline Offline

Пол: Мужской
Сообщений: 8430


Севастополь == Россия


« Ответ #21 : 23.11.2008, 01:15:15 »

Почему, в шаблоне задать другие стили и проблем не будет!
если товарищ умеет работать с новым шаблонизатором и вообще с наследованием стилей - подобного вопроса бы не последовало Azn
Записан
r.bak
Осваиваюсь на форуме
***

Репутация: +3/-0
Offline Offline

Сообщений: 29


« Ответ #22 : 25.11.2008, 20:21:01 »

Ребята, подскажите. Как в J 1.5 задать позиции для модулей следующего плана.
Скажем, имеем 4 позиции. user1, user2,user3, user4. Задача, вывести их в средней колонке в порядке
user1, user2
user3, user4
Сейчас они отображаються так
user1
user2
user3
user4
Буду благодарен за помощь.
Записан
beliyadm
Профи
********

Репутация: +1588/-63
Offline Offline

Пол: Мужской
Сообщений: 8430


Севастополь == Россия


« Ответ #23 : 25.11.2008, 20:22:19 »

сделать таблицу 2*2 ячейки, в каждую по позиции модуля, ну или на дивах (два дива рядом с float: left)
Записан
r.bak
Осваиваюсь на форуме
***

Репутация: +3/-0
Offline Offline

Сообщений: 29


« Ответ #24 : 25.11.2008, 20:25:13 »

сделать таблицу 2*2 ячейки, в каждую по позиции модуля, ну или на дивах (два дива рядом с float: left)
А любой пример кода можно на дивах?
Записан
beliyadm
Профи
********

Репутация: +1588/-63
Offline Offline

Пол: Мужской
Сообщений: 8430


Севастополь == Россия


« Ответ #25 : 25.11.2008, 20:40:57 »

Код
<div style="width: 200px; float: left;">user1 и user2 - позиции</div>
<div style="width: 200px; float: left;">user3 и user4 - позиции</div>
При условии, естессно, что родительский контейнер не менее 400 пкс в ширину
Записан
r.bak
Осваиваюсь на форуме
***

Репутация: +3/-0
Offline Offline

Сообщений: 29


« Ответ #26 : 25.11.2008, 21:41:55 »

что-то не получается. Теперь выводит в две колонки, но следование:
user 1 user 3
user 2 user 4
Записан
beliyadm
Профи
********

Репутация: +1588/-63
Offline Offline

Пол: Мужской
Сообщений: 8430


Севастополь == Россия


« Ответ #27 : 25.11.2008, 21:46:22 »

user 1 user 3
user 2 user 4
ну товарищи дорогие, включите соображалку
Код
<div style="width: 200px; float: left;">user1 и user3 - позиции</div>
<div style="width: 200px; float: left;">user2 и user4 - позиции</div>
Записан
r.bak
Осваиваюсь на форуме
***

Репутация: +3/-0
Offline Offline

Сообщений: 29


« Ответ #28 : 25.11.2008, 22: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
Осваиваюсь на форуме
***

Репутация: +3/-0
Offline Offline

Сообщений: 29


« Ответ #29 : 25.11.2008, 22: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>
      
Записан
Страниц: [1] 2 3 4 5 6 7 8   Вверх
  Добавить закладку  |  Печать  
 
Перейти в:  

Powered by SMF 1.1.21 | SMF © 2006, Simple Machines

Joomlaforum.ru is not affiliated with or endorsed by the Joomla! Project or Open Source Matters.
The Joomla! name and logo is used under a limited license granted by Open Source Matters
the trademark holder in the United States and other countries.

LiveInternet