/** * 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]; }