Может ли разумный человек,
учитывая опыт прошедших веков,
питать хоть малейшую надежду на светлое будущее человечества? Может, если свяжется с мной!

861
2009 19 октября

Создаем AJAX поиск по сайту (jquery)

Итак, общие аспекты создания поиска по сайту с применением AJAX. В чем суть - при вводе\удалении каждого символа в поле поиска обращаемся к БД и показываем совпадения Рабочий пример http://www.rcoi.net/beta/ (справа вверху поле поиска) Автор идеи Marco Kuiper На деталях останавливаться не буду, кому интересно без проблем разберутся
1 - подключаем Jquery (я беру с гугля версию 1.3.2)
1
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
2 - в HEAD шаблона подключаем следующий JS
1
23
45
67
89
1011
1213
14
function lookup(inputString) {
        if(inputString.length == 0) {                $('#suggestions').fadeOut(); 
        } else {                        $.post("index.php?option=com_pbajax&task=ajaxsearch&no_html=1", {queryString: ""+inputString+""}, function(data) { 
                        $('#suggestions').fadeIn();                        $('#suggestions').html(data); 
                });        }
         $("input").blur(function(){
                $('#suggestions').fadeOut();         });
}
В моем случае я использую собственный компонент com_pbajax с набором определенных тасков, один из которых ajaxsearch и обрабатывает результаты поиска его код ниже 3 - модифицируем шаблон модуля поиска, в моем случае он выглядит так (готовый хтмл на выходе)
1
23
45
<form action="index.php"  method="post" class="search" name="zform">
        <input name="searchword" id="inputString" onkeyup="lookup(this.value);" maxlength="20" class="inputbox" type="text" size="20" value="поиск по сайту"  onblur="if(this.value=='') this.value='поиск по сайту';" onfocus="if(this.value=='поиск по сайту') this.value='';" />        <input type="hidden" name="option" value="com_search" />
        <input type="hidden" name="task"   value="search" /></form>
То есть по событию onkeyup вызываем нашу функцию lookup и отдаем ей на обработку введенное значение 4 - и собственно код обработчика (в моем случае это компонент com_pbajax и в нем кейс ajaxsearch
1
23
45
67
89
1011
1213
1415
1617
1819
2021
2223
2425
2627
2829
3031
3233
3435
3637
3839
4041
4243
4445
4647
4849
5051
5253
5455
5657
5859
6061
6263
6465
6667
case 'ajaxsearch';
                $queryString    = JRequest::getVar( 'queryString', 1, 'post' ); 
                $db     = JFactory::getDBO();                $user   =& JFactory::getUser();
                 require_once(JPATH_SITE.DS.'components'.DS.'com_content'.DS.'helpers'.DS.'route.php');
                require_once(JPATH_SITE.DS.'libraries/phputf8/utf8.php'); 
                $nullDate       = $db->getNullDate();                $date           =& JFactory::getDate();
                $now            = $date->toMySQL(); 
                $query = 'SELECT a.*, '                . ' CASE WHEN CHAR_LENGTH(a.alias) THEN CONCAT_WS(":", a.id, a.alias) ELSE a.id END as slug,'
                . ' CASE WHEN CHAR_LENGTH(cc.alias) THEN CONCAT_WS(":", cc.id, cc.alias) ELSE cc.id END as catslug'                . ' FROM #__content AS a'
                . ' INNER JOIN #__categories AS cc ON cc.id = a.catid'                . ' INNER JOIN #__sections AS s ON s.id = a.sectionid'
                . ' WHERE a.title LIKE "%'.$queryString.'%" OR a.introtext LIKE "%'.$queryString.'%" '                . ' AND a.state = 1'
                . ' AND cc.published = 1'                . ' AND s.published = 1'
                . ' AND a.access <= '.(int) $user->get( 'aid' )                . ' AND cc.access <= '.(int) $user->get( 'aid' )
                . ' AND s.access <= '.(int) $user->get( 'aid' )                . ' AND ( a.publish_up = '.$db->Quote($nullDate).' OR a.publish_up <= '.$db->Quote($now).' )'
                . ' AND ( a.publish_down = '.$db->Quote($nullDate).' OR a.publish_down >= '.$db->Quote($now).' )'                . ' ORDER BY title  LIMIT 10'
                ; 
                if ($queryString != '') {                        $db->setQuery($query);
                        $rows = $db->loadObjectList();                        $html = '<div id="searchresults">';
                $n = count($rows);                $i = '1';
                        if ($n) {                                $html .= '<ul class="searchresultsli">';
                                foreach ( $rows as $row )                                        {
                                                $link = ContentHelperRoute::getArticleRoute($row->slug, $row->catslug, $row->sectionid); 
                                                $class = '';                                                if ($i%'2'=='0') {
                                                        $class = 'odd';                                                } else {
                                                    $class = 'even';                                                }
                                                 $html .= '<li class="'.$class.'">';
                                                $html .= $i.' - ';                                                $title = str_replace($queryString, '<span class="highlight">'.$queryString.'</span>', utf8_strtolower($row->title));
                                                $html .= '<a href="'.$link.'">'.$title.'</a>';                                                $html .= '</li>';
                                                $i++;                                        }
                                $html .= '</ul>';                        } else {
                        $html .= 'По Вашему запросу ничего не найдено';                        }
                        $html .= '</div>';                } else {}
                 echo $html;
         break;
Чуть пошагово: 1 - подключили роутер контента и utf8.php для отработки utf8_strtolower (можете этого и не делать) 2 - запрос вытягивает заголовок материала и вступительный текст на предмет поиска совпадений с ключевым запросом $queryString 3 - регуляркой обрабатываем заголовок и подсвечиваем искомое слово в выдаче (в моем случае результат выдается только заголовком, потому если совпадение с $queryString найдено в introtext то в заголовке выдачи подсвечивать нечего) 4 - добавляем классы odd\even для чередования строк (можно и на квери делать, но почему то стало лень) 5 - в нужное место вешаем див для показа результатов поиска, у меня он висит в индексе шаблона
1
<div id="suggestions"></div>
И оформляем CSS стили положение блока и собственно результатов поиска
1
23
45
67
89
/* AJAX search */
#suggestions { position: absolute; width:350px; display:none; z-index: 100; right: 20px; top: 75px;}#suggestions {border: 1px solid #ABD2DE; background-color: #DEEFF4; padding: 10px;text-align: left; color: #1F579A; font-size: 12px;}
#suggestions a, #suggestions li {color: #1F579A; font-size: 12px; text-decoration: none;}#suggestions a:hover {text-decoration: underline;}
ul.searchresultsli, ul.searchresultsli li {margin: 0px; padding: 0px; background-image: none; list-style: none;}ul.searchresultsli li {padding: 7px 5px 7px 3px;}
ul.searchresultsli li.odd {background-color: #F4F1E1;}a.highlight {color: #FE9500 !important; font-weight: bold;}
После этого получаем красивый поиск и пищу для дальнейших модификаций Мопед не мой, автор идеи Marco Kuiper, за что ему отдельное спасибо Готового модуля делать не буду, разобраться думаю не составляем проблем Тема на Joomlaforum P.S. обращаю внимание, что парсер моего блога перевирает одинарные кавычки, потому просто копи\паст работать не будет
307
2009 20 сентября

Постраничная навигация для Datso 1.8.1 (page navigation)

По просьбе пользователя ce300man набросал добавление постраничной навигации в страницы галереи ( Популярные | Лучшие | Новые | Комментарии) Немного теории. Статья официальной вики Using JPagination in your component Работать будем с файлом components\com_datsogallery\sub_viewspecial.php

460
2009 24 августа

Плагин невизуального редактора СodEditor (beta)

Представляю Вашему вниманию мелкую поделку для собственных нужд - невизуальный редактор для Joomla 1.5, по типу Home-site и других редакторов, СodEditor версия 1.0.2

Что умеет:

1 - вставлять заданные теги (минимально необходимый набор) 2 - обрамлять выделенный текст выбранным тегом (выделили текст, нажали В - текст обрамился тегами) 3 - поддерживаемые теги: B, I, U, S, P, BR, UL LI, OL LI, A, IMG, H1-H6

В планах на будущее (никаких сроков реализации не обещаю и обещать не буду)

1 - добавить подсветку синтаксиса HTML 2 - добавить нумерацию строк (под вопросом) 3 - добавить функционал плагина для JCE advlink для добавления ссылки на определенный набор элементов сайта, материалы, ссылки в меню (очень нескоро)

Кратко для интересующихся

1 - для добавления собственного тега открываем файл plugins\editors\codeditor.php, находим строки 153-173 и по аналогии добавляем свой тег (не забываем положить картинку в каталог plugins\editors\codeditor\ico) Плагин невизуального редактора СodEditor (beta)
Скачать с Яндекса
Тема на joomlaforum

changelog

Исправлена ошибка работы сторонних кнопок редактора под областью ввода (подробнее, изображения и прочие), спасибо ShadowXak
849
2009 16 августа

Модифицируем стандартный mod_latestnews

Зачастую нам требуется вывод простейший новостей, но стандартный модуль mod_latestnews версии движка 1.5 умеет показывать лишь заголовок. Начинаются поиски мега модулей для решения элементарной задачи. В этом примере расскажу как с помощью легкой модификации стандартного модуля вывести следующие данные: заголовок материала, дата создания, вступительный текст, ссылку "читать далее"
Итак мы будем работать с двумя файлами modules\mod_latestnews\helper.php - подготовка данных (дальше хелпер) modules\mod_latestnews\tmpl\default.php (дальше шаблон) Открываем хелпер, находим строку
1
$lists[$i]->text = htmlspecialchars ( $row->title );
под ней сразу добавляем
1
2
$lists[$i]->created = JHTML::_('date', $row->created, JText::_('DATE_FORMAT_LC2'));
$lists[$i]->introtext = strip_tags ( $row->introtext );

Комментарии:

1 - конструкция DATE_FORMAT_LC2 используется чтобы привести выводимую дату к приличному виду, смотрим файл language\ru-RU\ru-RU.ini самое начало (можем изменить формат) и читаем справку по функции date 2 - функция strip_tags используется, чтобы избавить вступительный текст от всего HTML мусора, что хорош в режиме блога, но очень мешает в обычном модуле Дальше переходим к шаблону, сразу приведу общий текст, сравнивайте с оригинальным и делайте выводы
1
23
45
67
89
1011
12
<ul class="latestnews<?php echo $params->get ('moduleclass_sfx'); ?>">
<?php foreach ($list as $item) :  ?>        <li class="latestnews<?php echo $params->get ('moduleclass_sfx'); ?>">
                <span class="date"><?php echo $item->created; ?></span>                <a href="<?php echo $item->link; ?>" class="latestnews<?php echo $params->get ('moduleclass_sfx'); ?>">
                <?php echo $item->text; ?></a>                <br />
                <?php echo $item->introtext; ?>                <a href="<?php echo $item->link; ?>" title="read more">read more</a>
        </li><?php endforeach; ?>
</ul>

Комментарии:

1 - если мы не используем на сайте многоязычность, то фразу "read more" можно написать по русски но не забыть сохранить файл в кодироке UTF-8 2 - справка по используемым элементам массива
1
23
45
echo $params->get ('moduleclass_sfx'); // CSS суффикс, заданный в настройках модуля
echo $item->text;  // заголовок материалаecho $item->introtext; // текст вступительный материала
echo $item->created;  // дата создания материалаecho $item->link; // ссылка на полный текст материала

Пара примеров модификаций

Интро текст у нас в 500 слов а мы хотим выводить первые 200 символов, но аккуратно обрезать последнее слово а не посередине, потому функция примитивная, первый параметр - вхождение собственно текста ($row->introtext в цикле нашего хелпера), второй - количество символов, по которому будем обрезать)
1
23
4
function NewsCrop ($text, $str_len ) {
        $textCrop = strip_tags (mb_substr ($text, '0', $str_len) );        return $textCrop;
}
Пример применения примерно такой
1
2
$str_len = '200';
$lists[$i]->introtext = NewsCrop ($row->introtext , $str_len);
Дальнейшие возможные модификации безграничны (элементарные знания php + sql необходимы), но для большинства хотелок этого должно быть достаточно, временные затраты 5 минут и все готово. На пиво принимаю в профиле :) Кросспост на joomlaforum
743
2009 27 июля

Модуль обратный отсчет для Joomla 1.5

mod_countdown Версия модуля 2.1.0 для Joomla 1.5 Список изменений: * Полностью переписан код * Создан простенький шаблонизатор * Стили модуля вынесены в отдельный CSS * P.S. модуль не умеет работать с високосными годами Проверял с различными вариациями даты, локально все показывал корректно (кол-во дней, часов, минут до события как в статике, так и в посекундном JS скрипте). Тестировал в мозилла, опера, ИЕ 6-7 Скачать здесь или на joomlaforum Версия модуля 2.5.1 для Joomla 2.5
437
2009 24 июля

Плагин ArtFormsplugin для компонента ArtForms

Тестируйте первую версию плагина ArtFormsplugin для Joomla 1.5 Пробовал у себя пошагово:
  1. создал формочку из пары полей
  2. уставил плагин
  3. в материал вписал {ArtForms formid=1}

В тексте появилась форма и кнопка "send", по нажатию ничего не происходит (точнее перебрасывает меня на страницу index.php?option=com_ArtForms&formid=1&Itemid=1 пустую, видимо потому что не создал обработчик формы - лень разбираться в самом компоненте было)

Все опции работы плагина также не проверял (бо их там много а рабочей формы для тестирования под рукой нет).

Скачать плагин
Обсуждение на Joomlaforum
1312
2009 24 июля

Модуль последних сообщений с SMF 2.0

Забираем, версия модуля mod_latestsmf 1.2.0 для Joomla 1.5 и SMF 2.0 RC1.2

Обязательные требования:

1 - после установки модуля указать в настройках абсолютный путь к файлам форума DOCUMENT_ROOT/smf_path/ (слеш на конце обязателен) 2 - наличие на сервере библиотеки mb_substr 3 - форум должен быть установлен с указанием кодировки UTF-8 (на 1251 не тестировал, ничего не могу сказать)

3374
2009 13 июля

Модуль вывода товаров для VirtueMart

vm_logo2 Представляю Вашему внимания достаточно универсальный модуль для VirtueMart, версия mod_VirtueMart_universal 1.2.1 (beta version) для Joomla 1.5. Почему этот модуль, а не родной от разработчика VirtueMart Soeren - родной модуль на 6 товаров генерит от 40 запросов в БД, мой же только один SQL запрос

274
2009 20 июня

Нереспект хостингу mastak.ru

hosting Имелся сайт с средней посещаемостью 1-3 тыщи уников в день на 1.0.12 на совершенно обычном виртуальном хостинге. Каюсь, оптимизации сайта практически не было, но и особой нагрузки он не давал. Недавно в связи с введением нового функционала посещаемость подскочила до 10-20 000 уников в сутки. Хостер моментально отключил за превышение всех допустимых нагрузок и попросил переехать на вдс. Услуги данного хостера меня давно не очень устраивали, но чтобы не срывать работу сайта взяли на месяц его ВДС, 4000 рублей\месяц. Через пару дней снова отрубили таки за нагрузку. Поддержка после определенной ругани с моей стороны сказала, что развели апач и MySQL по разным серверам и попросили еще 4000 рублей за второй сервер (!!!).
Железную составляющую называть отказываются, но судя по их сайту mastak.ru/content/newprices/#3 самый дорогой тариф имеет в своем распоряжении проц аж на 900 mhz (сам не верю что технологии уже настолько продвинулись) и памяти выделяют целых 512 Mb от щедрот своих, дисковое пространство при этом 6 гигов. Стоит все это добро 3000 рублей в месяц (+ 1000 за установку). При этом сайт отзывается только лишь на 70% запросов, периодически уходя в глубокий даун. Сейчас готовим переезд на moinet.ru (совершенно другой уровень железа, денег и обслуживания), оформляем тариф VPS.PRO ( кому интересно могут ознакомиться с параметрами http://moinet.ru/vps) - в два раза дешевле и железо в 3 раза лучше. Ну а Мастак пусть и дальше остается на допотопном железе за бешеные деньги и с полнейшей наглостью на лице. Вотс..
381
2009 15 июня

ЕГЭ изнутри (глазами админа)

Злободневная тема, много топиков и на хабре (вот и вот)

Совершенно не собираюсь останавливаться на законности эксперимента, содержании КИМ (контрольно измерительных материалов) и прочем. Постараюсь сконцентрироваться непосредственно на технологическом аспекте подготовки и проведения экзамена. Почему мне можно верить – опыт работы 2004-2007 в РЦОИ Московской области (системное администрирование, сбор данных, координация с разработчиками и регионами, проведение обучений, консультации и прочее). Все это время мы работали по технологии КРОК (см. ниже), в 2009 года технология изменилась в приказном порядке на ЦТ. Итак, по порядку

Ссылка на кросспост хабра

621
2009 11 июня

Верстка под магазин VamSHOP

Довелось давеча верстать шаблон под такой скрипт как VamSHOP Хаять особо не буду, но собственные замечания зафиксирую

608
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% вопросов и пищи для размышлений годится
429
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;
229
2009 22 мая

Чем только не работают программеры

Грешно, конечно, смеяться над людьми, но что поделать, вот очередной раз раскопал завалы приколов с форума
Цитата Димки:
Я программер непростой,
Компонент пишу пестой
Простыня под катом

220
2009 21 мая

Фейковые антивирусы

На одном фрилансерском сайте наткнулся на объявление: "Необходимо разработать продукт, который будет имитировать работу антивируса, например, Касперского. Должны быть все функции, кроме реального поиска антивирусов по базам, данный модуль будет подключен позже, в виде набора компонент. Одним словом получится антивирус полноценный только без движка -..." И как раз на днях были темы на хабре по поводу фейковых антивирусов, имитирующих работу настоящего, но делающих одни пакости. Так вот откуда собако то порылось )))
239
2009 18 мая

Правильный гугль

Копи-паст с хабра, но на память :) 442749_0
929
2009 18 мая

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

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

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

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

714
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 и производить действия в нём