Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]CMS MadeSimple moduł NEWS
Forum PHP.pl > Forum > Przedszkole
krisek78
szukam sposobu by z poziomu smartów bez grzebania w php wyświetlić jeden z newsów na samej górze listy "aktualności"

kod na wyświetlanie wszystkich jest taki:

Kod
{foreach from=$items item=entry}
<div class="NewsSummary">



<div class="NewsSummaryLink">
<a href="{$entry->moreurl}" title="{$entry->title|cms_escape:htmlall}">{$entry->title|cms_escape}</a>
</div>

{if $entry->postdate}
    <div class="NewsSummaryPostdate">
        Opublikowano: {$entry->postdate|cms_date_format}
    </div>
{/if}

{if $entry->summary}
    <div class="NewsSummarySummary"> <br />
        {eval var=$entry->summary}
    </div>

    <div class="NewsSummaryMorelink">
        {$entry->morelink} &raquo;
    </div>

{else if $entry->content}

    <div class="NewsSummaryContent"><br />
        {eval var=$entry->content}
    </div>
{/if}

{if isset($entry->extra)}
    <div class="NewsSummaryExtra">
        {eval var=$entry->extra}
    {* {cms_module module='Uploads' mode='simpleurl' upload_id=$entry->extravalue} *}
    </div>
{/if}
{if isset($entry->fields)}
  {foreach from=$entry->fields item='field'}
     <div class="NewsSummaryField">
        {if $field->type == 'file'}
          <img src="{$entry->file_location}/{$field->value}"/>
        {else}
          {$field->name}:&nbsp;{eval var=$field->value}
        {/if}
     </div>
  {/foreach}
{/if}

<div style="margin-left: auto; margin-right: auto; width: 200px; height: 60px; background: url('/images/aag/aag_aktualnosci_sep.png') no-repeat;"></div>

</div>
{/foreach}


w dokumentacji: http://docs1.cmsmadesimple.org/modules/core/news nie znalazłem nic co mogło by pomóc .....
viking
W $items masz tablicę newsów więc np $items.0 to pierwszy.
krisek78
coś nie bardzo chce mi działać ...

zamknąłem to w takiej konstrukcji:

Kod
{foreach from=$items item=entry key=i}
{if $i == 168}
    {* wyświetlanie 168. elementu *}
{else}
    {* wyświetlanie reszty *}
{/if}
{/foreach}


tym sposobem 168 element powinien być na górze każdej strony.
niestety skrypt to olewa i wyświetla "po staremu".
trueblue
Twój powyższy kod nic nie zmienia w wyświetlaniu, bo tak właśnie działa.
Skoro kolejność elementów w tablicy nie jest zmieniona, tzn. ten o indeksie 168 nie jest pierwszy, to dla indeksów 0-167 będzie spełniony else (te są w pierwszej kolejności i będą wyświetlone), następnie if $i==168, a dla indeksów > 168 ponownie else.

Bez grzebania w php i zmiany tablicy, możesz utworzyć dwie pętle. W jednej warunek na wyświetlenie jeśli $i==168, a w drugiej jeśli $i<>168.
krisek78

chciałem to rozwiązać inaczej niestety nie udaje mi się uzyskać numerów $items.index tak aby odpowiadały tym za bazy danych - niestety

gdyby udało się to zrobić to wtedy robię 2 pętle
- pierwsza na każdej z podstron na samej górze wyświetla element nr 168
- druga wyświetla newsy jak leci po kolei

questionmark.gif może tak było by najłatwiej ...
trueblue
Jeśli w każdym elemencie tablicy brak indeksu (odpowiednika z bazy danych), o którym piszesz wyżej, to nie wyczarujesz tego.

Natomiast ja nie wiem do końca co masz na myśli, bo dalej piszesz o jakiejś przeszkodzie, która uniemożliwia Ci utworzenie dwóch pętli. Dwie pętle możesz utworzyć zawsze.
krisek78
tą przeszkodą jest właśnie brak możliwości wyciągnięcia "news_id" z bazy w formie zapytania $items.index.

Same pętle na niewiele się zdadzą. Newsy są wyświetlane "od najnowszych" więc muszę wyciągnąć jakoś z tabeli $items element news_id, ktos ma inny pomysł questionmark.gif smile.gif

MadeSimple CMS ver 1.9.1
Moduł News 2.11
LowiczakPL
Jeśli kod wyświetla Ci wszystkie NEWSY to bez najmniejszego problemu dowolny możesz wyświetlić na górze listy za pomocą JS
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.