Ich habe es jetzt irgendwie hinbekommen, bin aber alles andere als stolz oder zufrieden mit dieser Lösung.
Nämlich wie bereits in einem anderen Thread von mir beschrieben würden sich die urls bereits in der Funktion (function.seo_tags.php) befinden als $url und $urlalt.
Habe auch schon 100 fach versucht diese $url variable irgendwie auszugeben mit {$url} usw.
Habe auch versucht in der Funktion
$GLOBAL['currenturl'] = $url;
oder
define('currenturl') = $url;
zu definieren und diese irgendwie auszugeben, weil die variablen in der Funktion sonst nicht außerhalb verfügbar sind.
Ich habe nur total kein Plan wie ich das machen kann, verstehe das gambio cms vom Aufbau einfach nicht. Woher die {$variable} gezaubert werden oder wie solche definiert werden müssen.
Dann zu meiner Lösung:
Ich habe festgestellt dass Funktionen wie function.seo_tags.php einfach aufgeruft werden indem das "function." und ".php" weggenommen wird.
So habe ich diese Datei kopiert in function.momurl.php unbenannt und abgeändert:
Code:
function smarty_function_momurl($params, &$smarty)
{
$seoBoost = MainFactory::create_object('GMSEOBoost', [], true);
$languageCode = new LanguageCode(new StringType(strtoupper($_SESSION['language_code'])));
$url = '';
$html = '';
$robots = 'index,follow';
$requestUri = gm_get_env_info('REQUEST_URI');
$getParams = parse_url($requestUri, PHP_URL_QUERY);
parse_str($getParams, $getArray);
$getArray = array_keys($getArray);
$languageProvider = MainFactory::create('LanguageProvider', StaticGXCoreLoader::getDatabaseQueryBuilder());
$activeCodes = $languageProvider->getActiveCodes();
if(isset($GLOBALS['actual_products_id']) && !empty($GLOBALS['actual_products_id']))
{
/** @var ProductReadService $productReadService */
$productReadService = StaticGXCoreLoader::getService('ProductRead');
$product = $productReadService->getProductById(new IdType((int)$GLOBALS['actual_products_id']));
if($seoBoost->boost_products)
{
$url = xtc_href_link($seoBoost->get_boosted_product_url($GLOBALS['actual_products_id']));
}
else
{
try
{
$productLinkParams = xtc_product_link($GLOBALS['actual_products_id'], $product->getName($languageCode),
$product->getUrlKeywords($languageCode),
$_SESSION['languages_id']);
}
catch(InvalidArgumentException $e)
{
$productLinkParams = xtc_product_link($GLOBALS['actual_products_id'], '', '',
$_SESSION['languages_id']);
}
$url = xtc_href_link(FILENAME_DEFAULT, $productLinkParams);
}
if($robots === 'index,follow' && $activeCodes->count() > 1)
{
foreach($activeCodes as $code)
{
$langCode = new LanguageCode(new StringType($code->asString()));
$languageId = $languageProvider->getIdByCode($langCode);
if($languageId != $_SESSION['languages_id'])
{
if($seoBoost->boost_products)
{
$altUrl = xtc_href_link($seoBoost->get_boosted_product_url($GLOBALS['actual_products_id'], '',
$languageId));
}
else
{
try
{
$productLinkParams = xtc_product_link($GLOBALS['actual_products_id'],
$product->getName($langCode),
$product->getUrlKeywords($langCode), $languageId);
}
catch(InvalidArgumentException $e)
{
continue;
}
$altUrl = xtc_href_link(FILENAME_DEFAULT, $productLinkParams);
}
if($altUrl !== $url)
{
if($html === '')
{
$html .= htmlspecialchars($url);
}
}
}
}
}
}
elseif(isset($_GET['cat']) && isset($GLOBALS['current_category_id']) && !empty($GLOBALS['current_category_id']))
{
/** @var CategoryReadService $categoryReadService */
$categoryReadService = StaticGXCoreLoader::getService('CategoryRead');
$category = $categoryReadService->getCategoryById(new IdType((int)$GLOBALS['current_category_id']));
if($seoBoost->boost_categories)
{
$url = xtc_href_link($seoBoost->get_boosted_category_url($GLOBALS['current_category_id']));
}
else
{
try
{
$categoryLinkParams = xtc_category_link($GLOBALS['current_category_id'],
$category->getName($languageCode),
$category->getUrlKeywords($languageCode),
$_SESSION['languages_id']);
}
catch(InvalidArgumentException $e)
{
$categoryLinkParams = xtc_category_link($GLOBALS['current_category_id'], '', '',
$_SESSION['languages_id']);
}
$url = xtc_href_link(FILENAME_DEFAULT, $categoryLinkParams);
}
if($robots === 'index,follow' && $activeCodes->count() > 1)
{
foreach($activeCodes as $code)
{
$langCode = new LanguageCode(new StringType($code->asString()));
$languageId = $languageProvider->getIdByCode($langCode);
if($languageId != $_SESSION['languages_id'])
{
if($seoBoost->boost_categories)
{
$altUrl = xtc_href_link($seoBoost->get_boosted_category_url($GLOBALS['current_category_id'],
$languageId));
}
else
{
try
{
$categoryLinkParams = xtc_category_link($GLOBALS['actual_products_id'],
$category->getName($langCode),
$category->getUrlKeywords($langCode), $languageId);
}
catch(InvalidArgumentException $e)
{
continue;
}
$altUrl = xtc_href_link(FILENAME_DEFAULT, $categoryLinkParams);
}
if($altUrl !== $url)
{
if($html === '')
{
$html .= htmlspecialchars($url);
}
}
}
}
}
}
elseif(isset($_GET['coID']) && $activeCodes->count() > 1)
{
$coID = (int)$_GET['coID'];
if($seoBoost->boost_content)
{
$contentId = $seoBoost->get_content_id_by_content_group($coID);
$url = xtc_href_link($seoBoost->get_boosted_content_url($contentId));
}
else
{
$url = xtc_href_link(FILENAME_CONTENT, 'coID=' . $coID);
}
if($robots === 'index,follow' && $activeCodes->count() > 1)
{
foreach($activeCodes as $code)
{
$langCode = new LanguageCode(new StringType($code->asString()));
$languageId = $languageProvider->getIdByCode($langCode);
if($languageId != $_SESSION['languages_id'])
{
if($seoBoost->boost_content)
{
$contentId = $seoBoost->get_content_id_by_content_group($coID, $languageId);
$altUrl = xtc_href_link($seoBoost->get_boosted_content_url($contentId, $languageId));
}
else
{
$altUrl = xtc_href_link(FILENAME_CONTENT, 'coID=' . $coID);
}
if($altUrl !== $url)
{
if($html === '')
{
$html .= htmlspecialchars($url);
}
}
}
}
}
}
if (empty($html)){
$html = 'SHOPMAINURL';
}
return $html;
}
Nun kann ich die url mit {momurl} im html ausgeben.
Allerdings wie sich bereits jeder denken kann, muss diese Funktion für jede Url jedes mal ausgeführt werden 4 mal in meinem Fall + ist das eine sehr uneffiziente Möglichkeit um eine url zu bekommen, soviel Codezeilen für eine so einfache Lösung.
Deshalb wäre ich froh wenn mir jemand helfen könnte. Unser Shop ist so schon langsam genug, diese Lösung macht es bestimmt nicht besser oO.
Im Anhang das Ergebnis.