Jump to content

Hosting dHosting.pl - 10% rabat!

Sign in to follow this  
Sebaa

Niedziałająca paginacja

Recommended Posts

Cześć, dodałem do szablonu recordRow warunek, że jak jestem na konkretnej stronie to ma sprawdzać czy ogłoszenie jest oznaczone w bazie jako archiwalne. Samo wyświetlanie działa poprawnie, ale niestety paginacja pokazuje cały czas całkowitą ilość ogłoszeń i większość stron w paginacji jest pusta. Bardzo proszę o podpowiedź jak mogę rozwiązać ten problem.

Share this post


Link to post
Share on other sites
Posted (edited)

Albo może ktoś podpowie jak dodaje się paginację do listy? np zrobię w bloku tabelę z elementami wyciągniętymi z bazy i jak do niej podpiąć paginację?

Edited by Sebaa

Share this post


Link to post
Share on other sites

A jak ją dodałeś obecnie?


intermedia - profesjonalne rozwiązania Invision Power Board

---

Chcesz uzyskać szybko i sprawnie pomoc? Uzupełnij wersję i adres w profilu.

Share this post


Link to post
Share on other sites

Dodałem na jedną ze stron bazę {database="xxx"} i paginacja wygenerowała się automatycznie. W szablonie recordRow stworzyłem warunek, że jak jest ta baza to ma pokazywać tylko dane które nie są oznaczone jako archiwum. Dlatego zmniejszyła mi się ilość stron do wyświetlenia ale paginacja dalej pokazuje całkowitą wartość.

 

Pojawił mi się też drugi problem, próbowałem dodać dwie bazy na stronę. Po zapisaniu wyskoczył błąd ale niestety zmiany się zapisały i mam na stronie dwie tabele. Nie mogę tego cofnąć bo przy każdej próbie zapisania wyskakuje komunikat ale już nie zapamiętuje zmian. Można to jakoś zresetować, wyłączyć na chwilę bazy czy zostaje usunąć stronę i stworzyć od nowa?

Share this post


Link to post
Share on other sites
Godzinę temu, Sebaa napisał:

W szablonie recordRow stworzyłem warunek, że jak jest ta baza to ma pokazywać tylko dane które nie są oznaczone jako archiwum. Dlatego zmniejszyła mi się ilość stron do wyświetlenia ale paginacja dalej pokazuje całkowitą wartość.

No właśnie, tak tego nie zrobisz. Paginacja przelicza (w plikach forum) całkowitą ilość wpisów, a potem dzieli na strony jeśli konieczne.

Zabierz się od tego od strony plików - ostrzegam, będzie trudno. :)

 

Godzinę temu, Sebaa napisał:

Pojawił mi się też drugi problem, próbowałem dodać dwie bazy na stronę. Po zapisaniu wyskoczył błąd ale niestety zmiany się zapisały i mam na stronie dwie tabele. Nie mogę tego cofnąć bo przy każdej próbie zapisania wyskakuje komunikat ale już nie zapamiętuje zmian. Można to jakoś zresetować, wyłączyć na chwilę bazy czy zostaje usunąć stronę i stworzyć od nowa?

Trudno na tej podstawie coś poradzić innego jak usunięcie i postawienie od nowa - lub po prostu dodać nową stronę.


intermedia - profesjonalne rozwiązania Invision Power Board

---

Chcesz uzyskać szybko i sprawnie pomoc? Uzupełnij wersję i adres w profilu.

Share this post


Link to post
Share on other sites

A jak w bloku zrobię sobie pobieranie danych z bazy to mogę jakoś do tego dodać paginację? np jakoś zmienić poniższy kod żeby obsługiwał mi moje zapytanie z bazy i moje wyświetlanie tabeli? Jakkolwiek dodać paginację do własnej tabeli?

 

{template="pagination" group="global" app="core" location="global" params="$table->baseUrl, $table->pages, $table->page, $table->limit, TRUE, $table->getPaginationKey()"}

 

Share this post


Link to post
Share on other sites

Definiujesz limit i jak będzie więcej pozycji na stronę niż wspomniany limit to się "samo paginuje":

	/**
	 * @brief	Number of records to show
	 */
	public $limit = 25;

 


intermedia - profesjonalne rozwiązania Invision Power Board

---

Chcesz uzyskać szybko i sprawnie pomoc? Uzupełnij wersję i adres w profilu.

Share this post


Link to post
Share on other sites

Mam ustawiony taki limit w Table.php i niestety nic to nie daje. Robię nowy blok typu wtyczka, wybieram kanał danej bazy i ustawiam limit do wyświetlenia na 99. Inny sposób którym robię to blok z kodem html, który łączy się z bazą i wyciąga dane (\IPS\Db::i()->select('*', 'nazwa_bazy') i generuje sobie tabelę w foreach. W obu przypadkach ilość wyświetlanych danych jest znacznie większa niż ustawiony limit. Czy czegoś nie dodaję do kodu? Trzeba tam jakoś wcisnąć kod odpowiadający za wygenerowanie paginacji?

Share this post


Link to post
Share on other sites

Pokaż najlepiej cały kod jaki masz.


intermedia - profesjonalne rozwiązania Invision Power Board

---

Chcesz uzyskać szybko i sprawnie pomoc? Uzupełnij wersję i adres w profilu.

Share this post


Link to post
Share on other sites

Przy tworzeniu bloku z kanałem bazy nie ma możliwości integrowania w kod, a w tym przypadku paginacja także się nie wyświetla. Wklejam kod bloku który wyświetla mi tabelę pobraną z bazy:

 

{{if (\IPS\Request::i()->url()->data['path'] == "/ogloszenia_sprzet.html/") }}

{{$rows  = \IPS\Db::i()->select('*', 'cms_database', array('field_157=?', 1 ));}}

<div class="ipsPageHeader ipsClearfix ipsSpacer_bottom" style="margin-top: 30px;">
		<h1 class="ipsType_pageTitle">Ogłoszenia promowane - sprzęt</h1>
</div>

<div class='ipsBox' id="sponsoredBox" data-baseurl='https://www.audiostereo.pl/ogloszenia_sprzet.html/?page=1&amp;d=30' data-resort='listResort' data-controller='core.global.core.table,core.front.core.moderation'>
  <div class="ipsButtonBar ipsPad_half ipsClearfix ipsClear" style="height: 40px;"></div>
	<ol class='ipsDataList ipsDataList_zebra ipsClear cCmsListing' id='elTable_test' data-role="tableRows">

{{foreach $rows as $row}}
{{if $row['field_158'] == 0 }}
	<li class="cCmsRecord_row ipsDataItem ipsDataItem_responsivePhoto" data-rowID="{$row['primary_id_field']}">
			<div class='ipsDataItem_icon ipsPos_top'>
			</div>
		<div class='ipsDataItem_main'>
			<h4 class='ipsDataItem_title ipsContained_container'>

				<span class='ipsContained ipsType_break'>              
					<a href="https://www.audiostereo.pl/ogloszenia_sprzet.html/{$row['record_dynamic_furl']}-r{$row['primary_id_field']}">{$row['field_146']}</a>
				</span>
			</h4>
              <span class="only-first one-line">
              </span>

			<div class='ipsDataItem_meta ipsType_blendLinks'>
			</div>
              
		</div>
          
		<ul class='ipsDataItem_stats'>
			
				<li>
					<span class="ipsDataItem_stats_number">{$row['record_comments']}</span>
					<span class="ipsDataItem_stats_type"> komentarz</span>
				</li>
				<li>
					<span class="ipsDataItem_stats_number">{$row['record_views']}</span>
					<span class="ipsDataItem_stats_type"> wyświetleń</span>
				</li>			
			
		</ul>
          
		<div class="ipsDataItem_price">
        	  {$row['field_149']}
		</div>
		<div class="ipsDataItem_type">
				{{if ($row['field_142'] == 1)}}
      				Kupię
				{{elseif ($row['field_142'] == 2)}}
    				Zamienię
				{{elseif ($row['field_142'] == 3)}}
                  	Sprzedam
				{{endif}}
		</div>
		<div class="ipsDataItem_city">
        	  {$row['field_152']}
		</div>
      	<div class='ipsDataItem_modCheck'>

		</div>
     </li>
{{endif}}
{{endforeach}}
  </ol>
  <div class="ipsButtonBar ipsPad_half ipsClearfix ipsClear" style="height: 40px;"></div>
  </div>

{{endif}}

 

Share this post


Link to post
Share on other sites

No nie masz bo mówię, że to w plikach forum, a nie skinie. I to nie na zasadzie, że prosty kod i prosta zmiana.

Jeśli nie możesz tego zrobić to można napisać moda od tego.


intermedia - profesjonalne rozwiązania Invision Power Board

---

Chcesz uzyskać szybko i sprawnie pomoc? Uzupełnij wersję i adres w profilu.

Share this post


Link to post
Share on other sites

Ja w skinach nic nie zmieniam jeżeli chodzi o ten problem. Opiszę jeszcze raz o co mi chodzi. Trzy różne przypadki:

Przypadek pierwszy: w szablonie recordRow zrobiłem warunek, że jeżeli  pobiera dane z "baza x" to wyświetlaj tylko posty nie oznaczone jako archiwalne - paginacja pokazuje i tak całość więc mam sporo pustych stron.

W innym przypadku robię blok jako wtyczka z kanałem "bazy y" i ustawiam limit 99 - wyświetla co trzeba ale brak paginacji.

I ostatni przypadek to własny blok którego kod wkleiłem wyżej. Pobieranie i wyświetlanie danych z "baza z". Tu również brakuje paginacji.

 

Myślałem, że może np w przypadku trzecim wystarczy dodać trochę kodu który wygeneruje mi paginację na podstawie danych które pobieram z bazy.

 

Z tego co zrozumiałem ze wcześniejszych odpowiedzi to paginacja powinna generować się sama jeżeli przekroczony zostanie limit 25, a w moich przypadkach nic takiego się nie robi.

 

Rozumiem, że nie da się tego tak zrobić i jedyne rozwiązanie to napisać mod? Mógłbyś podpowiedzieć co miałby robić taki moduł?

Share this post


Link to post
Share on other sites

Paginacja działa zawsze w ten sam sposób:

kod wypluwa powiedzmy 100 wpisów na podstawie podanych warunków.

Limit na stronę to 25 więc paginacja wyświetla 4 strony w menu nawigacyjnym.

Nie możesz potem na stronie z wynikami ich modyfikować i usuwać bo forum "myśli", że tam nadal jest 25 pozycji (a nie mniej).

Więc może da się zrobić w Twoim przypadku by podczas pobierała sprawdzało czy coś jest archiwalne? Wtedy miałoby to sens i generalnie działało poprawnie.


intermedia - profesjonalne rozwiązania Invision Power Board

---

Chcesz uzyskać szybko i sprawnie pomoc? Uzupełnij wersję i adres w profilu.

Share this post


Link to post
Share on other sites

No dobra w tym przypadku to zrozumiałe że dodaję warunek a on i tak patrzy na całą bazę. Ale co z blokiem, który jest stworzony jako kanał bazy? Tam nie integruję w kod, więc tworzy się wszystko automatycznie a paginacji dalej nie ma. Limit mam ustawiony na 25. Tak samo jak sam napiszę blok, który wczytuje dane z bazy, tworzy tabelę i wypluwa więcej wpisów niż 25 a paginacji nie widać.

 

Może do tabeli trzeba dodać jakiś kod żeby wyłapał że ma tam zrobić paginację?

Share this post


Link to post
Share on other sites

No może pokazuje tylko X ostatnich wpisów - wtedy bez paginacji?

Pokaż screen co tam dokładnie dodajesz to popatrzę w pliki.


intermedia - profesjonalne rozwiązania Invision Power Board

---

Chcesz uzyskać szybko i sprawnie pomoc? Uzupełnij wersję i adres w profilu.

Share this post


Link to post
Share on other sites

NIe wiem czego kod chcesz zobaczyć. Jedno to kanał bazy danych, więc kodu tam nie ma, a drugie to po prostu wyciąganie z bazy danych i tworzenie tabeli:

 

image.thumb.png.6f30a79d6ad9650388a6e10eaf1a971d.png

Edited by Sebaa

Share this post


Link to post
Share on other sites

Gdzie to tworzenie tabel?


intermedia - profesjonalne rozwiązania Invision Power Board

---

Chcesz uzyskać szybko i sprawnie pomoc? Uzupełnij wersję i adres w profilu.

Share this post


Link to post
Share on other sites

Tabeli, nie tabel. W foreach robią się li, a całość ma postać tabeli. Jest jakaś różnica jak ją tworzę? Podpowiesz coś konkretniej z tą paginacją czy tak tylko będziemy sobie pisali? :)

 

Są jakieś wymagania w kodzie żeby tworzyła się paginacja? Przy kanale bazy też się sama nie tworzy.

Edited by Sebaa

Share this post


Link to post
Share on other sites

Kod:

        /* Create the table */
	    $table = new \IPS\Helpers\Table\Db( 'dp43extendedprofile_items', \IPS\Http\Url::internal( 'app=core&module=members&controller=profile&id=' . $this->member->member_id . '&tab=node_dp43extendedprofile_extendedProfileProfile' ), array( array( $where ) ) );
        $table->limit = 20;

I potem w skinie:

	{{if $table->pages > 1}}
	<div class="ipsButtonBar ipsPad_half ipsClearfix ipsClear">
		<div data-role="tablePagination">
			{template="pagination" group="global" app="core" location="global" params="$table->baseUrl, $table->pages, $table->page, $table->limit, TRUE, $table->getPaginationKey()"}
		</div>
	</div>
	{{endif}}

 


intermedia - profesjonalne rozwiązania Invision Power Board

---

Chcesz uzyskać szybko i sprawnie pomoc? Uzupełnij wersję i adres w profilu.

Share this post


Link to post
Share on other sites

Jak robię nowy blok z wczytaniem danych z bazy to cały ten kod powinien się w nim znaleźć? Nad tabelą tablePagination, a gdzie ten kod /* Create the table */ ??

Share this post


Link to post
Share on other sites

To jest wycinek. Poszukaj podobnych fragmentów w plikach forum i dopasuj do swoich potrzeb. :) A konkretne pytania - wal śmiało.


intermedia - profesjonalne rozwiązania Invision Power Board

---

Chcesz uzyskać szybko i sprawnie pomoc? Uzupełnij wersję i adres w profilu.

Share this post


Link to post
Share on other sites

Napisałem ręcznie swoją paginację. Można zamknąć.

Share this post


Link to post
Share on other sites

Problem ROZWIĄZANY. Jeśli są jakiekolwiek wątpliwości, pytania proszę o założenie nowego tematu.

Wszelkie uzasadnione reklamacje/pretensje/sugestie/rady przyjmuje ekipa forum.


intermedia - profesjonalne rozwiązania Invision Power Board

---

Chcesz uzyskać szybko i sprawnie pomoc? Uzupełnij wersję i adres w profilu.

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.