Jump to content

[rozwiazany] Link z bloku CMS wyświetlany w miejscu linków permanentnych


aro

Recommended Posts

Prestashop v1.4.10.0

 

Moduł CMS umożliwia tworzenie własnych linków wyświetlanych w bloku w lewej lub prawej kolumnie. Jeżeli mamy ich kilka, to można zaznaczyć, które mają się wyświetlać w bloku w kolumnie, a które w stopce sklepu. Jak natomiast wstawić tylko jeden konkretny link z bloku CMS do bloku linków permanentnych? Chodzi o to, ażeby w miejscu, w którym jest standardowo wyświetlany blok linków permanentnych (Kontakt, Mapa strony, Dodaj do ulubionych) dołączyć dodatkowo np. Regulamin, Wysyłka (te linki są stworzone w module CMS) i co tam komu potrzebne, ażeby te najważniejsze informacje wyświetlać w Top, a nie w lewej, czy prawej kolumnie bądź stopce.

Link to comment
Share on other sites

Niestety, trzeba to zrobić ręcznie

 

modules/blockpermanentlinks/blockpermanentlinks.tpl

 

<!-- Block permanent links module -->
<div id="permanent_links">
<!-- Sitemap -->
<div class="sitemap">
 <a href="{$link->getPageLink('sitemap')}">{l s='Sitemap' mod='blockpermanentlinks'}</a>
</div>
<!-- Contact -->
<div class="contact">
 <a href="{$link->getPageLink('contact', true)}">{l s='Contact' mod='blockpermanentlinks'}</a>
</div>
<!-- Bookmark -->
<div class="add_bookmark" style="height:30px;">
 <script type="text/javascript">
 writeBookmarkLink('{$come_from}', '{$shop_name|addslashes|addslashes}', '{l s='Bookmark this page' mod='blockpermanentlinks' js=1}');</script> 
</div>
</div>
<!-- /Block permanent links module -->

 

umieszczasz po prostu własne linki wpisując odpowedni kod

ten moduł nie jest zintegrowany z CMS, więc zrobienie tego w back office odpada

Link to comment
Share on other sites

Dzięki, ale to mniej więcej wiem. Tylko jest inny problem.

modules/blockcms/blockcms.tpl

 

{foreach from=$cmslinks item=cmslink}

{if $cmslink.meta_title != ''}

<li class="item"><a href="{$cmslink.link|addslashes}" title="{$cmslink.meta_title|escape:'htmlall':'UTF-8'}">{$cmslink.meta_title|escape:'htmlall':'UTF-8'}</a></li>

{/if}

{/foreach}

 

 

powyższy fragment kodu będzie powodował, że pobrane zostaną wsyztskie linki zdefiniowane w module CMS - jak natomiast pobrać tylko jeden konkratny? Każdy link w CMS ma swój własny "id" - jak wstawić w taki sposób, jeżeli ta metoda jest dobra?

 

 

Odnośnie Twojego przykładu:

<a href="{$link->getPageLink('contact', true)}">{l s='Contact' mod='blockpermanentlinks'}</a>

 

Jeżeli mam własną podstronę w CMS o nazwie np. Regulamin, to nie wiem jaką stronę pobrać i podstawić w powyższym kodzie. Z tego co widać obowiązują też nazwy angielskie przy pobieraniu strony.

 

p.s. jeżeli pobiorę stronę w taki sposób (wskazuje konkretny id strony w CMS):

<li class="item"><a href="{$link->getPageLink('cms.php?id_cms=2', true)}" title="{$cms_page.meta_title|escape:html:'UTF-8'}">{$cms_page.meta_title|escape:html:'UTF-8'}</a></li>

 

to wtedy najeżdżając na myszą na link wyświetla się adres strony w postaci ../cms.php?id_cms=2 zamiast przyjaznego linku. Ale już po kliknięciu w link otwiera się ta podstrona z przyjaznym linkiem - czy to ma znaczenie dla robotów i jak to poprawić, żeby przy hoover od razu wyświetlał się przyjazny link?

Edited by aro (see edit history)
Link to comment
Share on other sites

sugeruję używać ID stron, np:

 

{$link->getCMSLink(1)}

{$link->getCMSLink(2)}

 

itd.

 

wtedy link będzie tworzony poprawnie niezaleznie od wersji językowej jaka jest akutalnie przeglądana. Dodatkowo, przyjazne url będą działać poprawnie

Link to comment
Share on other sites

Dzięki za info, ale nic to nie zmieniło - po najechaniu kursorem na link nadal wyświetla się url w postaci "/cms.php?id_cms=2", no ale to nie jest jakiś ogromny problem - po kliknięciu w link otwiera się przyjazny url i generalnie jest ok. Pozostaje jeszcze do rozwiązania wyświetlanie nazwy podstrony CMS, bo teraz wyświetla się to, co jest wpisane "na sztywno":

 

<a href="{$link->getCMSLink(1)}">{l s='jakiś CMS TITLE' mod='blockpermanentlinks'}</a>

 

co należałoby wpisać do {l s='........' ...}, żeby tytuł linku był podstawiany z nazwy strony w CMS? Dzięki temu będzie to działać niezależnie od języka.

 

p.s. Tytuł linku rozwiązałem poprzez dowolny anglojęzyczny wpis w powyższym {l s=.....}, który później przetłumaczyłem w BO w tłumaczeniach dla modułów. Przydałoby się jeszcze tylko rozwiązać kwestię przyjaznego url w bloku linków permanentnych, żeby po najechaniu kursorem był od razu widoczny przyjazny url, a nie link do pliku cms.php.

 

Mam jeszcze taki problem - jeżeli dopiszę link CMS do linków permanentnych, to pojawia się on i w bloku linków CMS i w bloku linków permanentnych. Jeżeli wyłączę wyświetlanie danego linku w module CMS poprzez BO, to taki link nie wyświetli się w bloku linków CMS, ale jednocześnie nie da się otworzyć podstrony poprzez ten link z TOP w linkach permanentnych (link cms widać, ale po jego kliknięciu strona się nie otworzy - bo jest wyłączona w module CMS). Nie chcę, żeby strona z CMS była dublowana i w bloku CMS i w bloku linków permanentnych.

Edited by aro (see edit history)
Link to comment
Share on other sites

Cześć

 

wybacz, w gąszczu postów, Twój gdzieś się zapodział ;)

 

Bez modyfikacji się nie obędzie, niezbędne tutaj będzie zmodyfikowanie bloku cms,

 

Co będzie potrzebne? ID strony którą chcesz wyłączyć w bloku cms.

 

Otwórz plik blockcms.tpl zlokalizowany w /modules/blockcms/blockcms.tpl (pamiętaj, że czasami jest on również w themes/yourtheme/modules/blockcms/blockcms.tpl - wtedy zmiany wprowadzasz tutaj)

 

rozwiązaniem jest dodanie prostego warunku IF sprawdzającego id, jeżeli cms_page.id_cms jest inne niż wskazany id - wówczas generuje link, (wskazany id jest po prostu pomijany)

 

oto przykład dla strony o ID = 2

 

{if $cms_page.id_cms != 2}
 {if isset($cms_page.link)}<li><a href="{$cms_page.link}" title="{$cms_page.meta_title|escape:html:'UTF-8'}">{$cms_page.meta_title|escape:html:'UTF-8'}</a></li>{/if}
{/if}

Link to comment
Share on other sites

  • 4 weeks later...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...