• 16-07-2014, 23:44:13
    #1
    arkadaşlar merhaba bir cms sistemi modülüne ait olan kod parçası aşşağıdaki gibi.kodda hangi kategoriden kaç adet makale çekebileceğimi belirte biliyorum ama ekrana gelen konular tarihe göre ekrana geliyor ben rastgele gelmesini istiyorum yardımcı olacak arkadaşlara şimdiden teşekkür ederim.

    Kod :

    <{php}>
    include_once XOOPS_ROOT_PATH . '/modules/publisher/include/common.php';
    $publisher =& PublisherPublisher::getInstance();
    $myts =& MyTextSanitizer::getInstance();
    $itemsObj = $publisher->getHandler('item')->getItems($limit = 8, $start = 0, array(_PUBLISHER_STATUS_PUBLISHED), -1, $sort = 'datesub', $order='DESC', '', true, $criteria = null, true);
    $totalItems = count($itemsObj);
    
    global $items;
    $items = array();
    if ($itemsObj) {
    		for ( $i = 0; $i < $totalItems; $i++ ) {
    
    			$newItems['itemid']       = $itemsObj[$i]->itemid();
    			$newItems['title']        = $itemsObj[$i]->title();
    			$newItems['body']         = $itemsObj[$i]->body();
    			$newItems['votes']        = $itemsObj[$i]->votes();
    			$newItems['image']        = XOOPS_URL . '/uploads/blank.gif';
                $images = $itemsObj[$i]->getImages();
                if (is_object($images['main'])) {
                    $newItems['image'] = XOOPS_URL . '/uploads/' . $images['main']->getVar('image_name');
                }
            $items[] = $newItems;
    	}
    }
    <{/php}>
    <!-- Slider -->
    
    		
    
    		
    		
    
    			<{php}>
            foreach ( $GLOBALS['items'] as $myrow )
            {
            $GLOBALS['xoopsTpl']->assign('itemid', $myrow['itemid']);
            $GLOBALS['xoopsTpl']->assign('title', $myrow['title']);
            $GLOBALS['xoopsTpl']->assign('body', $myrow['body']);
            $GLOBALS['xoopsTpl']->assign('votes', $myrow['votes']);
            $GLOBALS['xoopsTpl']->assign('image', $myrow['image']);
    <{/php}>
    
           
    		<div class="short-film">
            <div class="img-block border-2">
            <img src="<{$image}>" alt="<{$title}>" class="img-poster border-2 shadow-dark7" width="151" height="215" />
            <div class="text-block">
                <p class="opis"><{$title}></p>
                <p><{$body|truncate:220}></p>
                <div class="ratin">Voting : <{$votes}> </div>
                <a href="<{$xoops_url}>/modules/publisher/item.php?itemid=<{$itemid}>" title="<{$title}>" class="look-movie border-3">watch</a>
            </div>
            </div>   
            <h5><a href="<{$xoops_url}>/modules/publisher/item.php?itemid=<{$itemid}>" class="full-link border-2" title="<{$title}>"><{$title}></a></h5>
            <div class="clr"></div>
    	   </div>
    		 <{php}>
            }
    		  
    <{/php}>
  • 16-07-2014, 23:50:37
    #2
    Gelen objeleri bir diziye aktarabilir daha sonra random sınıfı ile rastgele sayı üretebilirsiniz.

    http://php.net/manual/en/function.rand.php
    http://www.w3schools.com/php/func_math_rand.asp

    Dip Not (ÖNEMLİ) : Ürettiğiniz int veya stringleri bir diziye atıp rastgele getirilen değerlerin tekrarlanmasını engellemelisiniz yoksa aynı konu sitenizde görünebilir.
  • 16-07-2014, 23:54:25
    #3
    $itemsObj = $publisher->getHandler('item')->getItems($limit = 8, 
    $start = 0, array(_PUBLISHER_STATUS_PUBLISHED), -1, $sort = 'datesub', 
    $order='DESC', '', true, $criteria = null, true);
    hocam bu bölümdeki "$order='DESC'" kısmını "$order='rand()'" olarak değiştirirseniz kayıtlar rastgele olarak gelecektir .....
  • 17-07-2014, 00:02:36
    #4
    RooTsGhosT adlı üyeden alıntı: mesajı görüntüle
    $itemsObj = $publisher->getHandler('item')->getItems($limit = 8, 
    $start = 0, array(_PUBLISHER_STATUS_PUBLISHED), -1, $sort = 'datesub', 
    $order='DESC', '', true, $criteria = null, true);
    hocam bu bölümdeki "$order='DESC'" kısmını "$order='rand()'" olarak değiştirirseniz kayıtlar rastgele olarak gelecektir .....
    Hocam cvp için teşşekkürler ama onu zaten denemiştim olmuyor.
  • 17-07-2014, 01:13:47
    #5
    Direk rand metodu kullanmak yerine metoda aralık verirseniz dbde olmayan veriyi çekmeye çalışmaz.

    int rand ( int $min , int $max )