Советы, рекомендации и помощь при разработке.
Разработка сайта на joomla
Постановка задачи:
Сделать сайт с форумом, каталогом организаций (который имеет фильтрацию по колонкам и поиск), статьями (новости, одиночные материалы, события), фото галереей, рейтингом статей, комментированием и личным кабинетом.
1) В качестве форума был выбран компонент “Agora”.
2) Так как будет необходим рейтинг статей, точная средняя оценка статей (для выявления победителя при участии в конкурсах), также добавление статей пользователями, то стандартный компонент материалов не подойдёт, поэтому я выбрал компонент “com_resource” от “Mighty Extensions”. Там есть возможность всего этого, да к тому же отпадет необходимость устанавливать дополнительные компоненты галерей и видео, потому что всё это можно настроить в “com_resource”.
Также в нём можно будет гибко реализовать личный кабинет и настроить любые типы материалов и поля в них.
3) Был предоставлен HTML шаблон, купленный на templatemonsters.com
Начало разработки:
Для начала я изучил шаблон, на следующем скриншоте я выделил блоки, которые изменил в первую очередь.
Пункты 1,2 – текст логотипа и слоган, где слоган должен генерироваться каждый раз разный. Текст логотипа я сделал через переменную “$mainframe->getCfg(’sitename’)” – она берёт текст из конфигурации сайта, т.е. переменная содержит название сайта.
Случайно выводящийся слоган был сделан следующим образом:
В административной панели, через менеджер модулей был установлен модуль ‘Произвольный HTML-код’, в котором были размещены слоганы, разделённые двумя символами “точка с запятой”. Чтобы слоган начал выводиться, был создан стиль модуля в файле “имя_шаблона/html/modules.php“
-
-
function modChrome_slogan($module, &$params, &$attribs)
-
{
-
$headerLevel = isset($attribs[‘headerLevel’]) ? (int) $attribs[‘headerLevel’] : 3;
-
if (!empty ($module->content)) :
-
$text = $module->content;
-
$texts = explode(";;",$text);
-
$num = mt_rand(0,count($texts)-1);
-
echo $texts[$num];
-
endif;
-
}
-
Чтобы в шаблоне вывести модуль с определённым стилем, нужно вывести следующий код:
<jdoc:include type="modules" name="slogan" style="slogan" />
Где имя стиля это название функции после “modChrome_” в файле “имя_шаблона/html/modules.php“. После этих манипуляций у нас будет выводиться случайный слоган на странице.
Следующим пунктом было меню, оно, естественно не влазило в вёрстку, в силу особенностей длины слов. Пришлось разделить меню на две строки, однако лучше было поставить несколько пунктов в первую строку. Для этого, в обычном меню после нескольких пунктов был вставлен тип пункта меню “Разделитель” и соответственно отстилизован так, чтобы последующие пункты “сползли” вниз.
Под четвертым пунктом скриншота подразумевалась стилизация стандартного модуля меню под структуру слайдера. В меню всё также, как обычно создаём пункты, единственное в пункте “Параметры – Система” нужно выбрать картинку для слайдера. Эти изображения должны быть загружены в папку “\images\stories”, чтобы была возможность выбрать их.
В созданном модуле для этого меню, в пункте “Другие Параметры” нужно поставить “Да”, напротив “Показывать иконки меню”.
Также, чтобы подогнать структуру меню под структуру шаблона слайдера, был написан небольшой jQuery скрипт:
-
jQuery(function(){
-
jQuery(‘ul#sliderul’).addClass(‘kwicks horizontal’).removeClass(‘menu’);
-
var num = jQuery(‘#sliderul li’).size();
-
-
for (var i = 1; i < num+1; i++)
-
{
-
var n = i-1;
-
var text = jQuery(‘ul#sliderul li:eq(’+ n +‘) a span’).html();
-
var img = jQuery(‘ul#sliderul li:eq(’+ n +‘) img’).attr(’src’);
-
var link = jQuery(‘ul#sliderul li:eq(’+ n +‘) a’).attr(‘href’);
-
jQuery(‘ul#sliderul li:eq(’+ n +‘) a’).replaceWith("<a href=’"+ link +"’><img src=’" + img + "’ /></a><span><b>" + text + "</b></span>");
-
jQuery(‘ul#sliderul li:eq(’+ n +‘)’).attr(‘id’,"kwick_"+ i);
-
}
-
});
Модуль новостей из 5 пункта меню в скриншоте сделан из стандартного модуля “mod_latestnews“, но там по умолчанию выводится только ссылка на новость. Чтобы сделать вывод текста и даты в этом модуле, нужно немного поправить хэлпер этого модуля “modules\mod_latestnews\helper.php“, а именно, после строки
-
$lists[$i]->text = htmlspecialchars( $row->title );
Вставить следующий код:
-
-
$lists[$i]->intro = $row->introtext;
-
$lists[$i]->full = $row->fulltext;
-
$lists[$i]->publish = $row->publish_up;
-
Эти переменные передадут в шаблон модуля вступительный текст, полный текст и дату публикации. После всего этого нужно сделать дату нужного нам формата и обрезать вступительный текст, думаю следующий код (шаблон модуля новостей) будет понятен и без объяснений:
-
<?php // @version $Id: default.php 10381 2008-06-01 03:35:53Z pasamio $
-
defined(‘_JEXEC’) or die(‘Restricted access’);
-
jimport( ‘joomla.utilities.date’ );
-
?>
-
-
<?php if (count($list)) : ?>
-
<!– <ul class="latestnews<?php echo $params->get(’pageclass_sfx’); ?>"><li class="latestnews<?php echo $params->get(’pageclass_sfx’); ?>"></li></ul> –>
-
<ul class="list-2">
-
<?php foreach ($list as $item) : ?>
-
<?php
-
$publish = $item->publish;
-
$datePub = new JDate($publish);
-
-
$fullText = strip_tags($item->intro.$item->full,‘p’);
-
$full = mb_substr($fullText,0,185,‘utf-8′);
-
?>
-
<li><strong> <em><?php echo $datePub->toFormat(‘%d’); ?></em> <i><?php echo $datePub->toFormat(‘%b’); ?></i> </strong> <a href="<?php echo $item->link; ?>"><b><?php echo $item->text; ?></b></a><p><?php echo $full.‘…’; ?></p></li>
-
<?php endforeach; ?>
-
</ul>
-
<a href="<?php echo JRoute::_(’index.php?option=com_content&view=section&id=3&Itemid=4′); ?>" class="link">Все новости</a>
-
<div class="clear"></div>
-
<?php endif;
-
Продолжение следует…

07/02/2011 - 10:50
доброе утро
впервые делаю сайт, выбрал Джумлу 1.6
нашел вашу статью … интересует вопрос составления каталога организаций
когда план опубликовать продолжение?
Спасибо
08/02/2011 - 18:17
Доброго времени суток, планировал написать в течении этой недели (скорее всего в выходных выложу). Однако, текущие статьи ориентированы на joomla 1.5. Пока считаю 1,6 немного сыроватой, чтобы делать на ней что-то более-менее серьезное
11/04/2011 - 20:57
[url=http://blenrexfida.narod.ru/Rezultati-anglijskaya-dieta.html]Результаты английская диета[/url]
[url=http://blenrexfida.narod.ru/Francuzskie-koktejli-dlya-poxudeniya.html]Французские коктейли для похудения[/url]
[url=http://blenrexfida.narod.ru/Kakaya-dieta-mozhet-pomoch-psoriazu.html]Какая диета может помочь псориазу[/url]
[url=http://blenrexfida.narod.ru/Dieta-5-recepti-bljud.html]Диета 5 рецепты блюд[/url]
[url=http://blenrexfida.narod.ru/Pri-pomoschi-chego-mozhno-bistro-poxudet.html]При помощи чего можно быстро похудеть[/url]
[url=http://blenrexfida.narod.ru/Dieta-pri-gemoroj.html]Диета при геморой[/url]
[url=http://blenrexfida.narod.ru/Kak-poxudet-bez-posledstvij-dlya-organizma.html]Как похудеть без последствий для организма[/url]