PDA

Zobacz pełną wersję : Pole Reklamy Pomiędzy artykułami K2



lukix
14-01-2014, 01:54
Witam,
Szukałem już wszędzie ale niestety nie znalazłem nigdzie rozwiązania.
Chodzi mi o to aby na stronie głównej były wyświetlane:
3 artykuły potem miejsce na Banner/Reklame i pozostałe artykuły.
Art 1 | Art 2 | Art 3| Banner | Art 4 | Art n |
Coś w tym stylu i niestety nie wiem jak osiągnąć ten efekt..
Jeśli ktoś potrafiłby pomóc to będe bardzo wdzięczny
Joomla 2.5 + K2

pawelSafiStudio
14-01-2014, 13:28
Hmm,

nie przychodzi mi na myśl żaden plugin :( Ale w sumie sprawa bardzo prosta do modyfikacji w kodzie templatki K2. Programujesz trochę ?

lukix
15-01-2014, 18:38
Programowaniem tego nazwać nie można ale coś dam rade skleić. Jeśli masz jakieś wskazówki to może dam rade:)

pawelSafiStudio
16-01-2014, 08:25
Ok. Zatem w prosty sposób możesz zmodyfikować sobie plik templaki k2 category.php. Tam masz pętle foreach dla wyświetlania artykułów w postacie leading, primary etc. Na początku tych pętli musisz sobie zadeklarować licznik np. zmienną $licznik. Po każdym wywołaniu templatki item (echo $this->loadTemplate('item');) zwiększasz sobie ten licznik o 1 i sprawdzasz resztę z dzielenia przez 3. Jeśli reszta jest równa 0 to includujesz moduł reklamy. Jak includować moduły bezpośrednio w kodzie masz podpowiedź tutaj:
http://docs.joomla.org/JModuleHelper/getModule

lukix
30-04-2014, 16:30
Rozumiem że, modyfikacji należy dokonać w tym fragmencie kodu, natomiast nie wiem dokładnie jak to ugryźć, chce wstawić po 3 art reklame w formacie flash lub jpg, może być wstawiana z poziomu pliku category.php nie koniecznie przez modul. Jeśli możliwa jest jakaś sugestia to byłbym wdzięczny:)
<?php if((isset($this->leading) || isset($this->primary) || isset($this->secondary) || isset($this->links)) && (count($this->leading) || count($this->primary) || count($this->secondary) || count($this->links))): ?> <!-- Item list --> <div class="itemList">
<?php if(isset($this->leading) && count($this->leading)): ?> <!-- Leading items --> <div id="itemListLeading"> <?php foreach($this->leading as $key=>$item): ?>
<?php // Define a CSS class for the last container on each row if( (($key+1)%($this->params->get('num_leading_columns'))==0) || count($this->leading)<$this->params->get('num_leading_columns') ) $lastContainer= ' itemContainerLast'; else $lastContainer=''; ?> <div class="itemContainer<?php echo $lastContainer; ?>"<?php echo (count($this->leading)==1) ? '' : ' style="width:'.number_format(100/$this->params->get('num_leading_columns'), 1).'%;"'; ?>> <?php // Load category_item.php by default $this->item=$item; echo $this->loadTemplate('item'); ?> </div> <?php if(($key+1)%($this->params->get('num_leading_columns'))==0): ?> <div class="clr"></div> <?php endif; ?> <?php endforeach; ?> <div class="clr"></div> </div> <?php endif; ?>
<?php if(isset($this->primary) && count($this->primary)): ?> <!-- Primary items --> <div id="itemListPrimary"> <?php foreach($this->primary as $key=>$item): ?> <?php // Define a CSS class for the last container on each row if( (($key+1)%($this->params->get('num_primary_columns'))==0) || count($this->primary)<$this->params->get('num_primary_columns') ) $lastContainer= ' itemContainerLast'; else $lastContainer=''; ?> <div class="itemContainer<?php echo $lastContainer; ?>"<?php echo (count($this->primary)==1) ? '' : ' style="width:'.number_format(100/$this->params->get('num_primary_columns'), 1).'%;"'; ?>> <?php // Load category_item.php by default $this->item=$item; echo $this->loadTemplate('item'); ?> </div> <?php if(($key+1)%($this->params->get('num_primary_columns'))==0): ?> <div class="clr"></div> <?php endif; ?> <?php endforeach; ?> <div class="clr"></div> </div> <?php endif; ?>
<?php if(isset($this->secondary) && count($this->secondary)): ?> <!-- Secondary items --> <div id="itemListSecondary"> <?php foreach($this->secondary as $key=>$item): ?> <?php // Define a CSS class for the last container on each row if( (($key+1)%($this->params->get('num_secondary_columns'))==0) || count($this->secondary)<$this->params->get('num_secondary_columns') ) $lastContainer= ' itemContainerLast'; else $lastContainer=''; ?> <div class="itemContainer<?php echo $lastContainer; ?>"<?php echo (count($this->secondary)==1) ? '' : ' style="width:'.number_format(100/$this->params->get('num_secondary_columns'), 1).'%;"'; ?>> <?php // Load category_item.php by default $this->item=$item; echo $this->loadTemplate('item'); ?> </div> <?php if(($key+1)%($this->params->get('num_secondary_columns'))==0): ?> <div class="clr"></div> <?php endif; ?> <?php endforeach; ?> <div class="clr"></div> </div> <?php endif; ?>
<?php if(isset($this->links) && count($this->links)): ?> <!-- Link items --> <div id="itemListLinks"> <h4><?php echo JText::_('K2_MORE'); ?></h4> <?php foreach($this->links as $key=>$item): ?>
<?php // Define a CSS class for the last container on each row if( (($key+1)%($this->params->get('num_links_columns'))==0) || count($this->links)<$this->params->get('num_links_columns') ) $lastContainer= ' itemContainerLast'; else $lastContainer=''; ?>
<div class="itemContainer<?php echo $lastContainer; ?>"<?php echo (count($this->links)==1) ? '' : ' style="width:'.number_format(100/$this->params->get('num_links_columns'), 1).'%;"'; ?>> <?php // Load category_item_links.php by default $this->item=$item; echo $this->loadTemplate('item_links'); ?> </div> <?php if(($key+1)%($this->params->get('num_links_columns'))==0): ?> <div class="clr"></div> <?php endif; ?> <?php endforeach; ?> <div class="clr"></div> </div> <?php endif; ?>
</div>

pawelSafiStudio
01-05-2014, 11:09
Ok,

podpowiem Ci jak z tym sobie poradzić. Przed kodem, który dodałeś deklarujesz sobie zmienną:


// deklarujemy zmienna do przechowywania aktualnego artykulu
$s_items = 0;


Następnie w każdej pętli gdzie wyświetlasz artykuł, sprawdzasz czy pokazać reklamę. Wygląda to mniej więcej tak:


foreach($this->leading as $key=>$item):
// Czesc kodu, ktora pominalem...............................
// ...........................
// Load category_item.php by default
$this->item=$item;
echo $this->loadTemplate('item');
// zwiekszamy aktualny numer artykulu
$s_items ++;

// sprawdzamy czy wyswietlic reklame
if($s_items==3){
$i_modules = JModuleHelper::getModules( 'pozycja_modulow' );
$i_module_style = array();
$i_module_style['style'] = 'xhtml';
foreach($i_modules as $i_module){
echo JModuleHelper::renderModule($i_module,$i_module_st yle);
}
}
// Dalsza czesc kodu, ktora pominalem .....................
// ......................


I na tym koniec.