Neu Link auf eigene Seite

  • Wenn Ihr uns das erste Mal besucht, lest euch bitte zuerst die Foren-Regeln durch.

dane

Aktives Mitglied
10. Juni 2015
10
0
#1
Hallo zusammen,

manchmal möchte ich im Template einen Link anhand der Seiten-ID setzen. Habe dafür keine fertige Funktion gefunden. Das müsste es doch geben, oder?

Meine Funktion, die ich mir selber zusammengeschnipselt habe, sieht jetzt so aus:

Code:
$smarty->register_function("getPageLink", "getPageLink");

function getPageLink($pageUid, $full = false) {

  $oLink = Shop::DB()->select('tlink', 'kLink', $pageUid);

  if (isset($oLink->kLink)) {
      $Link       = new stdClass();
      $linkHelper = LinkHelper::getInstance();

      $Link = $linkHelper->getPageLink($oLink->kLink);
      $requestURL    = baueURL($Link, URLART_SEITE, $row = 0, $bForceNonSeo = false, $bFull = $full);


      return $requestURL;
  }

  return false;

}
So bekomme ich aber nur die URL. Am liebsten wäre mir das komplette $Link-Objekt, welches ja auch den Namen der Seite, Language-URL etc enthält. Allerdings sind bei mir da die URL-Felder leider leer. Nur mit dem baueURL funktioniert es.
Habt ihr einen Tipp für mich?
 

martinwolf

Offizieller Servicepartner
SPBanner
6. September 2012
3.032
168
#2
Am Einfachsten ist es die bestehende Funktion get_cms_content in der functions.php (aber via Child) zu ändern. Siehe:
Code:
function get_cms_content($params, &$smarty)
{
    if (isset($params['kLink']) && (int)$params['kLink'] > 0) {
        $kLink          = (int)$params['kLink'];
        $linkHelper     = LinkHelper::getInstance();
        $oLink          = $linkHelper->getPageLink($kLink);
        $oLink->Sprache = $linkHelper->getPageLinkLanguage($oLink->kLink);
        if (isset($params['assign'])) {
            $smarty->assign($params['assign'], $oLink);//ANSTATT $smarty->assign($params['assign'], $oLink->Sprache->cContent);
        } else {
            return $oLink->Sprache->cContent;
        }
    }

    return null;
}
Im Template dann
Code:
{get_cms_content kLink=ID assign=meinLinkObjekt}
{$meinLInkObjekt} enthält dann alle Infos der CMS Seite.