1. Мы продолжаем публиковать интересные статьи на тему SocialEngine 4. Одна из статей посвящена правильному выбору сервера для вашей социальной сети, а другая содержит советы по увеличению производительности платформы. Также мы добавили большую статью о пользовательских уровнях. Ознакомиться со статьями вы можете в разделе Вопросы и Ответы SocialEngine 4.
  2. Вам кажется, что ваша версия SocialEngine 4, работает медленно?

    Голосуйте. Пишите свою версию системы, железо на чем работает и количество пользователей. Будем увеличивать производительность :-) Подробнее

  3. В связи с участившимися случаями попыток продажи пользователями форума различных "сборок" коммерческих социальных платформ, обычно основанных на SocialEngine 3, вводится новое правило для форума. Запрещается создание тем или размещение в уже созданных предложений о продаже или размещение ссылок на сайты, где происходит продажа "сборок". Пользователи, которые продолжат свою коммерческую деятельность в данном направлении, будут заблокированы. Подробнее.

Problem Не пойму почему не работает виджет

Discussion in 'Прочая Поддержка - Help Requests' started by codeman, Aug 23, 2012.

  1. codeman Thread starter User


    Offline
    Message Count:
    116
    Likes Received:
    21
    My version of SE:
    4.6.0
    Привет всем!
    Помогите - туплю что-то

    Для примера сделал 3 банальных файла

    Controller.php
    PHP:
    <?php
     
    class Announcement_Widget_Ann1Controller extends Engine_Content_Widget_Abstract
    {
      public function 
    indexAction()
      {
        
    // Get paginator
        
    $table Engine_Api::_()->getDbtable('announcements''announcement');
        
    $select $table->select()
          
    //->order('announcement_id DESC')
          
    ->order('creation_date DESC')
          ;
     
        
    $paginator Zend_Paginator::factory($select);
     
        
    // Set item count per page and current page number
        
    $paginator->setItemCountPerPage($this->_getParam('itemCountPerPage'2));
        
    $paginator->setCurrentPageNumber($this->_getParam('page'1));
     
        
    // Hide if nothing to show
        
    if( $paginator->getTotalItemCount() <= ) {
          return 
    $this->setNoRender();
        }
     
        
    $this->view->announcements $paginator;
      }
    }
    index.tpl
    HTML:
    <ul class="announcements">
      <?php foreach( $this->announcements as $item ): ?>
        <li>
          <div class="announcements_title">
            <?php echo $this->translate($item->title) ?>
          </div>
          <div class="announcements_info">
            <span class="announcements_author">
              <?php echo $this->translate('Posted by %1$s %2$s',
                            $this->htmlLink($item->getOwner()->getHref(), $item->getOwner()->getTitle()),
                            $this->timestamp($item->creation_date)) ?>
            </span>
          </div>
          <div class="announcements_body">
            <?php echo $this->translate($item->body) ?>
          </div>
        </li>
      <?php endforeach; ?>
    </ul>
    
    manifest.php
    PHP:
    <?php
     
    return array(
      
    'package' => array(
        
    'type' => 'widget',
        
    'name' => 'ann1',
        
    'version' => '4.0.0',
        
    'path' => 'application/widgets/ann1'
        
    'title' => 'Announcements Translate',
        
    'description' => '...',
        
    'author' => 'Codeman',
        
    'directories' => array(
          
    'application/widgets/ann1',
        ),
      ),
     
      
    // Backwards compatibility
      
    'type' => 'widget',
      
    'name' => 'ann1',
      
    'version' => '4.0.0',
      
    'title' => 'Announcements Translate',
      
    'description' => '...',
      
    'category' => 'Widgets',
    ?>
    скинул в папку application/widgets/ann1, поместил на страницу , но в результате юзер не видит его.
    В исходном коде страницы его просто нет. В чем я ошибся? Подозреваю что все просто....
    Специально просто взял готовый виджет из движка, но все равно туплю
  2. nadri Administrator


    Offline
    • Admin
    • Знаменитый
    Message Count:
    1,257
    Likes Received:
    392
    My version of SE:
    4.6.0
    here...

    PHP:
    class Announcement_Widget_Ann1Controller extends Engine_Content_Widget_Abstract
    need to be:

    PHP:
    class Widget_Ann1Controller extends Engine_Content_Widget_Abstract
    codeman likes this.
  3. codeman Thread starter User


    Offline
    Message Count:
    116
    Likes Received:
    21
    My version of SE:
    4.6.0
    :bounce:
    --- добавлено: 23 авг 2012 в 01:35 ---
    Thank you!
  4. nadri Administrator


    Offline
    • Admin
    • Знаменитый
    Message Count:
    1,257
    Likes Received:
    392
    My version of SE:
    4.6.0
    Here complete
    PHP:
    <?php

    class Widget_Ann1Controller extends Engine_Content_Widget_Abstract

    {

      public function 
    indexAction()

      {

        
    // Get paginator

        
    $table Engine_Api::_()->getDbtable('announcements''announcement');

        
    $select $table->select()

          
    //->order('announcement_id DESC')

          
    ->order('creation_date DESC')

          ;

      
    $this->view->announcements $paginator Zend_Paginator::factory($select);

        
    // Set item count per page and current page number

        
    $paginator->setItemCountPerPage($this->_getParam('itemCountPerPage'2));

        
    $paginator->setCurrentPageNumber($this->_getParam('page'1));

        
    // Hide if nothing to show

        
    if( $paginator->getTotalItemCount() <= ) {

          return 
    $this->setNoRender();

        }

      }

    }

    and:

    PHP:
    <ul class="announcements">
      <?php foreach( $this->paginator as $item ): ?>
        <li>
          <div class="announcements_title">
            <?php echo $this->translate($item->title?>
          </div>
          <div class="announcements_info">
            <span class="announcements_author">
              <?php echo $this->translate('Posted by %1$s %2$s',  $this->htmlLink($item->getOwner()->getHref(), $item->getOwner()->getTitle()),  $this->timestamp($item->creation_date)) ?>
            </span>
          </div>
          <div class="announcements_body">
            <?php echo $this->translate($item->body?>
          </div>
        </li>
      <?php endforeach; ?>
    </ul>
    --- добавлено: 23 авг 2012 в 01:46 ---
    Also, you can put inside Title Count, and possibility to set no of shoved items thru AP - if you want this, let me know, and I will show how to do that.
  5. codeman Thread starter User


    Offline
    Message Count:
    116
    Likes Received:
    21
    My version of SE:
    4.6.0
    Yes please show! I wonder. Basically I was doing more complex widgets, but when it did not work - I've done for the experience easier to find the error....
  6. nadri Administrator


    Offline
    • Admin
    • Знаменитый
    Message Count:
    1,257
    Likes Received:
    392
    My version of SE:
    4.6.0
    Here, the changes is in Controller.php and manifest.php - index.tpl leave as is.

    PHP:
    <?php
     
    class Widget_Ann1Controller extends Engine_Content_Widget_Abstract
     
    {
     
    protected 
    $_childCount
     
    public function 
    indexAction()
     
      {
     
        
    // Get paginator
     
        
    $table Engine_Api::_()->getDbtable('announcements''announcement');
     
        
    $select $table->select()
     
          
    //->order('announcement_id DESC')
     
          
    ->order('creation_date DESC')
     
          ;
     
      
    $this->view->announcements $paginator Zend_Paginator::factory($select);
     
        
    // Set item count per page and current page number
     
        
    $paginator->setItemCountPerPage($this->_getParam('itemCountPerPage'2));
     
        
    $paginator->setCurrentPageNumber($this->_getParam('page'1));
     
        
    // Hide if nothing to show
     
        
    if( $paginator->getTotalItemCount() <= ) {
     
          return 
    $this->setNoRender();
         }
     
          
    // Add count to title if configured
            
    if( $this->_getParam('titleCount'false) && $paginator->getTotalItemCount() > ) {
            
    $this->_childCount $paginator->getTotalItemCount();
        }
      }
     
      public function 
    getChildCount()
      {
        return 
    $this->_childCount;
      }
     
    }


    manifest.php
    PHP:
    <?php
     
    return array(
      
    'package' => array(
        
    'type' => 'widget',
        
    'name' => 'ann1',
        
    'version' => '4.0.0',
        
    'path' => 'application/widgets/ann1',
        
    'title' => 'Announcements Translate',
        
    'description' => '...',
        
    'author' => 'Codeman',
        
    'directories' => array(
          
    'application/widgets/ann1',
        ),
      ),
     
      
    // Backwards compatibility
      
    'type' => 'widget',
      
    'name' => 'ann1',
      
    'version' => '4.0.0',
      
    'title' => 'Announcements Translate',
      
    'description' => '...',
      
    'category' => 'Widgets',
    'defaultParams' => array(
          
    'title' => 'Announcements Translate',
          
    'titleCount' => true,
        ),
      
    'adminForm' => array(
        
    'elements' => array(
          array(
            
    'Text',
            
    'title',
            array(
              
    'label' => 'Title'
            
    )
          ),
          array(
            
    'Text',
            
    'itemCountPerPage',
            array(
              
    'label' => 'Count (number of items to show)'
            
    )
          ),
        ),
      ),
    ?>
    NOTICE: avoid numbers in Class names ( class Widget_Ann1Controller......)

Share This Page

All rights reserved SocEngine.ru ©