Jump to content

HOOK_TOP - podgląd wszystkich elementów


Recommended Posts

W pliku header.tpl znajdziemy kod:

 

<div id="header_right" class="grid_9 omega">
 {$HOOK_TOP}
   </div>

 

wyświetla on ładne menu:

 

29h829.jpg

 

Do czego konkretnie odnosi się {$HOOK_TOP} - chciałem wyciągnąć każdy element z osobna, i włożyć w różne miejsca mojej obecnej strony.

 

Z góry dziękuje za info.

Share this post


Link to post
Share on other sites

hook_top jest jak nazwa wskazuje hookiem, czyli "lokalizacją" pod którą możemy "podpiąć" modułu. To co widzisz w hook_top to moduły.

 

listę modułów podpiętych do tego hooka odnajdziesz w moduły > pozycje

 

odnajdujesz na liście listę modułów "displayTop" - zawartość listy odpowiada temu, co widzisz na swojej stronie w miejscu {$HOOK_TOP}

Share this post


Link to post
Share on other sites

zgadza się, to jest to jest ta lista.

Każdy z modułów ma w swoim kodzie php funkcję która obsługuję tę lokalizację, wygląda ona mniejwięcej tak:

 

public function hookTop($params){

if ($this->_prepareHook($params))

return $this->display(__FILE__, 'blockcurrencies.tpl');

}

 

gdzie blockcurrencies.tpl to nazwa pliku szablonu, który odpowiada za wyświetlanie się treści. Każdy moduł ma swój plik szablonu (.tpl) który odpowiada za wyświetlanie się treści html. W tym przypadku plik nazywa się blockcurrencies.tpl, dla innych modułow nazwa może być inna, stąd ważne jest podglądnięcie treści pliku .php w celu zlokalizowania odpowiedniego pliku szablonu.

 

pliki szablonu zwykle znajdują się w katalogu z modułem. zawartość pliku blockcurrencies.tpl to:

<!-- Block currencies module -->
<script type="text/javascript">
$(document).ready(function () {
$("#setCurrency").mouseover(function(){
 $(this).addClass("countries_hover");
 $(".currencies_ul").addClass("currencies_ul_hover");
});
$("#setCurrency").mouseout(function(){
 $(this).removeClass("countries_hover");
 $(".currencies_ul").removeClass("currencies_ul_hover");
});$('ul#first-currencies li:not(.selected)').css('opacity', 0.3);
$('ul#first-currencies li:not(.selected)').hover(function(){
 $(this).css('opacity', 1);
}, function(){
 $(this).css('opacity', 0.3);
});
});
</script>
<div id="currencies_block_top">
<form id="setCurrency" action="{$request_uri}" method="post">
 <p>
  <input type="hidden" name="id_currency" id="id_currency" value=""/>
  <input type="hidden" name="SubmitCurrency" value="" />
  {l s='Currency' mod='blockcurrencies'} : {$blockcurrencies_sign}
 </p>
 <ul id="first-currencies" class="currencies_ul">
  {foreach from=$currencies key=k item=f_currency}
<li {if $cookie->id_currency == $f_currency.id_currency}class="selected"{/if}>
 <a href="javascript:setCurrency({$f_currency.id_currency});" title="{$f_currency.name}" rel="nofollow">{$f_currency.sign}</a>
</li>
  {/foreach}
 </ul>
</form>
</div>
<!-- /Block currencies module -->

 

 

jest to szablon "smarty" (składnia smarty + język html)

i to jest to co widzisz w HOOK_TOP w przypadku modułu blok walut

Share this post


Link to post
Share on other sites

A jeśli znajdę już interesujący mnie moduł, jestem w stanie szybko wyszukać jego kod ?

Np:

 

2ah8knn.jpg

 

Mamy kod:

 

<div id="header_right" class="grid_9 omega">

{$HOOK_TOP}

</div>

 

HOOK_TOP ma obecnie powiązanych 9 modułów. Teraz gdzie mogę znaleźć kod, który jest odpowiedzialny za wyświetlanie poszczególnych modułów ? Jeśli będę chciał sobie stworzyć stronę "szukaj.html" i wkleić do niej wyłącznie kod odpowiedzialny za blok prostego wyszukiwania, mam szukać kodu (w tym przypadku) w katalogu ..modules\blocksearch\blocksearch-top.tpl ??

Edited by syngress (see edit history)

Share this post


Link to post
Share on other sites

no to wtedy otwierasz katalog z modułem, otwierasz główny plik .php sprawdzasz jaki plik .tpl odpowiada za wyświetlanie się w danej pozycji (patrz przykład powyżej)

 

i to w zasadzie tyle ;)

Share this post


Link to post
Share on other sites

Bardzo ci dziękuje. Potężne narzędzie i bardzo elastyczne.

 

Dobrze byłoby dodać możliwość podglądu w jakim katalogu znajduje się moduł.

W chwili obecnej na ślepo strzelam, że Blok prostego wyszukiwania znajduje się w \modules\blocksearch

 

Istnieje jakiś podgląd ?

Share this post


Link to post
Share on other sites

O widzisz, wykorzystam radę .. ;)

 

Jak mogę wsadzić moduł "blockcart" na zupełnie osobną stronę, bo rozumiem, że tak po prostu nie mogę kopiować zawartości plików szablonów.. Przynajmniej nie wszystkich.

 

Chodzi mi oczywiście o widok koszyka z HOOK_TOP:

 

246l2x4.jpg

 

Po przekopiowaniu całej zawartości szablonu, widok działa, funkcjonalności brak, pewnie urwałem dowiązania do skryptów, język również się zmienił na defaultowy.

Edited by syngress (see edit history)

Share this post


Link to post
Share on other sites

to co widzisz, tzn. to:

ai0Bdmw.png

 

jest to moduł block user info

 

 

natomiast to co widać po najechaniu na to, to moduł block cart.

niestety nie ma opcji, aby bez większych modyfikacji używać dwóch koszyków jednoczesnie (tj. jeden w nagłówku który pojawia się pojechaniu na block uer info, drugi ten który wkleiłeś)

 

sypią się skrypty js które bazują na polach w oparciu o ich numer ID="";

dlatego musiałbyś usunąć cart block z sekcji displayTop tak aby kodzie strony występował tylko jeden koszyk

 

 

mam nadzieje, że opisane w miare jasno ;)

Share this post


Link to post
Share on other sites

W tym momencie w "Top of pages" posiadam:

 

2dihh94.jpg

 

Natomiast to co widać poniżej to:

246l2x4.jpg

 

to:

- Block user information module

- MODULE Block cart

- Block permanent links module

 

Po najechaniu na odnośnik koszyka, próbuje mnie przekierować na stronę bez ID

http://mojastrona/sklep/index.php?controller=

 

Oczywiście otrzymuje komunikat, że takiej strony niema.

 

Tak więc jest coś jeszcze, przez co nie mogę otrzymać ID ..

Edited by syngress (see edit history)

Share this post


Link to post
Share on other sites

Jakiejś wielkiej modyfikacji jeszcze niema, dopiero zaczynam modyfikować.

Pierwszy raz zainstalowałem Preste, trochę się gubię.

 

Może mi pomożesz z tym elementem:

1z15gux.jpg

 

Jak widać powyżej treść <div'a> wyjeżdża poza obrazowanie innego <div'a>.

Już chyba wszystkiego próbowałem, w tym clear: both;

W dalszym ciągu mam rozjazd.

Share this post


Link to post
Share on other sites

może i nie jest to duża modyfikacja, ale element tj. hook_top jak sama nazwa wskazuje, będący elementem umieszczonym w sekcji TOP strony znalazł się w miejscu z treścią ;)

 

co do przypadku powyżej,

wyglada mi to na zwykly prosty problem z cssami, trudno powiedzieć co jest nie tak z uwagi na modyfikacje, ale obstawiałbym na dodanie clear:both; i overflow:hidden; dla całego bloku featured-products_block_center

  • Like 1

Share this post


Link to post
Share on other sites

nie ma jakiegoś ścisłego miejsca, wszystko zależy od Ciebie ;)

ten hook zwykle służy do wyświetlania elementów w "headerze" sklepu, tam na samej górze ;)

 

to, że umieściłeś go w innym miejscu wcale nie oznacza, że jest to złe rozwiązanie, jest ono po prostu nieco egzotyczne ;)

Share this post


Link to post
Share on other sites

hook_home to "pozycja" jak każda inna, wyświetlają się tam moduły załączone do tego hooka.

Jest to strona główna sklepu, a w zasadzie jej zawartość pomiędzy dwoma kolumnami. dotyczy do tylko strony glownej

 

wmugEZE.png

Share this post


Link to post
Share on other sites

Ok, może inaczej, do jakiego kodu odnosi się $hook_home ?

Slidera pozbyłem się, modyfikując nieznacznie plik: homeslider.tpl

 

{if isset($homeslider)}
<script type="text/javascript">
{if isset($homeslider_slides) && $homeslider_slides|@count > 1}
{if $homeslider.loop == 1}

{else}

{/if}
{else}

{/if}
</script>
{/if}
{if isset($homeslider_slides)}
{foreach from=$homeslider_slides item=slide}
{if $slide.active}

{/if}
{/foreach}
{/if}

 

Skrypt się wykonuje, ale jest pusty :) Efekt ?

 

2lnk1p0.jpg

Edited by syngress (see edit history)

Share this post


Link to post
Share on other sites

nie rozumiem pytania :(

jak wspomniałem hook_home to "pozycja" jak każda inna, wyświetlają się tam moduły załączone do tego hooka.

Kod hook_home zalezy od modułów wyświetlanych w tym hooku.

 

jezeli pytasz o cos innego, wyjasnij prosze

Share this post


Link to post
Share on other sites

Ok wracając jeszcze do produktów polecanych.

Pomimo tego, że border jest solid, prawe obramowanie zanika.

 

i1EZEgw.jpg

 

Odpowiedzialnym za ten proceder jest: overflow: hidden;

 

K4qJJzE.jpg

 

Niestety nie mogę wykasować reguły, ponieważ otrzymuje 3 woje światową w postaci:

 

fVZKJBB.jpg

 

Co mogę dodać, co usunąć ?

Share this post


Link to post
Share on other sites

@vekia tam jest sporo miejsca jeszcze, zmieniam spokojnie wartości w homefeatured.css

 

margines prawy oraz długość elementu, wszystko się ładnie rozsuwa,natomiast w dalszym ciągu nie widać tego obramowania :blink:

 

#featured-products_block_center li {
margin-right: 10px;
padding: 0px;
width:130px;
}

Share this post


Link to post
Share on other sites

 Share

×
×
  • Create New...

Important Information

Cookies ensure the smooth running of our services. Using these, you accept the use of cookies. Learn More