Ejemplo n.º 1
0
 /**
  * Remove chars from the title that are not appropriate for an url
  *
  * @return string sanitized product title
  * @author Roland Lehmann <*****@*****.**>
  * @since 23.10.2010
  */
 private function title2urlSegment()
 {
     return SilvercartTools::string2urlSegment($this->Title);
 }
 /**
  * builds the ProductPages link according to its custom URL rewriting rule
  *
  * @param string $action Action to call. Will be ignored for product detail views.
  *
  * @return string
  *
  * @author Sebastian Diel <*****@*****.**>
  * @since 03.03.2015
  */
 public function Link($action = null)
 {
     $linkKey = (string) $action;
     $linkKey .= '-' . $this->Locale;
     if (!array_key_exists($linkKey, $this->links)) {
         $returnProductLink = false;
         if (Controller::curr()->hasMethod('isProductDetailView') && Controller::curr()->isProductDetailView() && Controller::curr()->data()->ID == $this->ID && Controller::curr()->data() === $this) {
             $returnProductLink = true;
             $product = Controller::curr()->getDetailViewProduct();
             $this->links[$linkKey] = $product->Link();
         } elseif (Controller::curr()->hasMethod('isProductDetailView') && Controller::curr()->isProductDetailView()) {
             $translations = $this->getTranslations();
             if ($translations) {
                 $translation = $translations->find('ID', Controller::curr()->data()->ID);
                 if ($translation) {
                     $product = Controller::curr()->getDetailViewProduct();
                     if ($product instanceof SilvercartProduct) {
                         $returnProductLink = true;
                         $productLanguage = $product->getLanguageFor($this->Locale);
                         if ($productLanguage instanceof SilvercartProductLanguage) {
                             $this->links[$linkKey] = $product->buildLink($this, SilvercartTools::string2urlSegment($productLanguage->Title));
                         } else {
                             $this->links[$linkKey] = '';
                         }
                     }
                 }
             }
         }
         if (!$returnProductLink) {
             $this->links[$linkKey] = parent::Link($action);
         }
     }
     return $this->links[$linkKey];
 }