Откомменченное

1110
2009 04 июня

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

logo Основные моменты по созданию наиболее часто употребляемых условий в шаблонах для Joomla 1.5. Для простоты примеров будем работать с стандартным com_content
Для начала рассмотрим получение необходимых параметров, которые в Joomla 1.0 было достаточно объявить как глобальные
1
23
$Itemid = JRequest::getInt( 'Itemid', 1, 'get' ); //получем текущий ItemID, если не определен – то по умолчанию будет 1
$option = JRequest::getVar('option', null); // получаем название текущего компонента, в нашем случае будет com_content либо NULL$view = JRequest::getVar('view', null); // получаем значение текущей вьюшки

Примечания:

- Что такое $Itemid можно прочитать в статье http://joomlaforum.ru/index.php/topic,12816.0.html, по умолчанию значение для главной страницы равно 1, смотреть в модуле mainmenu первую ссылку, либо ссылку, опубликованную в состоянии «по умолчанию»

Какие могут быть значения для $view (Еще может добавляться параметр layout):

Section – если тип ссылки «содержимое раздела» category – если тип ссылки «содержимое категории» либо переходим из раздела «содержимое раздела», либо тип «блог-содержимое категории» article – режим просмотра полного текста материала Как узнать необходимый параметр – отлючить стандартный (или сторонний) SEF и смотреть на URL (до полного просветления). Теперь дальше рассмотрим различные ситуации, что могут понадобиться. Для начала HTML код по умолчанию (обычный трехколоночный макет без шапки и подвала, в центре место для pathway и вывода компонентов, слева\справа по позиции модулей)
1
23
<div class="leftcolumn"><jdoc:include type="modules" name="left" style="xhtml" /></div>
<div class="centercolumn"><jdoc:include type="modules" name="breadcrumb" /><jdoc:include type="component" /></div><div class="rightcolumn"><jdoc:include type="modules" name="right" style="xhtml" /></div>

1 – если на позиции RIGHT не опубликовано ни одного модуля, то не показываем определенный блок сайта

1
23
45
67
<div class="leftcolumn"><jdoc:include type="modules" name="left" style="xhtml" /></div>
<?php if($this->countModules('right')) : ?><div class="centercolumn"><jdoc:include type="modules" name="breadcrumb" /><jdoc:include type="component" /></div>
<div class="rightcolumn"><jdoc:include type="modules" name="right" style="xhtml" /></div><?php else: ?>
<div class="centercolumn_full"><jdoc:include type="modules" name="breadcrumb" /><jdoc:include type="component" /></div><?php endif; ?>
Сакральный смысл – если на позиции нет ни одного модуля, мы не покажем вообще rightcolumn, но чтобы центральная колонка раздвинулась на всю оставшуюся ширину, мы к ней применяем отдельный класс centercolumn_full

2 – мы не хотим показывать pathway (хлебные крошки) на главной странице, а только на внутренних

1
23
45
67
<div class="leftcolumn"><jdoc:include type="modules" name="left" style="xhtml" /></div>
<div class=”centercolumn”><?php if ($Itemid != '1') { ?>
<jdoc:include type="modules" name="breadcrumb" /><?php else { } ?>
<jdoc:include type="component" /></div><div class="rightcolumn"><jdoc:include type="modules" name="right" style="xhtml" /></div>

3 – хотим добавить в центральную колонку модуль (на позиции user1), который будет выводить баннеры (или другую информацию) под текстом статьи, но показывать его только в режиме просмотра полного текста статьи

1
23
45
67
8
<div class="leftcolumn"><jdoc:include type="modules" name="left" style="xhtml" /></div>
<div class="centercolumn"><jdoc:include type="modules" name="breadcrumb" />
<jdoc:include type="component" /></div><?php if (($option == 'com_content') && ($view == 'article')) { ?>
<jdoc:include type="modules" name="user1" style="xhtml" /><?php } else {} ?>
<div class="rightcolumn"><jdoc:include type="modules" name="right" style="xhtml" /></div>

4 – хотим показывать правую колонку (целиком) только для авторизованного пользователя (там будут какие-нибудь модули), а гости будут видеть только левый блок и основной контент

1
23
45
67
<div class="leftcolumn"><jdoc:include type="modules" name="left" style="xhtml" /></div>
<div class="centercolumn"><jdoc:include type="modules" name="breadcrumb" /><jdoc:include type="component" /></div><?php
$user = & JFactory::getUser();if ($user->get('guest') == '1') { } else { ?>
<div class="rightcolumn"><jdoc:include type="modules" name="right" style="xhtml" /></div><?php } ?>

5 – хотим авторизованному пользователю показать приветствие с его именем в правой колонке

1
23
45
6
<div class="leftcolumn"><jdoc:include type="modules" name="left" style="xhtml" /></div>
<div class="centercolumn"><jdoc:include type="modules" name="breadcrumb" /><jdoc:include type="component" /></div><?php
$user = & JFactory::getUser();echo ‘Привет тебе, о великий '.$user->username'; ?>
<div class="rightcolumn"><jdoc:include type="modules" name="right" style="xhtml" /></div>

6 – хотим в произвольном месте шаблона (ну к примеру в левой колонке над модулями) вывести заголовок текущей страницы

1
23
45
67
<div class="leftcolumn">
<?php $document       = & JFactory::getDocument();
echo $document->title; ?><jdoc:include type="modules" name="left" style="xhtml" /></div>
<div class="centercolumn"><jdoc:include type="modules" name="breadcrumb" /><jdoc:include type="component" /></div><div class="rightcolumn"><jdoc:include type="modules" name="right" style="xhtml" /></div>

Дополнительно:

Все необходимые параметры желательно объявить где-нибудь в index.php заранее и дальше только пользоваться. К примеру сразу после вставить
1
23
45
$Itemid = JRequest::getInt( 'Itemid', 1, 'get' );
$option = JRequest::getVar('option', null); $view = JRequest::getVar('view', null); 
$document       = & JFactory::getDocument();$user = & JFactory::getUser();

Дополнительные ссылки:

Accessing the current user object [howto] Создание шаблона для Joomla! 1.5 Шаблонизация для компонентов и модулей, на примере модуля patway и другие ссылки в Joomla FAQ, относящиеся к разделу Шаблоны - установка, создание, проблемные вопросы (много из Joomla 1.0, но много и схожих приемов\примеров) P.S. естественно, что это не открывает Америки и список примеров далеко не полный, но для базовой основы в качестве ответов на 90% вопросов и пищи для размышлений годится
858
2009 02 июня

Разделители стандартного меню при выводе списками UL LI

Древняя проблема движка, перекочевавшая в 1.5 и в joostina Если выставляем публикацию модуля меню через -2 и стилем "плоский список" - он выводится списком UL LI, все прекрасно. Но - не работает опция выставления разделителей между пунктами меню. Работа через CSS не подходит, ибо у последнего пункта разделителя быть не должно. я решаю примитивной модификацией mod_mainmenu.php (это для Joostina && Joomla 1.0)
1
23
45
67
case 1:
        echo '<ul id="'. $menuclass .'">';                foreach ($links as $link) {
                        echo '<li>' . $link . '</li>';                }
        echo '</ul>';break;
заменяю на
1
23
45
67
89
1011
1213
14
case 1:
        echo '<ul id="'. $menuclass .'">';                $spacer_start   = $params->get( 'spacer' );
                $spacer_end     = $params->get( 'end_spacer' );                $n = count($links); $i = '1';
                foreach ($links as $link) {                        if ($i != $n) {
                                $sep = ' class="linksep"';                        } else {$sep = '';}
                        echo '<li'.$sep.'>' . $link . '</li>';                        $i++;
                }        echo '</ul>';
break;
1630
2009 18 мая

Модуль вывода произвольного материала !Joomla 1.5

Простенький модуль, необходимо в настройках модуля указать ID материала и опубликовать на нужной позиции. Будет выведен заголовок материала, вступительный текст и ссылка "читать далее" (текст ссылки настраивается в админке). Формат вывода таков:
1
23
45
67
<ul class="custom_article">
       <li>            <h3>Заголовок материала</h3>
            Вступительный текст            <a href="ссылка на подробнее">Текст ссылки на продолжение</a>
       </li></ul>
Скачать модуль произвольного материала
3429
2009 14 мая

Плагин “Content - Spoiler Text” - скрытый текст в контенте (спойлер)

Плагин Content - Spoiler Text Плагин pb_spoiler ver. 1.0 только для версии !Joomla 1.5 Что это такое - возможность создать в контенте разворачиваемые блоки скрытого текста с эффектом анимации, при этом используется библиотека Jquery и плагин Accordeon от разработчика Jorn Zaefferer

1385
2009 11 мая

Копии модулей, шаблонизация в !Joomla 1.5

Задача - требуется на сайте получить два модуля с одним функционалом, но с разным оформлением (и\или показом разных элементов). В данном примере берём модуль последних новостей mod_latestnews 1 - в файле mod_latestnews.xml добавляем параметр
1
<param name="modtype" type="text" default="" label="Custom type module" description="Custom type module" />
2 - в админке клонируем модуль (чекбокс и кнопка COPY) и задаём значение клона в поле "Custom type module" в "copy1" 3 - в файле mod_latestnews\tmpl\default.php (то есть шаблоне оформления данного модуля) добавляем получение нового параметра и строим условие
1
2
$modtype = $params->get('modtype');
if($modtype == 'copy1') { } else {}
и дальше пишем всё что нам нужно. P.S. согласно возможностям шаблонизатора можно файл default.php создать в каталоге current_template/html/mod_latestnews/default.php и производить действия в нём
770
2009 22 апреля

Мелкие фишки в шаблонах Joomla 1.5

logo Для упрощения жизни себе любимого использую мелкие фишки в index.php шаблона, для памяти и зафиксируем. В дальнейшем список будет пополняться, по мере накопления\вспоминания подобных мелких приятностей
1
23
45
67
89
10
$Itemid         = JRequest::getInt( 'Itemid', 1, 'get' );
$document       = & JFactory::getDocument();$config         = & JFactory::getConfig();
//set correct page title: PAGE TITLE - SITE NAMEif ($Itemid != '1') {
$curtitle = $document->title.' - '.$config->getValue('sitename');$document->setTitle( $curtitle );
} else {}//set var to template files
$tplurl = $config->getValue('live_site').'/templates/'.$document->template;

Все это добро находится сразу после открытия HEAD, по порядку что делаем:
  • получили значение Itemid текущей страницы для формирования заголовка и прочих условий в шаблоне
  • получили массивы $document (текущая страница) и $config (файл конфига), посмотреть содержимое можно распечатав их через print_r
  • сформировали корректный (на мой взгляд для СЕО) заголовок страницы: Заголовок материала - Название сайта (из конфига). Зачем - Joomla 1.5.10 почему то подставляет в титл только заголовок текущей страницы, без названия сайта, что не есть хорошо
  • сформировали переменную с полным путем до файлов шаблона $tplurl, в дальнейшем я очень удобно использую ее, к примеру, для подключения файлов стилей, картинок и прочего
1
<link rel="stylesheet" href="<?php echo $tplurl ?>/css/template.css" type="text/css" />
1751
2009 08 апреля

Системные сообщения frontend !J 1.5

logoПри создании собственного шаблона частенько можно забыть такую вещь, как системные сообщения движка (к примеру после отправки сообщения стандартным компонентом контактов).
Чтобы включить в шаблон их отображение, достаточно в нужном месте index.php шаблона добавить строку
1
<jdoc:include type="message" />
Формированием данных сообщений занимается файл libraries\joomla\document\html\renderer\message.php. К примеру, мне очень не нравилось, что над собственно текстом есть надпись "Сообщение", чтобы ликвидировать требуется закомментировать строку 64 (для версии 1.5.10)
1
$contents .= "\n<dt class=\"".strtolower($type)."\">".JText::_( $type )."</dt>";
Стили CSS (совершенно не понимаю, зачем разработчики здесь используют столь редко встречаемые списки определений DL DD): #system-message - весь блок сообщения #system-message dd.message ul - список, формирующий сообщения #system-message dd.error ul - список, формирующий сообщения об ошибках Данный функционал можно использовать и в своих расширениях, к примеру (взял из контактов для образца) в контроллере редирект на страницу после какого-либо действия (при условии нахождения в языковом файле соответствующей строки, можно просто текст)
1
2
$msg = JText::_( 'Thank you for your e-mail');
$this->setRedirect($link, $msg);
При желании можно заменить эти подсказки на обычные JS алерты, для этого в том же файле libraries\joomla\document\html\renderer\message.php находим кусок
1
23
45
67
89
1011
1213
1415
1617
1819
2021
22
// If messages exist render them
                if (is_array($lists))                {
                        // Build the return string                        $contents .= "\n<dl id=\"system-message\">";
                        foreach ($lists as $type => $msgs)                        {
                                if (count($msgs)) {                                        $contents .= "\n<dt class=\"".strtolower($type)."\">".JText::_( $type )."</dt>";
                                        $contents .= "\n<dd class=\"".strtolower($type)." message fade\">";                                        $contents .= "\n\t<ul>";
                                        foreach ($msgs as $msg)                                        {
                                                $contents .="\n\t\t<li>".$msg."</li>";                                        }
                                        $contents .= "\n\t</ul>";                                        $contents .= "\n</dd>";
                                }                        }
                        $contents .= "\n</dl>";                }
                return $contents;
и заменяем на
1
23
45
67
89
1011
1213
14
if (is_array($lists))
                {                        // Build the return string
                        foreach ($lists as $type => $msgs)                        {
                                if (count($msgs)) {                                        foreach ($msgs as $msg)
                                        {                                                $contents .= '<script language="javascript" type="text/javascript">alert("'.$msg.'")</script>';
                                        }                                }
                        }                }
                return $contents;
Для всех случаев не проверял данный хак, но при регистрации работает
1393
2009 27 марта

Плагин-кнопка для редактора Joomla 1.5

plg_demobutton - простейшая демонстрация реализации плагина, что добавляет кнопку в визуальный редактор для вставки собственных конструкций. Демка добавляет в материал строку < div class="demo-text" / > Обновленная версия плагина 1.1

Описание:

  1. создает в визуальном редакторе пользовательскую кнопку
  2. теги, вставляемые кнопкой настраиваются в админке плагина, просто вписать в поле Button name, по умолчанию вставляет {cbutton}text{/cbutton}
  3. название кнопки также изменяется в настройках, поле Button name
  4. клонировать в админке плагин нельзя, ибо требуется совпадение названия классов с названием плагина
  5. если все таки требуется клонировать, то придется создавать несколько версий плагина, при этом изменять имена (к примеру новая кнопка называется new_button):
  6. class plgButtondemobutton на class plgButtonnew_button function plgButtondemobutton на function plgButtonnew_button function insertDemo на function insertDemoNew
    1
    
    $button->set('onclick', 'insertDemo(\''.$name.'\');return false;');
    на
    1
    
    $button->set('onclick', 'insertDemoNew(\''.$name.'\');return false;');

Надеюсь, что этого функционала для быстрой вставки любого текста в редактор, будет достаточно. У себя тестировал вставкой целой HTML таблицы заданной конфигурации - работает без вопросов, как в режиме визуального редактора, так и обычного текста В качестве быстрого разворачивания каких-либо функций вполне подойдет.

Скачать на Joomlafoum.ru либо зеркало
1291
2009 15 марта

Плагин Hide Guest Content - скрытие контента от гостей - !Joomla 1.5

Обновление - версия для Joomla 1.6 и 1.7 Аналог мамбота mosif версии 1.0.х Что делает - позволяет в материале скрыть часть текста от незарегистрированного пользователя (гостя) - будет выведена предупредительная заглушка. Текст заглушки редактируется в админке плагина. Использование: 1 - установить и опубликовать плагин 2 - в материале нужный блок текста обрамить тегами: {gcontent}скрытый материал для пользователей гостям не виден{/gcontent} 3 - заглушка для гостей заключена в DIV с классом guest_only, возможно настроить оформление предупредительного блока по собственному желанию Текущая версия - 1.0, тестировалось на 1.5.9 в native режиме Скачать на joomlaforum либо зеркало Обновленная версия для 2.5 с разграничением прав доступа по группам пользователей находится здесь
2373
2009 09 марта

Стандартный поиск по отдельным категориям, !Joomla 1.0.xx

logoС подачи пользователя DK-Scorp набросан данный хак. Что делает - добавляет в стандартный компонент поиска движка возможность выбора категории, в которой производить поиск. По умолчанию данный пример работает на выбор всех категорий всех разделов, нужно ограничить - смотрим первый запрос. Топорно но работает (осторожно много хаков :))
Файл search.php компонента, функция viewSearch После строки
1
$ordering = strtolower( strval( mosGetParam( $_REQUEST, 'ordering', 'newest') ) );
добавляем
1
$category = strtolower( strval( mosGetParam( $_REQUEST, 'category', '') ) );
после
1
$lists['searchphrase']= mosHTML::radioList( $searchphrases, 'searchphrase', '', $searchphrase );
добавляем (запрос для образца, прочие проверки публикации, просроченности etc добавляем самостоятельно)
1
23
45
67
89
1011
1213
//category select
    $query = "SELECT id, title "                . "\n FROM #__categories  "
                . "\n WHERE section in (SELECT id FROM #__sections)   "                . "\n AND published = 1 "
                ;        $database->setQuery( $query );
        $catlist = $database->loadObjectList();        $orders = array();
        foreach ($catlist as $catrow) {                $catlists[] = mosHTML::makeOption( $catrow->id, $catrow->title );
        }        $lists['category'] = mosHTML::selectList( $catlists, 'category', ' class="inputbox"', 'value', 'text', $category  );
Ниже находим строку
1
$results = $_MAMBOTS->trigger( 'onSearch', array( $database->getEscaped( $searchword ), $phrase, $ordering) );
и заменяем на
1
$results = $_MAMBOTS->trigger( 'onSearch', array( $database->getEscaped( $searchword ), $phrase, $ordering, $category ) );
Файл search.html.php в функции searchbox добавляем новую строку
1
23
45
67
8
<tr>
        <td colspan="3">                <label for="search_ordering">
                        SELECT CATEGORY:                </label>
                <?php echo $lists['category']?>        </td>
</tr>
В функцию display добавляем строку
1
$category = strtolower( strval( mosGetParam( $_REQUEST, 'category', '' ) ) );
Ну и наконец файл бота content.searchbot.php Дополнительный параметр в функцию
1
function botSearchContent( $text, $phrase='', $ordering='', $category='' )
и в запрос который отмечен комментом "search content items" добавить условие
1
. "\n AND a.catid = ".$category.""
Ну и соответственно если список категорий нужно будет ограничить одним либо несколькими разделами, то смотрим наш первый добавленный запрос, что формирует собственно список Скриншот: Стандартный поиск по отдельным категориям Joomla 1.0.xx
900
2009 04 марта

Пустой компонент для !Joomla 1.5

Набросал на коленке простейший компонент для 1.5 (MVC и не пахнет) com_demo 1.0 1 - установить компонент 2 - в меню создать ссылку на Demo Component 3 - зайти фронтендом на страницу компонента, выбрать дату и посмотреть на результат 4 - посмотреть на файл components\com_demo\demo.php и переделать под себя Качать здесь либо mirror
549
2009 03 марта

Подключаем стандартный календарик в Joomla 1.5

без комментариев ))
1
2
JHTML::_('behavior.calendar'); 
echo JHTML::_('calendar', $cal_var, 'cal_var', 'cal_var', '%Y-%m-%d %H:%M:%S', array('class'=>'inputbox', 'size'=>'25',  'maxlength'=>'19'));
787
2009 28 февраля

Модифицируем mod_latestnews в !Joomla 1.5

К примеру, хотим добавить в модуль дату создания материала, для этого в файле modules\mod_latestnews\helper.php добавляем строку в цикле foreach ( $rows as $row ) {}
1
$lists[$i]->created = htmlspecialchars( $row->created );
И в файле modules\mod_latestnews\tmpl\default.php в нужном месте оформляем вывод:
1
echo $item->created;
1126
2009 27 февраля

Постраничная навигация в компоненте !Joomla 1.5

Всем известно, как добавлять постраничную навигацию в своем компоненте на базе Joomla 1.0.хх Теперь аналогично, но для версии 1.5, вместе с запросом из базы
1
23
45
67
89
1011
$db =& JFactory::getDBO();
$limit   = $mainframe->getUserStateFromRequest("$option.limit", 'limit', 14, 'int'); \\ количество на страницу$limistart  = JRequest::getVar('limitstart', 0, '', 'int'); \\откуда начинаем отсчет
jimport('joomla.html.pagination'); \\подключаем класс$db->setQuery(‘SELECT * FROM jos_content WHERE catid = '1' LIMIT limistart limit  );
$allcount = 'хх'; \\ общее количество записей из запроса$pageNav = new JPagination( $allcount, $limistart, $limit );
foreach($rL as $r) {//результат запроса
}echo $pageNav->getListFooter(  ); //постраничная навигация
Оригинал статьи и расширенные комментарии здесь $pageNav->getListFooter(); - все параметры постраничной навигации $pageNav->getPagesLinks(); - только ссылки туда\обратно и номера страниц echo $pageNav->getPagesCounter(); - страниц 1 из 4 echo $pageNav->getLimitBox(); - выпадающий список сортировки
837
2009 21 февраля

Joomla 1.5.9 и global переменные

Имеем на входе Joomla 1.5.9, php 5.2.4 и функцию
1
23
45
6
$mytest = 'test';
function pb_test() {  global $mytest;
  echo $mytest;}
pb_test ();
В таком виде ничего не работает, но стоит объявить переменную глобально заранее - как все встает на свои места
1
23
45
6
global $mytest; $mytest = 'test';
function pb_test() {  global $mytest;
  echo $mytest;}
pb_test ();
Причину такого поведения не нашел, зафиксирована только на ветке 1.5, на 1.0 либо за пределами движка все работает как и надо. Если кто пояснит идиоту - почему так - буду очень признателен ))
860
2009 18 февраля

Plugin "Content Design Div" - !J1.5

Написан простейший плагин, позволяющий в материале оформлять блоки текста произвольным образом. Достаточно установить плагин и опубликовать, после чего в материале обрамить тегами нужный текст:

1
{cdesign}Ваше содержимое здесь{/cdesign}

Внимание - html форматирование в данном блоке работать не будет. Стили оформления по умолчанию заложены в файле plugins\content\pb_content_design.php. При желании можно усложнить форматирование редактированием функции pb_content_design_replacer все в том же файле

Обновления версии 1.1:

  • версия 1.1 позволяет создавать до 9 стилизованных блоков, для этого необходимо указать параметр style1-style9: {cdesign style1}{/cdesign}, общий вид стилей СSS в таком случае становится .pb_content_design_style1 -> .pb_content_design_style9 (в плагине описаны только первые три)
  • добавлен плагин pb_content_design_btn кнопки в редактор, по умолчанию вставляет теги с параметром style1

Скриншот работы:

Plugin Content Design Div - !Joomla 1.5 Скачать Content Design Div 1.1
Скачать Content Design Div Button (кнопка для редактора)
11216
2009 27 января

Вложения в форме обратной связи стандартного com_contact (!J1.0.хх !J1.5)

Тривиальная задача - в стандартной форме обратной связи сделать возможность прикрепления файлов к письму. Для этого будем использовать стандартную функцию mosMail, у которой, среди прочих, есть параметр $attachment, поскольку вся функция mosmail завязана на phpmailer. Итак по порядку.
Добавляем в components\com_contact\contact.html.php в форму обратной связи кнопку выбора файла
1
<input name="file" type="file" id="file">
Файл components\com_contact\contact.php в функции function sendmail() делаем что-то вроде
1
23
45
67
89
10
//USE STANDART ATTACHMENT FUNCTION
$tempdir = $mosConfig_absolute_path."/images/";$namefile = $_FILES['file']['name'];
$filetemp = $tempdir.$namefile;move_uploaded_file($_FILES['file']['tmp_name'], $tempdir.$namefile);
$attachment = $tempdir.$namefile;$success = mosMail( $email, $name, $contact[0]->email_to, $mosConfig_fromname .': '. $subject, $text, $mode=0, $cc=NULL, $bcc=NULL, $attachment);
if (!$success) { mosErrorAlert( _CONTACT_FORM_NC );
}
Аспекты с загрузкой файла на сервер, проверки типа и формата и прочее - не затрагиваю, ибо пишем по необходимости в каждом конкретном случае. То есть что самое главное - задать значением переменной $attachment как путь к файлу на сервере. В приведенном примере - это файл, загруженный из формы обратной связи. Для Joomla 1.5 класса JMail все в принципе аналогично, почитать можно здесь E-Mail Class. Provides a common interface to send e-mail from the Joomla! Framework Чуть более подробно по 1.5: 1 - В саму форму не забываем добавить enctype="multipart/form-data" 2 - не забываем про абсолютные пути к папке для временного файла
1
$tempdir = JPATH_ROOT."/images/";
3 - собственно функция вложения теперь упрощена, после того как мы получили файл в переменную
1
2
$attachment достаточно написать 
$mail->addAttachment( $attachment );
перед
1
$sent = $mail->Send();
и все, получили почтовое письмо с вложением
694
2008 20 декабря

Мамбот внутренней навигации (Content Item Navigation)

Мамбот внутренней навигации pb_nearest_article

Представляю вашему вниманию маленький, но полезный мамбот pb_nearest_article, заменяющий кнопки "назад - вперед" на сочетание "название предыдущей статьи - название следующей статьи". Мамбот полезен в сфере SEO так и для удобства ориентации посетителей сайта.

Последовательность действий:

- установить и опубликовать мамбот
- в глобальной конфигурации в вкладке CONTENT установить опцию "Content Item Navigation:" в NO

713
2008 19 ноября

Highslide and Mosets Tree

В связи с новым проектом на Joomla 1.5 будем накапливать опыт хаков мосетса, дабы не было ничего забытого. Итак задача - в описании итема сделать сразу вывод всех картинок превьюшек и добавить на onclick js эффект. Изначально имеем уже установленный и настроенный Protos LightBox 1.1 Highslide for Joomla 1.5
Файл components\com_mtree\templates\используемый шаблон\sub_listingDetails.tpl.php Находим строки
1
23
45
67
89
10
if ($this->link->link_image) {
        echo '<div class="thumbnail' . (($this->config->getTemParam('imageDirectionListingSummary','right')=='right') ? '':'-left') . '">';        echo '<a href="' . sefReltoAbs('index.php?option=com_mtree&task=viewimage&img_id=' . $this->link->img_id . '&Itemid=' . $this->Itemid) . '">';
        $this->plugin( 'mt_image', $this->link->link_image, '3', $this->link->link_name );        echo '</a>';
        if( $this->total_images > 1 ) {                echo '<div style="width:' . ($this->config->get('resize_listing_size') + 10) . 'px"><a href="' . sefReltoAbs('index.php?option=com_mtree&task=viewgallery&link_id=' . $this->link->link_id . '&Itemid=' . $this->Itemid) . '">' . $this->_MT_LANG->VIEW_GALLERY . '</a></div>';
        }        echo '</div>';
}
на
1
23
45
foreach ($this->images as $image) {
        echo '<a id="thumb1" class="highslide" onclick="return hs.expand(this)" href="components/com_mtree/img/listings/o/' . $image->filename . '">';                $this->plugin( 'mt_image', $image->filename, '3', $this->link->link_name . ' - ' . $image->filename);
        echo '</a>';}

Откомменченное