2016-10-31 27 views
5

Chciałbym dodać kilka linków do kategorii z nazwami ręcznie w moim multistore. Próbowałem to (kategoria ID20 jako przykład)Uzyskaj adres URL i nazwę kategorii Magento

<?php $category = Mage::getModel('catalog/category')->load(20); ?> 
<a href="<?php echo $category->getUrl(); ?>"><?php echo $category->getName();?></a> 

To działa, ale nie jestem pewien, czy to dobry pomysł, jest tam wiele załadunku tak aby uzyskać adres URL.

Próbowałem też stosując zamiast tłumaczenie:

<a href="<?php echo $this->__('URL-Language1') ?>"><?php echo $this->__('CatName-Language1') ?></a> 

z tłumaczeniem w csv Locale.

To również działa, ale jaki jest "właściwy sposób", aby to osiągnąć? To wygląda jak obejście.

+0

Nie, nie jest to właściwy sposób. Lokalizacje są przeznaczone do tłumaczeń językowych. Powinieneś pamiętać, że chociaż zgadzam się z twoim stwierdzeniem, że załadowanie całej kategorii tylko po to, by odzyskać jej nazwę i URL jest nieefektywne, blok, w którym go użyjesz, będzie prawdopodobnie buforowany, więc nie będziesz wykonywał pracy co czas ładowania strony. –

+0

Ach dzięki, może jakiś problem z moją pamięcią podręczną, dostałem 16 kategorii w różnych miejscach i kiedy próbowałem z tłumaczeniem "hack" dostałem zauważalną różnicę ładunkową, będę musiał zbadać dalej. –

+0

Inną opcją jest napisanie modelu zasobów, który pobiera żądane dane bezpośrednio i wyłącznie –

Odpowiedz

0

Można spróbować to:

Mage::getResourceModel('catalog/category')->getAttributeRawValue($categoryId, 'name', $storeId); 

dla odbierać atrybut kategorii (w tym przypadku) także ($categoryId, 'url_key', $storeId) dla atrybutu klucza url, ale to tylko klucz URL nie jest pełna kategoria url.

Powiązane problemy