Разработка на коленке..

Автор блога: Symedia

XML карта сайта для контента

Представляю первую версию генератора XML карты сайта для контента(статьи)

Обновление модуля "Расписание намазов".

Немного переработанный модуль парсера расписания намазов. Добавлена админка.

1.7 - 1.9:
namaz1.9.zip
1.10:
namaz1.10.zip

Универсальный модуль к компоненту Медиагалерея v.1.2 - Новые записи

В продолжение разработки Медиагалереи v.1.2

Модуль выводит новые аудио или видеозаписи.



Админка:



Скачать модуль: Модуль - новые медиазаписи

Установка:

скопируйте содержимое архива в корень каталога, и сделайте запрос в БД:

Код PHP:
INSERT INTO `cms_modules` (`id`, `position`, `name`, `title`, `is_external`, `content`, `ordering`, `showtitle`, `published`, `user`, `config`, `original`, `css_prefix`, `allow_group`, `cache`, `cachetime`, `cacheint`, `template`) VALUES
('', 'left', 'Новые медиазаписи', 'Новые медиазаписи', 1, 'mod_mlatest', 0, 1, 0, 0, '---\nmedia: video\nnewscount: 5\nback: 1\n', 1, '', -1, 0, 1, 'HOUR', 'module.tpl');
А в
Код HTML:
<head>...</head>
вашего шаблона вставить:

Код HTML:
<script type='text/javascript' src='/components/media/js/swfobject.js'></script>

Компонент Медиагалерея v.1.2 beta для InstantCMS v.1.6 и выше

Вот и разработал компонент медиагалереи.

На ваш суд. Пока тест. Хотя и работоспособный вполне.

Галерея состоит из mp3 и flv файлов. К видео можно подгружать превью.
Размеры видеоплеера задаются в админке.

Видео:



Нажимаем на "Смотреть видео" и переходим к плееру.



В аудиогалерее список mp3. В админке можно настраивать сколько на страницу выводится, как видео так и аудио.

Админка:





Остальные страницы увидете в установленном варианте. Извинияюсь за сумбурность.

Установка:

Скопируйте папки из архива: /admin/, /components/, /templates/, /videofiles/ в корень вашего сайта.

Задайте папке videofiles и все подпапкам права 777

Далее:

Были внесены изменения в cms.php, cp.php, и /applets/menu.php

Данные вайлы находятся в папке "Дополнения" в архиве, можете ими заменить свои, если никаких изменений не производили с этими файлами.

Зайдите в админке в компоненты, перейдите в установку компонентов - там появится новый компонент Медиагалерея. Установите и пользуйтесь.

Если вы хотите внести изменения в данные фалы вручную - то:

cms.php

В функцию getMenuLink добавляем:

Код PHP:
        if ($linktype=='media'){
            $menulink = '/media/'.$linkid;
        }
Получаем:

Код PHP:
    /**
     * Возвращает прямую ссылку на пункт меню по его типу и опции
     * @param string $linktype
     * @param string $linkid
     * @param int $menuid
     * @return string
     */
    public function getMenuLink($linktype, $linkid, $menuid){

        $inDB = cmsDatabase::getInstance();
        $inCore = cmsCore::getInstance();

        $menulink = '';

        if ($linktype=='component'){
            $menulink = '/'.$linkid;
        }

        if ($linktype=='link'){
            $menulink = $linkid;
        }

        if ($linktype=='category' || $linktype=='content'){
            $inCore->loadModel('content');
            $model = new cms_model_content();
            switch($linktype){
                case 'category': $menulink = $model->getCategoryURL(null, $inDB->get_field('cms_category', "id={$linkid}", 'seolink')); break;
                case 'content':  $menulink = $model->getArticleURL(null, $inDB->get_field('cms_content', "id={$linkid}", 'seolink')); break;
            }
        }

        if ($linktype=='blog'){
            $inCore->loadModel('blogs');
            $model = new cms_model_blogs();
            $menulink = $model->getBlogURL(null, $inDB->get_field('cms_blogs', "id={$linkid}", 'seolink'));
        }

        if ($linktype=='uccat'){
            $menulink = '/catalog/'.$linkid;
        }
        
        if ($linktype=='media'){
            $menulink = '/media/'.$linkid;
        }

        if ($linktype=='pricecat'){
            $menulink = '/price/'.$linkid;
        }

        return $menulink;

    }
cp.php

В функцию cpMenutypeById (она в конце) добавляем:

Код PHP:
		case 'media':			$html = '<span id="menutype"><a href="'.$item['link'].'">Медиа</a></span> - '.$item['linkid'];
					 			break;
Получаем:

Код PHP:
function cpMenutypeById($id){
    $inDB   = cmsDatabase::getInstance();

	$html   = '';
	$maxlen = 35;
	
	$item   = $inDB->get_fields('cms_menu', 'id='.$id, 'linktype, linkid, link');

	switch($item['linktype']){	
		case 'link':  			$html = '<span id="menutype"><a href="'.$item['link'].'">Cсылка</a></span> - '.$item['linkid'];
								break;
		case 'component':		$html = '<span id="menutype"><a href="'.$item['link'].'">Компонент</a></span> - '.$inDB->get_field('cms_components', "link='".$item['linkid']."'", 'title');
					 			break;
		case 'content':			$html = '<span id="menutype"><a href="'.$item['link'].'">Статья</a></span> - '.$inDB->get_field('cms_content', 'id='.$item['linkid'], 'title');
					 			break;
		case 'category':		$html = '<span id="menutype"><a href="'.$item['link'].'">Раздел</a></span> - '.$inDB->get_field('cms_category', 'id='.$item['linkid'], 'title');
					 			break;
		case 'pricecat':		$html = '<span id="menutype"><a href="'.$item['link'].'">Прайс</a></span> - '.$inDB->get_field('cms_price_cats', 'id='.$item['linkid'], 'title');
					 			break;
		case 'uccat':			$html = '<span id="menutype"><a href="'.$item['link'].'">Каталог</a></span> - '.$inDB->get_field('cms_uc_cats', 'id='.$item['linkid'], 'title');
					 			break;
		case 'blog':			$html = '<span id="menutype"><a href="'.$item['link'].'">Блог</a></span> - '.$inDB->get_field('cms_blogs', 'id='.$item['linkid'], 'title');
					 			break;
		case 'media':			$html = '<span id="menutype"><a href="'.$item['link'].'">Медиа</a></span> - '.$item['linkid'];
					 			break;
	}	
	$clear = strip_tags($html);
	$r = strlen($html) - strlen($clear);
	if (strlen($clear)>$maxlen) { $html = substr($html, 0, $maxlen+$r).'...'; }
	return $html;
}
В /applets/menu.php добавляем в блок
Код PHP:
<div><strong>Действие пункта меню</strong></div>
:

Код PHP:
 <option value="media" <?php if (@$mod['linktype']=='media') { echo 'selected'; }?>>Открыть медиагалерею</option>
И наряду с остальными действиями меню вставить новое действие:

Код PHP:
                    <div id="t_media" class="menu_target" style="display:<?php if ($mod['linktype']=='media') { echo  'block'; } else { echo 'none'; } ?>">
                        <div>
                            <strong>Выберите медиагалерею</strong>
                        </div>
                        <div>
                           <select name="media" id="pricecat" style="width:100%">
								<option value="video">Видеогалерея</option>
								<option value="audio">Аудиогалерея</option>
                            </select>
                        </div>
                    </div>

Скачать архив с компонентом: Медиагалерея

Прошу тестировать, и о проблемах сообщать. На более низкие версии InstantCMS можно легко доделать. Обращайтесь кому надо. Компонент будет разрабатываться дальше.

В перспективе:
Модуль - новые видео
Модуль - нове аудио
Рейтинги записей
Число просмотров
Модули популярных записей

Модуль-граббер вывода расписания Намазов для мусульман.

Вот пришел православному заказ - написать модуль - граббер расписания намазов с исламского сайта Исламикфаиндер. Покопошившись - написал, вроде ничего так смотрится. Заказчику понравилось и это радует. Выкладываю модуль потому, что перерыв интернет не нашел подобного. В основном информеры.
Внешний вид:

В общем на ваш праведный гневный суд выкладываю:

Установка в БД:

Код PHP:
INSERT INTO `cms_modules` ( `id` , `position` , `name` , `title` , `is_external` , `content` ,
                            `ordering` , `showtitle` , `published` , `user` , `config` , `original` , 
                            `css_prefix` , `allow_group` , `cache` , `cachetime` , `cacheint` )
VALUES ('', 'right', 'Расписание намазов', 'Расписание намазов', '1', 'mod_namaz', '1', '1', '1', '0', '', 
        '1', '', '-1', '', '1', 'HOUR');
Собственно модуль:

Скачать модуль - Расписание намазов

Установка расписания для нужного вам города смотрите в комментариях в коде "/modules/mod_namaz/module.php"

Чуть не забыл. Конечно коряво, но на ваше усмотрение куда засунуть данную функцию. Я положил ее в ядро, к функциям обработки даты. Добавте следующую функцию в ядро вашего сайта core/cms.php:

Код PHP:
public  function DateAdd($interval, $number, $date) {

    $date_time_array = getdate($date);
    $hours = $date_time_array['hours'];
    $minutes = $date_time_array['minutes'];
    $seconds = $date_time_array['seconds'];
    $month = $date_time_array['mon'];
    $day = $date_time_array['mday'];
    $year = $date_time_array['year'];

    switch ($interval) {
    
        case 'yyyy':
            $year+=$number;
            break;
        case 'q':
            $year+=($number*3);
            break;
        case 'm':
            $month+=$number;
            break;
        case 'y':
        case 'd':
        case 'w':
            $day+=$number;
            break;
        case 'ww':
            $day+=($number*7);
            break;
        case 'h':
            $hours+=$number;
            break;
        case 'n':
            $minutes+=$number;
            break;
        case 's':
            $seconds+=$number; 
            break;            
    }
       $timestamp= mktime($hours,$minutes,$seconds,$month,$day,$year);
    return $timestamp;
}
PS: Граббер - вещь ненадежная.