- Сообщений: 47
- Спасибо получено: 3
Как создать и настроить свой веб-сервер на VDS (05 сен 2024)
Осенью самое время заняться установкой и тюнингом своего веб-сервера. Не правда ли?
Разработка шаблонов под joomla. Продолжаем тему
- anatole
- Автор темы
- Не в сети
- Захожу иногда
Less
Больше
13 года 9 мес. назад - 13 года 9 мес. назад #1
от anatole
anatole создал тему: Разработка шаблонов под joomla. Продолжаем тему
Как скрыть позицию модуля, если в ней нет активных модулей?
А если позиций несколько?
Как отобразить позицию только для авторизованного пользователя?
А - только для гостя?
А если нужно отобразить позицию для определённой группы, например для «Author»?
А - для конкретного пользователя, например для пользователя с ником «qwerty»?
Как вывести логин пользователя?
Как отобразить позицию в определённом компоненте, например в компоненте «Контакты»?
Как вывести позицию при определённом Itemid, например «35»?
Как показать позицию только на главной странице сайта?
Более универсальное решение (определяет пункт меню, у которого стоит метка «По умолчанию»):
Следует заметить, что все используемые параметры типа:
нужно писать вначале index.php но не перед:
и только один раз, а вот данные этих параметров возможно использовать любое количество раз.
Теперь - о внутреннем оформлении модулей, имея ввиду HTML-код, генерирующий позиции модулей (пространство имён jdoc). По умолчанию Joomla 1.5 имеет 6 способов генерации кода. Способ генерации указывается в атрибуте «style», например:
Рассмотрим все 6 способов более подробно:
1) style=«rounded» — выводит модуль в четырёх вложенных div'ах, для создания закруглённых углов (на самом деле сейчас эта технология устарела, есть менее ресурсоёмкие способы):
2) style=«table» — выводит модуль в таблице:
3) style=«horz» — выводит модуль горизонтально в ячейке окружающей таблицы:
4) style=«xhtml» — выводит модуль в одном div-элементе:
5) style=«none» — выводит модуль без форматирования:
6) style=«outline» — выводит модуль с названием позиции модуля; словно также, когда к адресу сайта добавляется параметр «tp=1» для просмотра имеющихся позиций модулей в шаблоне:
Несмотря на наличие 6 способов - на практике обычно используются только два: «xhtml» и «none». Бывают ситуации когда этого недостаточно для реализации какой-либо цели. Что делать? Разумеется, читать документацию и благодарить разработчиков Joomla, которые позаботились даже об этом и предоставили нам возможность создавать свои типы модулей (пользовательские модули). Чтобы определить пользовательский модуль - мы должны в каталоге с шаблоном создать каталог «html» и положить туда файл «modules.php». В этом файле необходимо определить функцию, называемую «modChrome_STYLE», где «STYLE» — это имя нашего пользовательского модуля. Эта функция будет принимать три аргумента: $module, &$params и &$attribs:
В рамках этой функции может быть использовано любое модульное свойство (в т.ч. и параметры, которые содержатся в таблице «jos_modules» вашей БД). Основными же. являются:
— $module->content — переменная выводит содержимое модуля;
— $module->showtitle — переменная возвращает значение 1, если в настройках модуля разрешено показывать заголовок модуля, иначе — 0;
— $module->title — переменная выводит заголовок модуля.
Рассмотрим небольшой пример, в котором показан способ проверки отображения заголовка модуля, а также вывод самого заголовка в случае положительного результата:
Параметры модуля можно использовать через объект $params. Например вывод суффикса класса модуля (по умолчанию это значение хранится в параметре «moduleclass_sfx») осуществляется следующим способом:
Теперь практика. Создадим пользовательский модуль, назовём его «custom» (это значит, что при использования его в шаблоне нужно будет написать style=«custom» в <jdoc:include />). Ну а толку да от такого модуля? Нужно сделать что-то интересное, чтобы почувствовать действительную необходимость пользовательских модулей! Сделаем первое слово в заголовке модуля красным цветом, а все остальные слова — цветом по умолчанию, описанному в стилях:
Как уже отмечалось выше, пользовательская функция принимает три аргумента. Для чего нужны два -см. выше, остался последний — &$attribs. Как уже стало понятно, разработчики не остановились на достигнутой гибкости и решили дать возможность использовать дополнительные параметры, которые хранятся в массиве $attribs. Рассмотрим пример:
Затем необходимо установить значения в <jdoc:include />, если этого не сделать, будут использоваться значения по умолчанию: цвет синий, размер заголовка третий. Значения задаются таким образом:
1) <jdoc:include type=«modules» name=«user1» style=«custom» background=«green» /> — задаём значение цвета: background=«green»;
2) <jdoc:include type=«modules» name=«user1» style=«custom» headerLevel=«1» background=«yellow» /> — задаём значение размера заголовка и цвета: headerLevel=«1» и background=«yellow».
Следует помнить что всё здесь описанное - для шаблонов: некоторые вещи будут работать и в компонента и в модулях, но далеко не все.
Как вывести URL-адрес сайта?
Как вывести название сайта?
Как вывести e-mail администратора?
Как вывести текущую дату?
Форматирование даты можно подсмотреть в мануале.
Как вывести заголовок текущей страницы?
Как в зависимости от времени суток отображать тот или иной шаблон?
Если шаблоны отличаются только стилями (css) то можно просто от времени суток подгружать тот или иной стиль, например так:
Если шаблоны координатно разные то слить (подправить пути там где нужно) шаблоны в один каталог и переименовать файл index.php обеих шаблонов; например в index-day.php и index-night.php. Создать index.php и написать в нём:
Как сделать свои страницы ошибок?
По умолчанию Joomla 1.5 использует специальные файл "/templates/system/error.php" для вывода ошибок с кодами статуса: 403, 404, 500. Если мы хотим изменить этот файл - необходимо скопировать его в каталог с нашим шаблоном, а также - скопировать файл стилей из "/templates/system/css/error.css" в каталог со стилями шаблона и в «error.php» подредактировать путь к новому файлу стилей. После этого можно править их как угодно. Всё это нужно для того, в частности, чтобы не возникало проблем при обновлении Joomla.
Теперь - пример. Например для кода ошибки 404 выведем соответствующее сообщение:
Для чего нужен файл «params.ini» в каталоге с шаблоном?
Этот файл служит для записи параметров шаблона, которые задаются в панели управления шаблоном, а описываются в файле «templateDetails.xml». Например сделаем возможность в параметрах шаблона задавать фон шаблона. В «templateDetails.xml» добавим секцию для параметров и сам параметр:
Теперь в тег BODY шаблона добавим атрибут CLASS и получим:
А в стилях шаблона опишем классы:
Code:
<?php if($this->countModules('user1') : ?>
<div id="user1">
<jdoc:include type="modules" name="user1" style="xhtml" />
</div>
<?php endif ?>
А если позиций несколько?
Code:
<?php if($this->countModules('user1 or user2 or user3') : ?>
<div id="users">
<?php if($this->countModules('user1') : ?>
<div id="user1">
<jdoc:include type="modules" name="user1" style="xhtml" />
</div>
<?php endif ?>
<?php if($this->countModules('user2') : ?>
<div id="user2">
<jdoc:include type="modules" name="user2" style="xhtml" />
</div>
<?php endif ?>
<?php if($this->countModules('user3') : ?>
<div id="user3">
<jdoc:include type="modules" name="user3" style="xhtml" />
</div>
<?php endif ?>
</div>
<?php endif ?>
Code:
<?php
$user =& JFactory::getUser();
?>
<?php if(!$user->guest) : ?>
<div id="user1">
<jdoc:include type="modules" name="user1" style="xhtml" />
</div>
<?php endif ?>
Code:
<?php
$user =& JFactory::getUser();
?>
<?php if($user->guest) : ?>
<div id="user1">
<jdoc:include type="modules" name="user1" style="xhtml" />
</div>
<?php endif ?>
Code:
<?php
$user =& JFactory::getUser();
?>
<?php if($user->get('usertype') == 'Author') : ?>
<div id="user1">
<jdoc:include type="modules" name="user1" style="xhtml" />
</div>
<?php endif ?>
А - для конкретного пользователя, например для пользователя с ником «qwerty»?
Code:
<?php
$user =& JFactory::getUser( 'qwerty' );
?>
<?php if($user->id) : ?>
<div id="user1">
<jdoc:include type="modules" name="user1" style="xhtml" />
</div>
<?php endif ?>
Как вывести логин пользователя?
Code:
<?php
$user =& JFactory::getUser();
?>
<?php if($user->id) : ?>
<div id="user1">
<?php echo $user->get('username') ?>
</div>
<?php endif ?>
Как отобразить позицию в определённом компоненте, например в компоненте «Контакты»?
Code:
<?php
$option = JRequest::getVar( 'option' );
?>
<?php if($option == 'com_contact') : ?>
<div id="user1">
<jdoc:include type="modules" name="user1" style="xhtml" />
</div>
<?php endif ?>
Как вывести позицию при определённом Itemid, например «35»?
Code:
<?php
$itemid = JRequest::getInt( 'Itemid' );
?>
<?php if($itemid == '35') : ?>
<div id="user1">
<jdoc:include type="modules" name="user1" style="xhtml" />
</div>
<?php endif ?>
Как показать позицию только на главной странице сайта?
Code:
<?php
$option = JRequest::getVar( 'option' );
$id = JRequest::getInt( 'id' );
?>
<?php if($option == 'com_content' && !$id) : ?>
<div id="user1">
<jdoc:include type="modules" name="user1" style="xhtml" />
</div>
<?php endif ?>
Code:
<?php
$menu =& JSite::getMenu();
?>
<?php if ($menu->getActive() == $menu->getDefault()) : ?>
<div id="user1">
<jdoc:include type="modules" name="user1" style="xhtml" />
</div>
<?php endif ?>
Следует заметить, что все используемые параметры типа:
Code:
$menu =& JSite::getMenu();
$user =& JFactory::getUser();
$option = JRequest::getVar( 'option' );
$itemid = JRequest::getInt( 'Itemid' );
нужно писать вначале index.php но не перед:
Code:
defined( '_JEXEC' ) or die( 'Restricted access' );
и только один раз, а вот данные этих параметров возможно использовать любое количество раз.
Теперь - о внутреннем оформлении модулей, имея ввиду HTML-код, генерирующий позиции модулей (пространство имён jdoc). По умолчанию Joomla 1.5 имеет 6 способов генерации кода. Способ генерации указывается в атрибуте «style», например:
Code:
<jdoc:include type="modules" name="top" style="none" />
Рассмотрим все 6 способов более подробно:
1) style=«rounded» — выводит модуль в четырёх вложенных div'ах, для создания закруглённых углов (на самом деле сейчас эта технология устарела, есть менее ресурсоёмкие способы):
Code:
<div class="module_menu">
<div>
<div>
<div>
<h3>Main Menu</h3>
<ul class="menu">
<li><!-- various menu items --></li>
</ul>
</div>
</div>
</div>
</div>
2) style=«table» — выводит модуль в таблице:
Code:
<table cellpadding="0" cellspacing="0" class="moduletable_menu">
<tr>
<th valign="top">Main Menu</th>
</tr>
<tr>
<td>
<ul class="menu">
<li><!-- various menu items --></li>
</ul>
</td>
</tr>
</table>
3) style=«horz» — выводит модуль горизонтально в ячейке окружающей таблицы:
Code:
<table cellspacing="1" cellpadding="0" border="0" width="100%">
<tr>
<td valign="top">
<table cellpadding="0" cellspacing="0" class="moduletable_menu">
<tr>
<th valign="top">Main Menu</th>
</tr>
<tr>
<td>
<ul class="menu">
<li><!-- various menu items --></li>
</ul>
</td>
</tr>
</table>
</td>
</tr>
</table>
4) style=«xhtml» — выводит модуль в одном div-элементе:
Code:
<div class="moduletable_menu">
<h3>Main Menu</h3>
<ul class="menu">
<li><!-- various menu items --></li>
</ul>
</div>
5) style=«none» — выводит модуль без форматирования:
Code:
<ul class="menu">
<li><!-- various menu items --></li>
</ul>
6) style=«outline» — выводит модуль с названием позиции модуля; словно также, когда к адресу сайта добавляется параметр «tp=1» для просмотра имеющихся позиций модулей в шаблоне:
Code:
<div class="mod-preview">
<div class="mod-preview-info">left[outline]</div>
<div class="mod-preview-wrapper">
<ul class="menu">
<li><!-- various menu items --></li>
</ul>
</div>
</div>
Несмотря на наличие 6 способов - на практике обычно используются только два: «xhtml» и «none». Бывают ситуации когда этого недостаточно для реализации какой-либо цели. Что делать? Разумеется, читать документацию и благодарить разработчиков Joomla, которые позаботились даже об этом и предоставили нам возможность создавать свои типы модулей (пользовательские модули). Чтобы определить пользовательский модуль - мы должны в каталоге с шаблоном создать каталог «html» и положить туда файл «modules.php». В этом файле необходимо определить функцию, называемую «modChrome_STYLE», где «STYLE» — это имя нашего пользовательского модуля. Эта функция будет принимать три аргумента: $module, &$params и &$attribs:
Code:
<?php
defined('_JEXEC') or die('Restricted access');
function modChrome_STYLE( $module, &$params, &$attribs )
{
/* chromed Module output goes here */
}
?>
В рамках этой функции может быть использовано любое модульное свойство (в т.ч. и параметры, которые содержатся в таблице «jos_modules» вашей БД). Основными же. являются:
— $module->content — переменная выводит содержимое модуля;
— $module->showtitle — переменная возвращает значение 1, если в настройках модуля разрешено показывать заголовок модуля, иначе — 0;
— $module->title — переменная выводит заголовок модуля.
Рассмотрим небольшой пример, в котором показан способ проверки отображения заголовка модуля, а также вывод самого заголовка в случае положительного результата:
Code:
<?php
if ($module->showtitle)
{
echo '<h2>' .$module->title .'</h2>';
}
?>
Параметры модуля можно использовать через объект $params. Например вывод суффикса класса модуля (по умолчанию это значение хранится в параметре «moduleclass_sfx») осуществляется следующим способом:
Code:
<div class="moduletable<?php echo $params->get( 'moduleclass_sfx' ); ?>">
<!-- div contents -->
</div>
Теперь практика. Создадим пользовательский модуль, назовём его «custom» (это значит, что при использования его в шаблоне нужно будет написать style=«custom» в <jdoc:include />). Ну а толку да от такого модуля? Нужно сделать что-то интересное, чтобы почувствовать действительную необходимость пользовательских модулей! Сделаем первое слово в заголовке модуля красным цветом, а все остальные слова — цветом по умолчанию, описанному в стилях:
Code:
<?php
defined('_JEXEC') or die('Restricted access');
function modChrome_custom($module, &$params, &$attribs)
{ ?>
<div class="moduletable<?php echo $params->get('moduleclass_sfx'); ?>">
<?php if ($module->showtitle) : ?>
<h3>
<?php
$title = $module->title;
$title = split(' ', $title);
$title[0] = '<span style="color:red">'.$title[0].'</span>';
$title = implode(' ', $title);
echo $title;
?>
</h3>
<?php endif; ?>
<div>
<?php echo $module->content; ?>
</div>
</div>
<?php }
?>
Как уже отмечалось выше, пользовательская функция принимает три аргумента. Для чего нужны два -см. выше, остался последний — &$attribs. Как уже стало понятно, разработчики не остановились на достигнутой гибкости и решили дать возможность использовать дополнительные параметры, которые хранятся в массиве $attribs. Рассмотрим пример:
Code:
<?php
defined('_JEXEC') or die('Restricted access');
function modChrome_custom( $module, &$params, &$attribs ) {
if (isset( $attribs['headerLevel'] ))
{
$headerLevel = $attribs['headerLevel'];
} else {
$headerLevel = 3;
}
if (isset( $attribs['background'] ))
{
$background = $attribs['background'];
} else {
$background = 'blue';
}
?>
<div class="moduletable<?php echo $params->get( 'moduleclass_sfx' ); ?>">
<?php
if ($module->showtitle)
{
echo '<h' .$headerLevel .'>' .$module->title .'</h' .$headerLevel .'>';
}
?>
<div class="<?php echo $background; ?>">
<?php echo $module->content; ?>
</div>
</div>
<?php
}
?>
Затем необходимо установить значения в <jdoc:include />, если этого не сделать, будут использоваться значения по умолчанию: цвет синий, размер заголовка третий. Значения задаются таким образом:
1) <jdoc:include type=«modules» name=«user1» style=«custom» background=«green» /> — задаём значение цвета: background=«green»;
2) <jdoc:include type=«modules» name=«user1» style=«custom» headerLevel=«1» background=«yellow» /> — задаём значение размера заголовка и цвета: headerLevel=«1» и background=«yellow».
Следует помнить что всё здесь описанное - для шаблонов: некоторые вещи будут работать и в компонента и в модулях, но далеко не все.
Как вывести URL-адрес сайта?
Code:
<?php echo JURI::base() ?>
Как вывести название сайта?
Code:
<?php echo $mainframe->getCfg('sitename') ?>
Как вывести e-mail администратора?
Code:
<?php echo $mainframe->getCfg('mailfrom') ?>
Как вывести текущую дату?
Code:
<?php echo JHTML::Date( 'now', '%d | %m | %Y' ) ?>
Форматирование даты можно подсмотреть в мануале.
Как вывести заголовок текущей страницы?
Code:
<?php
$document =& JFactory::getDocument();
echo $document->title;
?>
Как в зависимости от времени суток отображать тот или иной шаблон?
Если шаблоны отличаются только стилями (css) то можно просто от времени суток подгружать тот или иной стиль, например так:
Code:
<link rel="stylesheet" href="<?php echo $this->baseurl ?>/templates/vekta/css/<?php echo (date("%H")>=7 && date("%H")<19) ? "day" : "night" ?>.css" type="text/css" />
Если шаблоны координатно разные то слить (подправить пути там где нужно) шаблоны в один каталог и переименовать файл index.php обеих шаблонов; например в index-day.php и index-night.php. Создать index.php и написать в нём:
Code:
<?php
// no direct access
defined( '_JEXEC' ) or die( 'Restricted access' );
if (date("%H") >= '7' && date("%H") < '18') {
require 'index-day.php';
} else {
require 'index-night.php';
}
?>
Как сделать свои страницы ошибок?
По умолчанию Joomla 1.5 использует специальные файл "/templates/system/error.php" для вывода ошибок с кодами статуса: 403, 404, 500. Если мы хотим изменить этот файл - необходимо скопировать его в каталог с нашим шаблоном, а также - скопировать файл стилей из "/templates/system/css/error.css" в каталог со стилями шаблона и в «error.php» подредактировать путь к новому файлу стилей. После этого можно править их как угодно. Всё это нужно для того, в частности, чтобы не возникало проблем при обновлении Joomla.
Теперь - пример. Например для кода ошибки 404 выведем соответствующее сообщение:
Code:
<?php if ($this->error->code = '404') { ?>
<div id="errorboxheader">Ошибка 404: Странница не найдена</div>
<div id="errorboxbody">
<p>К сожалению, странница, которую вы запрашивали, не найдена.</p>
</div>
</div>
<?php } ?>
Для чего нужен файл «params.ini» в каталоге с шаблоном?
Этот файл служит для записи параметров шаблона, которые задаются в панели управления шаблоном, а описываются в файле «templateDetails.xml». Например сделаем возможность в параметрах шаблона задавать фон шаблона. В «templateDetails.xml» добавим секцию для параметров и сам параметр:
Code:
<params>
<param name="backgroundVariation" type="list" default="blue" label="Background Variation" description="Background color variation to use">
<option value="blue">Blue</option>
<option value="red">Red</option>
<option value="green">Green</option>
<option value="orange">Orange</option>
<option value="black">Black</option>
<option value="white">White</option>
</param>
</params>
Теперь в тег BODY шаблона добавим атрибут CLASS и получим:
Code:
<body class="color_<?php echo $this->params->get('colorVariation') ?>">
А в стилях шаблона опишем классы:
Code:
.color_blue {color:#3796cf;}
.color_red {color:#ff1d1d;}
.color_green {color:#438f29;}
.color_orange {color:#ff8712;}
.color_black {color:#000000;}
.color_white {color:#ffffff;}
Последнее редактирование: 13 года 9 мес. назад пользователем anatole.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- prividenie
- Не в сети
- Заблокирован
Less
Больше
- Сообщений: 2
- Спасибо получено: 0
12 года 1 мес. назад - 12 года 1 мес. назад #2
от prividenie
prividenie ответил в теме Разработка шаблонов под joomla. Продолжаем тему
Могу посоветовать отличный сайт, на котором вы можете разместить для продажи свои шаблоны joomla. Отличный сайт. Продавать свои работы очень просто и удабно.
Примечание модератора. Ссылка удалена.
Примечание модератора. Ссылка удалена.
Последнее редактирование: 12 года 1 мес. назад пользователем Aleksej.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- Aleksej
- Не в сети
- Модератор
12 года 1 мес. назад - 12 года 1 мес. назад #3
от Aleksej
Aleksej ответил в теме Разработка шаблонов под joomla. Продолжаем тему
prividenie, ставлю вас в известность о том, что ссылка в первом же сообщении только что зарегистрировавшегося пользователя по традиции приравнивается в Сети к спаму. Со всеми вытекающими отсюда печальными выводами... К слову - вся реклама на нашем сайте является делом сугубо коммерческим, обращайтесь.
Последнее редактирование: 12 года 1 мес. назад пользователем Aleksej.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- prividenie
- Не в сети
- Заблокирован
Less
Больше
- Сообщений: 2
- Спасибо получено: 0
12 года 1 мес. назад - 12 года 1 мес. назад #4
от prividenie
prividenie ответил в теме Разработка шаблонов под joomla. Продолжаем тему
если тут есть фрилансеры, то у меня для вас хорошее предложение...
Примечание. Отредактировано модератором.
Примечание. Отредактировано модератором.
Последнее редактирование: 12 года 1 мес. назад пользователем Aleksej.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.
- Aleksej
- Не в сети
- Модератор
12 года 1 мес. назад #5
от Aleksej
Aleksej ответил в теме Разработка шаблонов под joomla. Продолжаем тему
Привидения, троллей и прочую нечисть у нас на форуме принято кропить святой водой.... в полном соответствии, так сказать, с традициями. Трах-тебедох-тебедох - и все тебе ок, никаких троллей.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.