126

Re: Вопросы по написанию плагинов

Вопрос по MVC. Есть плагин, который выводит некое содержимое.
присутствует папка view с шаблонами вывода для админки и для фронта. Одна проблема: на сайте создается страница с названием плагина например site.ru/myplugin и естественно в карте сайта появляется эта страница. но она мне не нужна, как сделать так, чтобы при установке плагина не появлялось этой страницы. Своими мозгами додумать не получилось...

Поделиться

127

Re: Вопросы по написанию плагинов

news.plugin.php

// Register plugin
Plugin::register( __FILE__,
    __('News', 'news'),
    __('News plugin for Monstra', 'news'),
    '1.6.1',
    'KANekT',
    'http://monstra.org/',
    'news');

удаляем последнею строчку 'news' и он не появляется

Site | GitHub | Создание форумов/решений на базе PunBB/Monstra/OGMA

Плагины распространяются по Creative Commons Attribution-NonCommercial 3.0

Сайт KANekT

Поделиться

128

Re: Вопросы по написанию плагинов

либо, если у плагина должна быть страница, но она не должна присутствовать в карте сайта, нужно в box/sitemap.plugin.php дополнит массив исключений.

Страдание фигнёй на рабочем месте развивает боковое зрение, слух, скорость реакции и бдительность в целом.
Пишу плагины под заказ, конвертирую шаблоны под Монстра - пишите на email через ссылку в профиле.

Поделиться

129

Re: Вопросы по написанию плагинов

Спасибо!!!! Разобрался)))))))

Поделиться

130

Re: Вопросы по написанию плагинов

еще такой вопрос: внутри кода плагина лучше пользоваться

<?php echo Option::get('siteurl'); ?>

или

<?php echo Site::url() ?>

?
Есть ли разница?

Поделиться

131

Re: Вопросы по написанию плагинов

еще такой вопрос: внутри кода плагина лучше пользоваться

<?php echo Option::get('siteurl'); ?>

или

<?php echo Site::url() ?>

?
Есть ли разница?

Поделиться

132

Re: Вопросы по написанию плагинов

Опыт показывает что лучше писать Option::get('siteurl');

Ex ungue leonem

Поделиться

133

Re: Вопросы по написанию плагинов

а как выбрать несколько записей из таблицы ?

одну:

$product->select('[id=1]');

а несколько как ? так не работает:

$product->select('[id=1,2,3]');
Site | GitHub | Создание форумов/решений на базе PunBB/Monstra/OGMA

Плагины распространяются по Creative Commons Attribution-NonCommercial 3.0

Сайт KANekT

Поделиться

134

Re: Вопросы по написанию плагинов

Документацию уже отменили?
http://monstra.org/documentation/xmldb-api

Поделиться

135

Re: Вопросы по написанию плагинов

Малевич пишет:

Документацию уже отменили?
http://monstra.org/documentation/xmldb-api

Ты кто такой ? Давай в лес иди. Нету в документации того, что я ищу.

Site | GitHub | Создание форумов/решений на базе PunBB/Monstra/OGMA

Плагины распространяются по Creative Commons Attribution-NonCommercial 3.0

Сайт KANekT

Поделиться

136

Re: Вопросы по написанию плагинов

Ты такой дерзкий, я просто скопировал ТВОЕ сообщение из другого аналогичного вопроса. И ответ там есть.

Поделиться

137

Re: Вопросы по написанию плагинов

Хорошо. Есть так так есть.

Site | GitHub | Создание форумов/решений на базе PunBB/Monstra/OGMA

Плагины распространяются по Creative Commons Attribution-NonCommercial 3.0

Сайт KANekT

Поделиться

138

Re: Вопросы по написанию плагинов

как правильно сделать ресайз ? нужно вписать мини картинку в заданный размер. Если пропорции не совпадают, то заполняем белым.

пока сделал так

 
       $im = imageCreatetrueColor($width, $height) or die ("Ошибка при создании изображения");
        $red = imagecolorallocate($im, 255, 255, 255);
        imagefill($im, 0, 0, $red);
        $image = imagecreatefromjpeg($folder.'thumbnail'.DS.$name);
        imageCopyResampled($im, $image, 0, 0, 0, 0, $img->width, $img->height, $img->width, $img->height);
        imagejpeg($im, $folder.'thumbnail'.DS.$name, 100);

есть ли в Gelato Library Image уже встроенный такой функционал ?

Site | GitHub | Создание форумов/решений на базе PunBB/Monstra/OGMA

Плагины распространяются по Creative Commons Attribution-NonCommercial 3.0

Сайт KANekT

Поделиться

139

Re: Вопросы по написанию плагинов

Есть ли возможность использовать View без темы ?

То есть, чтобы произошел render только того кода, что в view ?

Или из коробки такое не делается ?

    public function __construct($view, array $variables = array())
    {
        // Set view file
        // From current theme folder or from plugin folder
        if (File::exists($theme_view_file = THEMES_SITE . DS . Site::theme() . DS . $view . '.view.php') && BACKEND == false) {
            $this->view_file = $theme_view_file;
        } else {
            $this->view_file = PLUGINS . DS . $view . '.view.php';
        }
        // Is view file exists ?
        if (file_exists($this->view_file) === false) {
            throw new RuntimeException(vsprintf("%s(): The '%s' view does not exist.", array(__METHOD__, $view)));
        }
        // Set view variables
        $this->vars = $variables;
    }

тут не вижу такой возможности.

Site | GitHub | Создание форумов/решений на базе PunBB/Monstra/OGMA

Плагины распространяются по Creative Commons Attribution-NonCommercial 3.0

Сайт KANekT

Поделиться

140

Re: Вопросы по написанию плагинов

Нужно использовать хук pre_render - он висит в index.php

Страдание фигнёй на рабочем месте развивает боковое зрение, слух, скорость реакции и бдительность в целом.
Пишу плагины под заказ, конвертирую шаблоны под Монстра - пишите на email через ссылку в профиле.

Поделиться

141

Re: Вопросы по написанию плагинов

я использую его в Action::add('admin_pre_render','CalculationAdmin::_requestAjax');

    /**
     * _requestAjax
     */
    public static function _requestAjax()
    {
        if (Security::check(Request::get('csrf')) && Request::get('action') == 'add') {
            if (Request::get('doors') == true) {
                $view = new View('news/views/backend/doors.add');
                echo $view;
                die();
            }
        }
        //exit('no action');
    }

View возвращается полная.

Site | GitHub | Создание форумов/решений на базе PunBB/Monstra/OGMA

Плагины распространяются по Creative Commons Attribution-NonCommercial 3.0

Сайт KANekT

Поделиться

142

Re: Вопросы по написанию плагинов

Как доберусь до домашнего компа, выложу свой кусок кода с рабочего сайта.

Страдание фигнёй на рабочем месте развивает боковое зрение, слух, скорость реакции и бдительность в целом.
Пишу плагины под заказ, конвертирую шаблоны под Монстра - пишите на email через ссылку в профиле.

Поделиться

143

Re: Вопросы по написанию плагинов

<?php
    /**
     *    Tops plugin
     *
     *    @package Monstra
     *  @subpackage Plugins
     *    @author El'Drako
     *    @copyright 2012 El'Drako
     *    @version 1.0.0
     *
     */
    // Register plugin
    Plugin::register( __FILE__,                    
                    __('Tops'),
                    __('Tops page'),  
                    '1.0.0',
                    'El\'Drako',                 
                    'http://monstra.org/',
                    'tops');
    /**
    * Shorcode: {tops list="last_added_authors" count="10"}
    */ 
    Shortcode::add('tops', 'Tops::_shorcode');
    if(Session::exists('user_role') && in_array(Session::get('user_role'), array('admin', 'editor'))) {
        // Include Admin
        Plugin::Admin('tops');
    }
    class TopsPager extends Pager
    {
    /**
    * Implementation of abstract method getData of Pager class
    *
    * Gets records from array with given offset and limit
    * and total number of records
    *
    * @param $data mixed - array of all the records
    * @return mixed - array of records
    */
        public function getData($data)
        {
            $this->total = count($data);
            $data = array_slice($data, $this->getOffset(), $this->limit);
            return $data;
        }
    }
class Tops extends Frontend { 
    public static $users = null;
  public static $out = '';
  public static $titles = '';
    public static function _shorcode($attributes) {
        extract($attributes);
        $count = (isset($count)) ? (int)$count : 5;
        Action::run('dblink');
        $db = goDB::getDB("SIDB");
        if (isset($list)) {
            switch ($list) {
                case 'last_added_authors':
                    return Tops::getLastAddedAuthors($db, $count);
                case 'last_updates':
                    return Tops::getLastUpdates($db, $count);
                case 'top_rating_authors':
                    return Tops::getTopRatingAuthors($db, $count);
                case 'top_readed_authors':
                    return Tops::getTopReadedAuthors($db, $count);
                case 'top_users_lists':
                    return Tops::getLastRegisteredUsers($count);
                case 'check_si_servers':
                    return Tops::getSiStatus();
            }
        }
    }
    /**
  * Get Top Readed Authors
  */
  public static function getTopReadedAuthors($db, $count) {
        $cache = Mcache::getInstance(); 
        $cache_id = 'getTopReadedAuthors';
        $sortedby=' ORDER BY `watchers` DESC LIMIT ?i';
        $query = "SELECT COUNT(`aname`) `watchers`, l.id `id`, l.aname `aname`, l.url `url`, l.text `textlist`, l.rating `rating` FROM `links` l LEFT JOIN `users2links` u2l on (l.id = u2l.linkid) WHERE l.type = 2 GROUP BY `aname` ".$sortedby;
        $data = array($count);
        if ($cache->exists($cache_id)) {
            $authorlist = $cache->get($cache_id);
        } else {
            $authorlist = $db->query($query, $data, 'assoc');
            $cache->set($cache_id, $authorlist, 60 * 60 * 1);
        }
        View::factory('tops/views/frontend/getTopReadedAuthors')
      ->assign('authorlist', $authorlist)
      ->display();
    }
    /**
  * Get Top Rating Authors
  */
  public static function getTopRatingAuthors($db, $count) {
        $cache = Mcache::getInstance(); 
        $cache_id = 'getTopRatingAuthors';
        $sortedby=' ORDER BY `rating` DESC LIMIT ?i';
        $query = "SELECT COUNT(*) `watchers`, l.id `id`, l.aname `aname`, l.url `url`, l.text `textlist`, l.rating `rating` FROM `links` l RIGHT JOIN `users2links` u2l on (l.id = u2l.linkid) WHERE l.type = 2 GROUP BY l.aname ".$sortedby;
        $data = array($count);
        if ($cache->exists($cache_id)) {
            $authorlist = $cache->get($cache_id);
        } else {
            $authorlist = $db->query($query, $data, 'assoc');
            $cache->set($cache_id, $authorlist, 60 * 60 * 1);
        }
        View::factory('tops/views/frontend/getTopRatingAuthors')
      ->assign('authorlist', $authorlist)
      ->display();
    }
    /**
  * Get Last Updates
  */
  public static function getLastUpdates($db, $count) {
        $cache = Mcache::getInstance(); 
        $cache_id = 'getLastUpdates';
        $sortedby='ORDER BY `updated` DESC LIMIT ?i';
        $query = "SELECT * FROM `links` l WHERE l.type = 1 ".$sortedby;
        $data = array($count);
        if ($cache->exists($cache_id)) {
            $authorlist = $cache->get($cache_id);
        } else {
            $authorlist = $db->query($query, $data, 'assoc');
            $cache->set($cache_id, $authorlist, 60 * 60 * 1);
        }
        View::factory('tops/views/frontend/getLastUpdates')
      ->assign('authorlist', $authorlist)
      ->display();
    }
    /**
  * Get Last Added Authors
  */
  public static function getLastAddedAuthors($db, $count) {
        $cache = Mcache::getInstance(); 
        $cache_id = 'getLastAddedAuthors';
        $sortedby=' ORDER BY `id` DESC LIMIT ?i';
        $query = "SELECT l.id `id`, l.aname `aname`, l.url `url`, l.rating `rating`, l.updated `updated` FROM `links` l WHERE l.type = 2 GROUP BY l.aname ".$sortedby;
        $data = array($count);
        if ($cache->exists($cache_id)) {
            $authorlist = $cache->get($cache_id);
        } else {
            $authorlist = $db->query($query, $data, 'assoc');
            $cache->set($cache_id, $authorlist, 60 * 60 * 1);
        }
        View::factory('tops/views/frontend/getLastAddedAuthors')
      ->assign('authorlist', $authorlist)
      ->display();
    }
  /**
  * Функция возвращает окончание для множественного числа слова на основании числа и массива окончаний
  * @param  $number Integer Число на основе которого нужно сформировать окончание
  * @param  $endingsArray  Array Массив слов или окончаний для чисел (1, 4, 5),
  *         например array('яблоко', 'яблока', 'яблок')
  * @return String
  */
  public static function getNumEnding($number, $endingArray) {
        $number = $number % 100;
    if ($number>=11 && $number<=19) {
      $ending=$endingArray[2];
    } else {
            $i = $number % 10;
      switch ($i) {
                case (1): $ending = $endingArray[0]; break;
        case (2):
        case (3):
        case (4): $ending = $endingArray[1]; break;
        default: $ending=$endingArray[2];
      }
    }
    return $ending;
  }
    /**
  * Get Tops list
  */
  public static function getList() {
        $authorlist = '';
        Action::run('dblink');
        $db = goDB::getDB("SIDB");
        $errors = array();
        $users = new Table('siwusers');
        $cache = Mcache::getInstance(); 
        $pageNum = (isset($_GET['p']) && $_GET['p'] != '') ? (int)$_GET['p'] : 1;
        $sortedby = ' ORDER BY l.aname ASC';
        $s_query = "SELECT COUNT(u2l.id) `watchers`, l.id `id`, l.aname `aname`, l.url `url`, l.text `textlist`, l.rating `rating` FROM `links` l RIGHT JOIN `users2links` u2l on (l.id = u2l.linkid) WHERE l.type = 2 GROUP BY l.aname ".$sortedby;
        //$author_list = $db->query($s_query, null, 'assoc');
        //Debug::dump($author_list);exit;
        if (Uri::segment(1)=='sorted-by' && Uri::segment(2)=='rating') {
            $sortedby=' ORDER BY `rating` DESC';
            $s_query = "SELECT COUNT(*) `watchers`, l.id `id`, l.aname `aname`, l.url `url`, l.text `textlist`, l.rating `rating` FROM `links` l RIGHT JOIN `users2links` u2l on (l.id = u2l.linkid) WHERE l.type = 2 GROUP BY l.aname ".$sortedby;
            if ($cache->exists("tops_list_r")) {
            $author_list = $cache->get("tops_list_r");
            } else {
            $author_list = $db->query($s_query, null, 'assoc');
            $cache->set("tops_list_r", $author_list, 60 * 60 * 1);
            }
        } else if (Uri::segment(1)=='sorted-by' && Uri::segment(2)=='watchers') {
            $sortedby=' ORDER BY `watchers` DESC';
            $s_query = "SELECT COUNT(`aname`) `watchers`, l.id `id`, l.aname `aname`, l.url `url`, l.text `textlist`, l.rating `rating` FROM `links` l LEFT JOIN `users2links` u2l on (l.id = u2l.linkid) WHERE l.type = 2 GROUP BY `aname` ".$sortedby;
            if ($cache->exists("tops_list_w")) {
            $author_list = $cache->get("tops_list_w");
            } else {
            $author_list = $db->query($s_query, null, 'assoc');
            $cache->set("tops_list_w", $author_list, 60 * 60 * 1);
            }
        } else if (Uri::segment(1)=='sorted-by' && Uri::segment(2)=='adddate') {
            $sortedby=' ORDER BY `id` DESC';
            $s_query = "SELECT COUNT(*) `watchers`, l.id `id`, l.aname `aname`, l.url `url`, l.text `textlist`, l.rating `rating` FROM `links` l RIGHT JOIN `users2links` u2l on (l.id = u2l.linkid) WHERE l.type = 2 GROUP BY l.aname ".$sortedby;
            if ($cache->exists("tops_list_d")) {
            $author_list = $cache->get("tops_list_d");
            } else {
            $author_list = $db->query($s_query, null, 'assoc');
            $cache->set("tops_list_d", $author_list, 60 * 60 * 1);
            }
        } else {
            if ($cache->exists("tops_list")) {
            $author_list = $cache->get("tops_list");
            } else {
            $author_list = $db->query($s_query, null, 'assoc');
            $cache->set("tops_list", $author_list, 60 * 60 * 1);
            }
        }
        $s_query = "SELECT * FROM `users2links` u2l WHERE u2l.type = 2;";
        //$author_userlists = $db->query($s_query, null, 'assoc');
        if ($cache->exists("tops_userlists")) {
            $author_userlists = $cache->get("tops_userlists");
        } else {
            $author_userlists = $db->query($s_query, null, 'assoc');
            $cache->set("tops_userlists", $author_userlists, 60 * 60 * 1);
        }
        if (Session::exists('siwuser_id') && (Session::get('siwuser_login') != '')) { 
            //под юзером
            $user = $users->select('[login="'.Session::get('siwuser_login').'"]', null);        
            $tmp_query = "SELECT u2l.linkid FROM `users2links` u2l WHERE u2l.type = 2 AND u2l.userid = (select u.id from `users` u where u.jid='".$user['jabber']."');";
            //$author_userlist = $db->query($tmp_query, null, 'col');
            if ($cache->exists("tops_userlist_".$user['jabber'])) {
                $author_userlist = $cache->get("tops_userlist_".$user['jabber']);
            } else {
                $author_userlist = $db->query($tmp_query, null, 'col');
                $cache->set("tops_userlist_".$user['jabber'], $author_userlist, 60 * 60 * 0.15);
            }
        } else {
            // для гостей
            $author_userlist = array();
        }
        $pager = new PagerArray($pageNum, Option::get('tops_perpage'));
        $authorlist = $pager->getData($author_list);
        $pagerNav = $pager->render();
        $statsString = '<div class="range">(Авторы с %d по %d из %d)</div>';
    View::factory('tops/views/frontend/index')
      ->assign('author_list', $authorlist)
            ->assign('author_userlist', $author_userlist)
            ->assign('author_userlists', $author_userlists)
            ->assign('pagerNav', $pagerNav)
            ->assign('pagerTotal', $pager->renderStats($statsString))
      ->display();
  }
    /**
    * Get all links to Author's texts 
    */
    public static function getAuthorLinks($db, $id) {
        $links = array();
        $s_query = "SELECT l.text FROM `links` l WHERE l.type = 2 AND l.id = ".$id." LIMIT 1;";
        $links = explode(" ", $db->query($s_query, null, 'el'));
        return $links;
    }
    /**
    * Get count of all Author's texts 
    */
    public static function getAuthorTextCount($db, $nick) {
        $links = array();
        $s_query = "SELECT COUNT(*) FROM `links` l WHERE l.type = 1 AND l.url LIKE ? ;";
        $data = array($nick[0].'/'.$nick.'/%');
        return $db->query($s_query, $data, 'el');
    }
    /**
    * Get Author name 
    */
    public static function getAuthorNameById($db, $id) {
    $s_query = "SELECT l.aname FROM `links` l WHERE l.type = 2 AND l.id = ".$id." LIMIT 1;";
    return $db->query($s_query, null, 'el');
    }
    /**
    * Get Author name by nick
    */
    public static function getAuthorNameByNick($db, $nick) {
        $s_query = "SELECT l.aname FROM `links` l WHERE l.type = '2' AND l.url = ? ;";
        $data = array($nick[0].'/'.$nick);
        $out = $db->query($s_query, $data, 'el');
        return $out;
    }
    /**
    * Get Author texts by nick
    */
    public static function getAuthorTextsByNick($db, $nick) {
        $s_query = "SELECT * FROM `links` l WHERE l.type = '1' AND l.url LIKE ? ORDER BY l.updated DESC;";
        $data = array($nick[0].'/'.$nick.'/%');
        $out = $db->query($s_query, $data, 'assoc');
        return $out;
    }
    /**
    * Get all id's to Author's texts 
    */
    public static function getAuthorTextIDs($db, $id) {
    $links = Tops::getAuthorLinks($db, $id);
    $id = array();
    foreach ($links as $link) {
        $s_query = "SELECT l.id FROM `links` l WHERE l.type = 1 AND l.url = '".$link."' LIMIT 1;";
        $res = $db->query($s_query, null, 'el');
        if ($res) $id[] = $res;
    }
    return $id;
    }
    /**
    * Get Author page
    */
    public static function getAuthorPage($nick) {
        Action::run('dblink');
        $db = goDB::getDB("SIDB");
        $users = new Table('siwusers');
        $cache = Mcache::getInstance();
        $author = Tops::getAuthorNameByNick($db, $nick);
        if ($author =='') Request::redirect("/tops");
        $texts = Tops::getAuthorTextsByNick($db, $nick);
        $textcount = Tops::getAuthorTextCount($db, $nick);
        //число читателей у текста
        $s_query = "SELECT COUNT(u2l.id) `watchers`, u2l.linkid FROM `links` l RIGHT JOIN `users2links` u2l on (l.id = u2l.linkid) WHERE l.type = 1 AND l.url LIKE ? GROUP BY l.url ";
        $data = array($nick[0].'/'.$nick.'/%');
        $readers_count = $db->query($s_query, $data, 'assoc');
        if (Session::exists('siwuser_id') && (Session::get('siwuser_login') != '')) { 
            //под юзером
            $user = $users->select('[login="'.Session::get('siwuser_login').'"]', null);    
            //готовим список идов текстов автора для выборки подписанных
            $ids = array();
            foreach ($texts as $t) $ids []= $t['id'];
            if (count($ids) == 0) $ids[] = 0;
            $tmp_query = "SELECT u2l.linkid FROM `users2links` u2l WHERE u2l.type IN (1,4) AND u2l.userid = (select u.id from `users` u where u.jid=?) AND u2l.linkid IN (?list);";
            //$author_userlist = $db->query($tmp_query, null, 'col');
            $data = array($user['jabber'], $ids);
            if ($cache->exists($nick."_userlist_".$user['jabber'])) {
                $author_userlist = $cache->get($nick."_userlist_".$user['jabber']);
            } else {
                $author_userlist = $db->query($tmp_query, $data, 'col');
                $cache->set($nick."_userlist_".$user['jabber'], $author_userlist, 60 * 60 * 0.15);
            }
        } else {
            // для гостей
            $author_userlist = array();
        }
    View::factory('tops/views/frontend/authorpage')
      ->assign('author', $author)
            ->assign('nick', $nick)
            ->assign('textcount', $textcount)
            ->assign('texts', $texts)
            ->assign('author_userlist', $author_userlist)
            ->assign('readers_count', $readers_count)
      ->display();
  }
    /**
    * Get Author rss-page
    */
    public static function getRSSAuthor($nick) {
        Action::run('dblink');
        $db = goDB::getDB("SIDB");
        $users = new Table('siwusers');
        $cache = Mcache::getInstance();
        include_once PLUGINS . '/tops/rss_generator.inc.php';
        $author = Tops::getAuthorNameByNick($db, $nick);
        if ($author =='') Request::redirect("/tops");
        $texts = Tops::getAuthorTextsByNick($db, $nick);
        $rss_channel = new rssGenerator_channel();
        $rss_channel->atomLinkHref = Option::get('siteurl');
        $rss_channel->title = 'SIwatcher - Список произведений автора '.$author;
        $rss_channel->link = Option::get('siteurl').'tops/rss/'.$nick;
        $rss_channel->description = 'Всего у автора отслеживается ' . count($texts) . Tops::getNumEnding(count($texts), array(' текст',' текста',' текстов'));
        $rss_channel->language = 'ru';
        $rss_channel->generator = 'SIwatcher RSS Feed Generator';
        $rss_channel->managingEditor = 'admin@siwatcher.ru (El\'Drako)';
        $rss_channel->webMaster = 'admin@siwatcher.ru (El\'Drako)';
        //debug::dump($texts);
        $rss_feed = new rssGenerator_rss();
        foreach ($texts as $t) {
            $item = new rssGenerator_item();
            $a = explode('||', $t['text']);
            //debug::dump($t['text']);exit;
            $item->title = $a[1];
                $s = '<strong>Последнее сканирование:</strong> '.date("G:i:s j.m.Yг. (T)", $t['date']).'<br/>';
                $s .= strlen($a[0]) > 3 ? '<strong>Автор:</strong> '.$a[0].'<br/>' : '';
                $s .= strlen($a[3]) > 3 ? '<strong>Жанр:</strong> '.$a[3].'<br/>' : '';
                $s .= strlen($a[4]) > 3 ? '<strong>Аннотация:</strong> '.$a[4].'<br/><br/><strong>Размер:</strong> '.$a[2].' КБ' : '<br/><strong>Размер:</strong> '.$a[2].' КБ';
                $s .= '<br/><br/><a href="http://budclub.ru/'.$t['url'].'">Ссылка на budclub.ru</a>';
            $item->description = $rss_feed->cData($s);
            $item->link = 'http://samlib.ru/'.$t['url'];
            $item->guid = $t['id'];
            $item->pubDate = date("r", $t['updated']);
            $rss_channel->items[] = $item;
        }
        //$rss_feed = new rssGenerator_rss();
        $rss_feed->encoding = 'UTF-8';
        $rss_feed->version = '2.0';
        header('Content-Type: text/xml');
        echo $rss_feed->createFeed($rss_channel);
        exit;
  }
    public static function main() {
  }
  public static function content() {
  }
    /**
    * Set Tops template
    */
  public static function template() {
    return Option::get('tops_template');
  }
}
Страдание фигнёй на рабочем месте развивает боковое зрение, слух, скорость реакции и бдительность в целом.
Пишу плагины под заказ, конвертирую шаблоны под Монстра - пишите на email через ссылку в профиле.

Поделиться

144

Re: Вопросы по написанию плагинов

вывод материалов по шаблону в функциях выше.
далее его через хук frontend_pre_render.

Страдание фигнёй на рабочем месте развивает боковое зрение, слух, скорость реакции и бдительность в целом.
Пишу плагины под заказ, конвертирую шаблоны под Монстра - пишите на email через ссылку в профиле.

Поделиться