Losowo wyswietlana strona

malyd77

No avatar

2007-06-06 11:23

wITAM

Czy jest możliwość losowego wyświetlania strony startowej ze zbioru podstron zawartych w serwisie www.?

Pozdrawiam
Dawid

» Quick.Cms v1.x

Dawid

treewood (OpenSolution)

Avatar: treewood

2007-06-06 14:14

malyd77 - jest prosty aczkolwiek nie idealny sposob. Ten idealny wymagalby sporej pracy i dobrej znajomosci naszych narzedzi. Daje wiec prosty sposob:
1. edytuj index.php i znajdz: $p = 'p_'.$config['start_page'];
2. zmien:

$p  'p_'.$config['start_page'];

na

$p  'p_'.rand1);


rand( 1, 5 ); to funkcja, ktora zwroci Ci wartosc losowa z zakresu od 1 do 5 czyli albo 1, albo 2, albo 3, albo 4, albo 5. W ten sposob bedziesz mogl wyswietlic losowa strone, ktorej ID z zakresu 1 do 5. Pamietaj bys posiadal wszystkie ID z tego zakresu. Jesli sie okaze, ze nie posiadasz strony o ID 4 a losowo funkcja rand() wybierze ta liczbe to wyskoczy blad. Zakres oczywiscie mozesz sobie zwiekszac.

Wiecej informacji na temat funkcji: http://pl2.php.net/manual/pl/function.rand.php

malyd77

No avatar

2007-06-06 15:23

dzięki

Dawid

grabek

Avatar: grabek

2011-07-13 12:57

A czy dałoby się tak modyfikować skrypt, aby jako strona startowa wyświetlała się zawsze strona z największym ID, czyli de facto ostatnio dodana podstrona? Oczywiście bez dodatkowych rozgraniczeń typu pobieranie ID podstron przypisanych tylko do jednego rodzaju menu, bo to byłoby rozwiązanie idealne, ale pewnie znacznie trudniejsze do osiągnięcia :-) Jeśli jest taka możliwość, to proszę o wskazówki typu krok-po-kroku jak to zrobić :-)

grabek

boboo

Avatar: boboo

2011-07-13 13:25

@grabek,
nie wiem jaką masz wersję q.cms, ale w 3.0 powinno działać:
z index.php tę konstrukcję:
if(isset($aActions['f'])&&$aActions['f']=='p')
$iContent=(isset($aActions['a'])&&is_numeric($aActions['a']))?$aActions['a']:$config['star t_page'];
zamień na:
if(isset($aActions['f'])&&$aActions['f']=='p'){
$oFF=FlatFiles::getInstance();
$iContent=(isset($aActions['a'])&&is_numeric($aActions['a']))?$aActions['a']:$oFF->thro wLastId(DB_PAGES,'iPage');
}

it-service.kimla.de ---> qc plugins&tips

grabek

Avatar: grabek

2011-07-13 15:15

Witam ponownie,

mój błąd - zapomniałem dodać jakiej wersji q.cms sprawa dotyczy. Mam wersję 3.1 i rozwiązanie, które mi podałeś działa prawidłowo :-) Trzeba co prawda usunąć jedną spację między literką "o" i "w" w frazie "trowLastId", ale to chyba dość oczywiste :-)

Dziękuję za szybką pomoc i pozdrawiam serdecznie!

grabek

boboo

Avatar: boboo

2011-07-13 15:40

ooo, faktycznie literówka ;-)
to teraz przybliż trochę ten drugi problem z przypisaniem tylko do jednego rodzaju menu.
może coś poradzę.

grabek

Avatar: grabek

2011-07-23 07:56

Witam ponownie,

drugi pomysł miałem taki, aby jako strona główna była wyświetlana podstrona z najwyższym ID, ale tylko z jednego określonego menu, np. menu 3. Zatem dodaję nową podstronę do menu nr 3 i staje się ona automatycznie nową stroną główną, ale dodam jakąś podstronę do innego menu (np. menu 1) i ona wówczas nie jest wyświetlana jako nowa strona główna, mimo że będzie miała wyższy ID niż inna strona dodana wcześniej do menu nr 3.

Mam nadzieję, że w miarę zrozumiale udało mi się przedstawić ten problem? :-)

grabek

boboo

Avatar: boboo

2011-07-23 09:43

dodaj w general.php takie coś:
$config['start_menu']=2;
(to jest numer menü, z którego będzie pobierane ostatnie ID)
teraz w index.php
zamień to poprzednie (4 posty wyżej) na:


if(isset($aActions['f'])&&$aActions['f']=='p'){
 if(isset(
$config['start_menu'])&&is_numeric($config['start_menu'])&&in_array($config['start_ menu'],$aMenuTypes,true)){
  
$aDbPages=null;
  
$aFile=file(DB_PAGES);
  
$iCount=count($aFile);
  for(
$i=1;$i<$iCount;$i++){
   
$aExp=explode('$',$aFile[$i]);
   if(
$aExp[7]==$config['start_menu'])
    
$aDbPages[]=$aFile[$i];
  }
  
$iLastAdded=0;
  
$iCount=count($aDbPages);
  for(
$i=0;$i<$iCount;$i++){
   
$aExp=explode('$',$aDbPages[$i]);
   if(
$aExp[0]>$iLastAdded)
    
$iLastAdded=$aExp[0];
  }
  
$iContent=(isset($aActions['a'])&&is_numeric($aActions['a']))?$aActions['a']:$iLastAdded;
 }
 else{
  
$oFF=FlatFiles::getInstance();
  
$iContent=(isset($aActions['a'])&&is_numeric($aActions['a']))?$aActions['a']:$oFF->throwL astId(DB_PAGES,'iPage');
 }
}

it-service.kimla.de ---> qc plugins&tips

boboo

Avatar: boboo

2011-07-23 09:45

w ostatniej linijce, "throwLastId" ma być jako jeden wyraz.

it-service.kimla.de ---> qc plugins&tips

boboo

Avatar: boboo

2011-07-23 09:47

w drugiej linijce też:
$config['start_ menu'] ma być "start_menu" (bez spacji).

Niestety, widzę to dopiero po wysłaniu.

it-service.kimla.de ---> qc plugins&tips

Do góry
o nas | kontakt