2013-04-09 3 views
2

Мое приложение db только что перешло на 100 Гбит, и оно скоро закончится.замените первую страницу результатов из clistview со статической страницей

Я могу сохранить его, если я могу заменить первую страницу результатов CListView на статическую страницу.

Серверу проще распечатать статическую страницу. И я могу легко восстанавливать статические страницы, ежедневно по мере необходимости.

Нет кода, потому что я не могу понять, как изменить ClistView, чтобы достичь моей цели, если это возможно;

Ответ найден при использовании распределения memmory;

Для тех, кто знает, как работать с Memmory, есть термин SENTINEL

при добавлении новых данных в очереди, вы должны найти правильное положение для данных, а затем вставьте его

по используя сторожей, вы willalways, по крайней мере 2 элементов в очереди

это то, что я для того чтобы достигнуть нужду

мне нужно поставить дозорных, перед первым элементом CListView

Мне нужно манипулировать clistview; я просто хочу, чтобы установить первую страницу CListView, с моей статической страницы

может быть, нумерация страниц будет установлено 40 элементов, и моей статической страницы будет иметь 1000 на странице

но когда пользователь нажимает стр.2 или 3 или 4 ... clistview должен перечислить следующие 40

для страницы 2, на самом деле, clistview представит первые реальные результаты; все подталкивается вправо

+0

Что вы хотите показать на своей статической странице? Если это действительно статическая страница, тогда у нее даже не будет разбиения на страницы. Другое, это не статично. В этом случае мне интересно, как вы хотите перейти к следующим страницам. –

+0

Я хочу активировать навигацию, даже если первая страница статична. –

+0

Тогда вы не должны называть эту «статическую страницу». Вы увидите запрос БД на этой странице, потому что для разбивки на страницы всегда требуется 1 запрос для получения общего счета. –

ответ

2

Вы можете использовать page caching, изменяясь по индексу страницы CListView. Конечно, это не так быстро, как возвращение статической страницы, но может значительно повысить производительность.

UPDATE

Для того, чтобы заменить ссылку на первую страницу в CListView вы можете переопределить createPageUrl метод CLinkPager:

<?php 
class StaticLinkPager extends CLinkPager 
{ 
    public $firstPageUrl; 

    protected function createPageUrl($page) 
    { 
     if ($page == 1) 
      return $this->firstPageUrl; 
     return parent::createPageUrl($page); 
    } 
} 

и использовать его вместе с CListView установки свойства pager в:

array(
    'class' => 'StaticLinkPager', 
    'firstPageUrl' => '/list-view-first-static-page.html' 
) 
+0

Я использую кеширование страниц; Но можно ли заменить первую страницу? –

+0

Если вы используете кеширование страниц, и если вы можете легко восстановить статический контент на первых страницах «CListView», значит, вам нужно только заменить ссылку на первую страницу в пейджере CListView? – Ezze

+0

нет, я отредактировал мое описание, прочитанное выше, –

2

Ваш комментарий я думаю, вы, вероятно, хотите что-то вроде этого:

<?php if($dataProvider->pagination->currentPage==0): ?> 
    <?php /* 
     Render your static content + a custom CLinkPager here. 
     Feed $dataProvider->pagination as 'pages' into the link pager. 
    */ ?> 
<?php else: ?> 
    <?php /* Render your listview here */ ?> 
<?php endif; ?> 

Как я сказал в моем комментарии выше вы будете видеть 1 запрос для выборки количество элементов. Вы не можете избежать этого, пока вы также показываете разбивку на страницы для вашего «статического» контента.

+0

что-то вроде этого; я должен создать поддельный пейджер –

Смежные вопросы