Здравей Гост ! Регистрирай се и влез .

Уеб хостинг и регистрация на домейни

Навигация на книгата

Последни коментари

Кой е онлайн

В момента са 0 потребители и 1 гост online.

Гласуване

Какво харесвате в България?
Планините
25%
Морето
25%
Туризъм без значение
9%
Разходки в планините с апарат в ръка
13%
Лагеруване с палатки в планините
6%
Катерене
0%
Обикаляне с кола пък където свари
13%
Само на хотели
0%
Градовете и селата
9%
Общо гласове: 32

Разпространи

Разпространи съдържание
8 отговори [Последно мнение]
снимка на sve
sve
Offline
Регистриран: 16 Ноем. 2009
Мнения (публикации):

Здравейте,
Ситуацията е следната
Настроил съм page при създаване да е активирана опцията "Фиксиран най-горе в списъка"
Трябва ми обаче така да остават винаги само последните (най-новите) 3 добавени.
Опитах с Rules, но не разбрах точно какво прави.

Общо взето има начална страница с много views в първото се показват "Фиксирани ..." в другите - по категории след горните (т.е. нефиксираните), за да не се дублират в различните views

Идеята, която ми е най-близо за сега е при запис на нова page да взема най-голямото NID-3 и да му променям "Фиксирани ..."

Това ли е правилната логика?

Настройки изглед коментари
Изберете предпочитания от Вас начин за показване на коментарите и кликнете на "Запиши настройките", за да активирате Вашите промени.
Detritus
Offline
Регистриран: 14 Февр. 2010
Мнения (публикации):
Ако правилно съм разбрал,

Ако правилно съм разбрал, решението е много лесно, направи си един views, добави си полетата, които искаш да се визуализират и Items to display = 3 . Сложи си Sort criteria descending (по минути примерно). Добави един display block и му задай да го визуализира само на съответната страница. Ако съм разбрал грешно дай да видим някакъв пример за ориентация Smile.

снимка на sve
sve
Offline
Регистриран: 16 Ноем. 2009
Мнения (публикации):
и това е решение, ако има

е, прекалено е лесно, за да е това Smile

и това е решение, ако има едно views за показване, случаят обаче е друг

Както казах, на първата страница има много views
1. за показване на последни 3, без оглед на категория, а в следващите става интересно Smile

2. има 3 views, които показват всяко от тях последни 3 от 3 категории от един речник, разбира се без тези в първото views

3. има 4 views, които показват всяко от тях последни 3 от 4 категории от друг речник, разбира се без тези в първото views

в първото се показват най-нови без оглед на категориите, а следващите са по категории, като пропускат тези, показани в първото. Не се знае статия от коя категория ще се пише, за да се зададе офсет на следващите views

решението според мен е последните 5 да са маркирани по някакъв начин, варианти има много, аз съм си избрал да се "фиксират", не държа твърдо на това, ако има друго решение

засега е с вариант полуавтоматизирано, т.е. като си въведеш за деня например статиите да влезеш в "Съдържание" и 10 например след първите 3 да се маркират и да се направят "Нефиксирани", което също не е кой знае какво затруднение

Истинско автоматизирано решение, според мен в този случай, е функция в template.php, която при запис на нова статия да промени на последен nid-3 (id на последния нод минус три) "фиксиран" на "нефиксиран" (в случай че ми остане време по този проект)

снимка на vodoleq
vodoleq
Offline
Регистриран: 20 Март 2009
Мнения (публикации):
SVE, дай реалния пример че

SVE, дай реалния пример че се оплетох стези обяснения или дай пример с измислени категории:ябълки и круши и тем подобни че с числа не мота да си го представя Smile

снимка на sve
sve
Offline
Регистриран: 16 Ноем. 2009
Мнения (публикации):
ето реалния пример

може малко объркано да го обяснявам :) ето:

пример

снимка на vodoleq
vodoleq
Offline
Регистриран: 20 Март 2009
Мнения (публикации):
уаууу ти ме удари в земята с

уаууу ти ме удари в земята с това нещо Shock
сложно ми се вижда на пръв поглед,но ще мисля върху въпроса Smile

снимка на sve
sve
Offline
Регистриран: 16 Ноем. 2009
Мнения (публикации):
първото views, то е ясно

първото views, то е ясно сортира ги единствено по дата, без филтър, с лимит 3

следващите сащо сортират по дата с лимит 3, филтър съответната категория, и филтър за фиксиран = Не

с функцията целта е след запис на нод, на нод айди минус 3 да промени фиксиран на нефиксиран, за да отпадне от първото views и да "влезе" в съответното следващо views

благодаря за отделеното време, и аз ще го мисля като ми остане време, сега се боря с css и js Smile

снимка на vodoleq
vodoleq
Offline
Регистриран: 20 Март 2009
Мнения (публикации):
така и не мога да си го

така и не мога да си го представя за последното. така ,че се сетих за вариант с Панелс модула да си обособиш по елементарни Вюс в него, така няма ли да ти е по лесно ? так апотребителите ще виждам същият резултат

снимка на sve
sve
Offline
Регистриран: 16 Ноем. 2009
Мнения (публикации):
реших си въпроса с добавка

реших си въпроса Smile

с добавка към _preprocess_node на

  //Промяна на sticky за по-стар нод
  if ($variables['type'] == 'story') {
    $node = db_query('SELECT MAX(nid) FROM {node}');
    $row = mysql_fetch_array($node, MYSQL_NUM);
    $older = $row[0] - 3;
 
    db_query("UPDATE {node} SET {sticky} = 0 WHERE nid = $older");
  }

може още малко да се оптимизира май, подсказките са добре дошли Smile

едит:

в една тема (custom) горния код работи като пушка, а в друга (субтема на ZEN) не, та се наложи да го приведа по стандарта, с лек ъпгрейд за ограничаване в търсенето

  if ($vars['type'] == 'story') {
    $node = db_query_range("SELECT MAX(nid) FROM {node} WHERE type = 'story'");
    $row = db_fetch_array($node, MYSQL_NUM);
    $older = $row[0] - 3;
 
    db_query("UPDATE {node} SET {sticky} = 0 WHERE nid = $older");
  }

едит2: това работи, но не е правилната логика

едит3: последен вариант

function MyTheme_preprocess_node(&$variables) {
  // test for story node type
  if ($variables['type'] == 'story') {
    $node = db_query("SELECT n.nid, n.sticky FROM {node} n WHERE n.type = 'story' ORDER BY n.nid DESC LIMIT 6");	
      while ($row = db_fetch_array($node, MYSQL_NUM)) {
        $older = $row[nid]; //взима id на 6-ия последно добавен от този вид
		$older_s = $row[sticky];
	  }
	  if ($older_s == '1') {
        db_query("UPDATE {node} SET {sticky} = 0 WHERE nid = $older");
	  }
  }
 
}