Zobacz pełną wersję : Różne kolory artykułów na stronie głównej
Mam problem z wymyśleniem metody, która nadawałaby jednej z kolumn na stronie głównej, w widoku artykułów identyfikator. Chodzi o proste rozróżnienie 1-2. Parzyste artykuły miałyby jeden kolor a nieparzyste drugi.
Najprostszym rozwiązaniem wydaje mi się sprawdzanie aktualnej ilości artykułów, ale nie mogę w dokumentacji znaleźć, czy istnieje jakaś zmienna która przechowuje tą liczbę.
Z tego co zauważyłem wcześniej łączenie się z bazą i wyciąganie z niej bezpośrednio tej zmiennej, nie jest dobrą metodą bo większość tych danych ma już swoją nazwę w J!, tyle że ja nie za bardzo się w tym orientuję.
Podsumowując, chcę wiedzieć czy moje podejście jest prawidłowe i jeśli tak, to jakieś wskazówki co do tej zmiennej (jest jakaś lista zmiennych w J!?). Jeśli natomiast źle kombinuję, to proszę o jakieś inne rozwiązanie.
Witam,
chodzi o blog czy o listę, sekcje czy kategorie?
O artykuły wyświetlane na stronie głównej. Modyfikuję (nadpisuję szablonem) pliki z katalogu frontpage.
Nie wiem czy rozumiem (wizualnie) o co Ci chodzi.
Ile ma być kolumn? Mam rozwiązanie dla np. 2 kolumn, jedna w kolorze a , druga w kolorze b.
Ale nie jestem pewna czy o to chodzi.
Najlepszy byłby jakiś rysunek, szablonik??
<?php // no direct access
defined('_JEXEC') or die('Restricted access');
$canEdit = ($this->user->authorize('com_content', 'edit', 'content', 'all') || $this->user->authorize('com_content', 'edit', 'content', 'own'));
?>
<?php if ($this->item->state == 0) : ?>
<div class="system-unpublished">
<?php endif; ?>
<?php if ($canEdit || $this->item->params->get('show_title') || $this->item->params->get('show_pdf_icon') || $this->item->params->get('show_print_icon') || $this->item->params->get('show_email_icon')) : ?>
<div id="artykul">
<div id="art_left">
<div id="data">
<div id="rok">
<?php if ($this->item->params->get('show_create_date')) : ?>
<?php echo JHTML::_('date', $this->item->created, JText::_('%Y')); ?>
</div>
<div class="szczegoly">
<?php echo JHTML::_('date', $this->item->created, JText::_('<strong>%d</strong>/%m')); ?>
<?php endif;?>
</div>
<div class="linia"></div>
</div>
<div id="autor">
<div class="posted">WPISANY PRZEZ:</div>
<div class="szczegoly2">
<?php if (($this->item->params->get('show_author')) && ($this->item->author != "")) : ?>
<?php JText::printf(($this->escape($this->item->created_by_alias) ? $this->escape($this->item->created_by_alias) : $this->escape($this->item->author)) ); ?>
<?php endif; ?>
</div>
<div class="linia"></div>
</div>
<div id="kategoria">
<div class="posted">Kategoria:</div>
<div id="kat_szczeg">
<?php if (($this->item->params->get('show_section') && $this->item->sectionid) || ($this->item->params->get('show_category') && $this->item->catid)) : ?>
<?php if ($this->item->params->get('show_section') && $this->item->sectionid && isset($this->item->section)) : ?>
<?php if ($this->item->params->get('link_section')) : ?>
<?php echo '<a href="'.JRoute::_(ContentHelperRoute::getSectionRoute($t his->item->sectionid)).'">'; ?>
<?php endif; ?>
<?php echo $this->escape($this->item->section); ?>
<?php if ($this->item->params->get('link_section')) : ?>
<?php echo '</a>'; ?>
<?php endif; ?>
<?php if ($this->item->params->get('show_category')) : ?>
<?php echo ' - '; ?>
<?php endif; ?>
<?php endif; ?>
<?php if ($this->item->params->get('show_category') && $this->item->catid) : ?>
<?php if ($this->item->params->get('link_category')) : ?>
<?php echo '<a href="'.JRoute::_(ContentHelperRoute::getCategoryRoute($ this->item->catslug, $this->item->sectionid)).'">'; ?>
<?php endif; ?>
<?php echo $this->escape($this->item->category); ?>
<?php if ($this->item->params->get('link_category')) : ?>
<?php echo '</a>'; ?>
<?php endif; ?>
<?php endif; ?>
<?php endif; ?>
</div>
</div>
<div id="czytaj_wiecej">
<?php if ($this->item->params->get('show_readmore') && $this->item->readmore) : ?>
<a href="<?php echo $this->item->readmore_link; ?>" class="readon<?php echo $this->escape($this->item->params->get('pageclass_sfx')); ?>">
<?php if ($this->item->readmore_register) :
echo JText::_('Register to read more...');
elseif ($readmore = $this->item->params->get('readmore')) :
echo $readmore;
else :
echo JText::sprintf('Read more...');
endif; ?></a>
<?php endif; ?>
</div>
</div>
<div id="art_right">
<table class="contentpaneopen<?php echo $this->escape($this->item->params->get( 'pageclass_sfx' )); ?>">
<tr>
<?php if ($this->item->params->get('show_title')) : ?>
<td class="contentheading<?php echo $this->escape($this->item->params->get( 'pageclass_sfx' )); ?>" width="100%">
<?php if ($this->item->params->get('link_titles') && $this->item->readmore_link != '') : ?>
<a href="<?php echo $this->item->readmore_link; ?>" class="contentpagetitle<?php echo $this->escape($this->item->params->get( 'pageclass_sfx' )); ?>">
<?php echo $this->escape($this->item->title); ?></a>
<?php else : ?>
<?php echo $this->escape($this->item->title); ?>
<?php endif; ?>
</td>
<?php endif; ?>
<!--Przyciski kolo tytulu newsa -->
<?php if ($this->item->params->get('show_pdf_icon')) : ?>
<td align="right" width="100%" class="buttonheading">
<?php echo JHTML::_('icon.pdf', $this->item, $this->item->params, $this->access); ?>
</td>
<?php endif; ?>
<?php if ( $this->item->params->get( 'show_print_icon' )) : ?>
<td align="right" width="100%" class="buttonheading">
<?php echo JHTML::_('icon.print_popup', $this->item, $this->item->params, $this->access); ?>
</td>
<?php endif; ?>
<?php if ($this->item->params->get('show_email_icon')) : ?>
<td align="right" width="100%" class="buttonheading">
<?php echo JHTML::_('icon.email', $this->item, $this->item->params, $this->access); ?>
</td>
<?php endif; ?>
<?php if ($canEdit) : ?>
<td align="right" width="100%" class="buttonheading">
<?php echo JHTML::_('icon.edit', $this->item, $this->item->params, $this->access); ?>
</td>
<?php endif; ?>
</tr>
</table>
<?php endif; ?>
<?php if (!$this->item->params->get('show_intro')) :
echo $this->item->event->afterDisplayTitle;
endif; ?>
<?php echo $this->item->event->beforeDisplayContent; ?>
<table class="contentpaneopen<?php echo $this->escape($this->item->params->get( 'pageclass_sfx' )); ?>">
<tr class="podkreslenie"></tr>
<?php if ($this->item->params->get('show_url') && $this->item->urls) : ?>
<tr>
<td valign="top" colspan="2">
<a href="http://<?php echo $this->escape($this->item->urls) ; ?>" target="_blank">
<?php echo $this->escape($this->item->urls); ?></a>
</td>
</tr>
<?php endif; ?>
<tr>
<td valign="top" colspan="2">
<?php if (isset ($this->item->toc)) : ?>
<?php echo $this->item->toc; ?>
<?php endif; ?>
<?php echo $this->item->text; ?>
</td>
</tr>
<?php if ( intval($this->item->modified) != 0 && $this->item->params->get('show_modify_date')) : ?>
<tr>
<td colspan="2" class="modifydate">
<?php echo JText::sprintf('LAST_UPDATED2', JHTML::_('date', $this->item->modified, JText::_('DATE_FORMAT_LC2'))); ?>
</td>
</tr>
<?php endif; ?>
</table>
<?php if ($this->item->state == 0) : ?>
</div>
<?php endif; ?>
<span class="article_separator"> </span>
<?php echo $this->item->event->afterDisplayContent; ?>
</div>
<div class="clear"></div>
</div>
Chodzi o kolor WIERSZY. Div o ID art_left ma zmieniać kolor (raz kolor a, drugi raz kolor b). Kod wygląda dość spartańsko, ale układ jest też dość skomplikowany :/
Hamster21
19-09-2010, 21:48
A nie lepiej zrobić przypisywanie clasy w css w zależności od parzystości zmiennej?
Oj @Hamster21 a co ja właśnie próbuję zrobić? Ale tą zmienną trzeba skądś wziąć i ja się zastanawiam skąd najlepiej (zresztą w pierwszym poście o tym napisałem).
@Robster, jeśli chodzi o to co napisał Hamster21, wyguglaj sobie o pseudoklasie nth-child
-----------
( tylko w ie < 9 - "lipa")
Najłatwiej jest dodać numerowanie wyświetlanych artykułów, potem sprawdzić czy nr jest parzysty czy nie ..
1. dodanie numerowania: plik components/com_content/models/frontpage.php linia 104 jest
foreach ($Arows as $row)
{
// check to determine if section or category has proper access rights
$rows[$i] = $row;
$i ++;
}zamień na
foreach ($Arows as $row)
{
// check to determine if section or category has proper access rights
$rows[$i] = $row;
$rows[$i]->nr = $i;
$i ++;
}2. pobranie numeru i sprawdzenie czy numer jest parzysty w pliku default_item.php
$nr = $this->item->nr;
$parzysty = $nr%2;Wystarczy dodać warunek sprawdzający czy $parzysty == 0 (wtedy nr parzysty) i reszta chyba jasna...
:)
@Robster, jeśli chodzi o to co napisał Hamster21, wyguglaj sobie o pseudoklasie nth-child
-----------
( tylko w ie < 9 - "lipa")
Znam tą klasę, ale umknęło Ci, że ja potrzebuję tego do DIV'a :) A z tego co pamiętam w ten sposób ta pseudoklasa nie funkcjonuje :)
@jolaass dzięki serdeczne. Szukałem pliku który byłby odpowiedzialny za numerowanie artykułów i do tego pliku też zaglądałem, ale oczywiście mi umknęło :/
A już całkiem na marginesie zapytam, czy w dokumentacji J! jest gdzieś dział z opisem metod i funkcji jakie znajdują się w każdym pliku? Chodzi o to by się zorientować gdzie szukać kodu, który odpowiada za konkretną rzecz. Na razie uczę się tego w taki sposób jak tutaj, czyli w praktyce, na własnych błędach i z pomocą bardziej doświadczonych.
PS
Ten post jest numerem 666 :lol:
a po co sprawdzać numery artykułów?
$zmienna = 0;
if($zmienna){$klasa="klasa1"; $zmienna=0;}
else{{$klasa="klasa2"; $zmienna=1;}}
A ta $zmienna, nie zostanie przypadkiem skasowana po dodaniu artykułu i w kółko będzie 0?
raczej nie, jeśli umieścisz definicję jej poza foreach a warunki w środku to powinno wszystko się zgrać.
Pytam z ciekawości bo problem rozwiązałem wcześniej podanym kodem, a tutaj zwyczajnie mi się wydaje, że zmienna przy każdym dodaniu artykułu ulatuje w powietrze :)
to zależy jak do tego podejdziesz.
Jeśli chcesz od razu definiować klasę przy dodawaniu artykułu to faktycznie uleci, jeśli natomiast chcesz przypisywać klasy dopiero przy listingu to nie
No właśnie klasa jest definiowana zaraz po dodaniu artykułu (a przynajmniej tak sądzę, biorąc pod uwagę modyfikowany plik).
vBulletin® v4.2.5, Prawa przedruku © 2024 vBulletin Solutions, Inc. Wszystkie prawa zastrzeżone.
Tłumaczenie: Polskie Centrum Joomla!