PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Wie komme ich an die aktuelle URL für share static buttons



Danny94
10.04.2017, 18:11
Ich möchte verschiedene Share Buttons (FB,Twitter, googleplus usw.) im Shop einbringen. Da ich aber den Shop nicht weiter verlangsamen möchte, würde ich gerne static buttons einfügen welche wie folgt aussehen:


<a class="facebook" onClick="window.open('URL','sharer','toolbar=0,status=0,wid th=580,height=500');" href="javascript: void(0)"><i class="fa fa-thumbs-o-up" aria-hidden="true"></i><div class="displayno"> &nbsp;Like</div></a>

Das Problem wie komme ich an die aktuelle URL ?
Und eventuell auch an die description ?

Einfügen möchte ich die Buttons in die index.html.

rf-musik
11.04.2017, 09:00
Hallo,
so wie bei uns?

Danny94
11.04.2017, 09:49
Hallo,
so wie bei uns?

Hallo rf-musik,
bin schon total beim verzweifeln -.-
Gott sei dank antwortet jemand =).

Nein an sich brauch ich nur die aktuelle URL der Seite.
wenn ich z.b. auf "https://shopdomain/de/katergorie/site1.html" bin brauch ich genau diese url "https://shopdomain/de/katergorie/site1.html" aber natürlich auf jeder Seite die momentane URL.
Die würde ich dann oben im code Beispiel bei "URL" einfügen.

Habe schon etwas rumprobiert {$CURRENT_URL} usw (bis ich auf eine funktionierende variable stoßen würde) aber nicht mal {$HOME_URL} scheint zu funktionieren.

Das Codebeispiel oben kommt unter shop/templates/honeygrid/index.html im wrapper ganz am Ende.

Danny94
21.04.2017, 14:22
Keiner eine Idee ??
Ich komm nicht drauf.

rf-musik
21.04.2017, 14:29
hast Du im Gambio Admin - SEO - und dann unter " Social Bookmarking" geschaut !?

Danny94
21.04.2017, 15:11
hast Du im Gambio Admin - SEO - und dann unter " Social Bookmarking" geschaut !?

Das hilft mir leider auch nicht weiter. Dort kann man nur Symbole mit fixe urls anzeigen lassen.

Ich will aber ein static share button machen, welcher auf jeder Unterseite die jeweilige url besitzt. Keine fixe sondern die aktuelle url der Unterseite.

Danny94
21.04.2017, 16:58
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:



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.

rf-musik
22.04.2017, 08:58
Das ist doch Super!

Danny94
23.04.2017, 00:47
Das ist doch Super!

Ja super dass es funktioniert, aber effizient nicht besonders :(.

Danny94
26.04.2017, 09:12
Habs endlich gefunden...
Aktuelle URL:
{page_url}

so einfach ...

Hatte das sogar einmal versucht, nur da hatte ich vergessen den cache zu leeren...

Aber ich kann die andere Funktion eh gebrauchen da ich mir selbst eine Sprachauswahl basteln muss.