Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [PHP]CMS MadeSimple moduł NEWS, smarty
krisek78
post
Post #1





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 16.06.2016

Ostrzeżenie: (0%)
-----


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 .....
Go to the top of the page
+Quote Post
viking
post
Post #2





Grupa: Zarejestrowani
Postów: 6 380
Pomógł: 1116
Dołączył: 30.08.2006

Ostrzeżenie: (0%)
-----


W $items masz tablicę newsów więc np $items.0 to pierwszy.


--------------------
Go to the top of the page
+Quote Post
krisek78
post
Post #3





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 16.06.2016

Ostrzeżenie: (0%)
-----


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".
Go to the top of the page
+Quote Post
trueblue
post
Post #4





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


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.


--------------------
Go to the top of the page
+Quote Post
krisek78
post
Post #5





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 16.06.2016

Ostrzeżenie: (0%)
-----



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 ...
Go to the top of the page
+Quote Post
trueblue
post
Post #6





Grupa: Zarejestrowani
Postów: 6 806
Pomógł: 1828
Dołączył: 11.03.2014

Ostrzeżenie: (0%)
-----


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.


--------------------
Go to the top of the page
+Quote Post
krisek78
post
Post #7





Grupa: Zarejestrowani
Postów: 4
Pomógł: 0
Dołączył: 16.06.2016

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
LowiczakPL
post
Post #8





Grupa: Zarejestrowani
Postów: 531
Pomógł: 55
Dołączył: 3.01.2016
Skąd: Łowicz

Ostrzeżenie: (0%)
-----


Jeśli kod wyświetla Ci wszystkie NEWSY to bez najmniejszego problemu dowolny możesz wyświetlić na górze listy za pomocą JS


--------------------
Szukam zleceń Symfony, Laravel, Back-End, Front-End, PHP, MySQL ...
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 20.08.2025 - 08:42