Readmore-Hack (kompatibel zu Joomla-4)
Jquery-Code zum umwandeln von Readmore- und Artikel-Links in Menu-Links.
Der Code behebt das Problem, dass bei Klick auf "readmore" die Module der jeweiligen Seite nicht geladen werden, weil kein Menueintrag ausgewählt wurde.
Wie funktionierts?
Der Code sucht nach dem entsprechenden Menueintrag (falls vorhanden) und schreibt den jeweiligen Link in den Menulink um:
Der Code sollte am Ende (nach </body>) der index.php des aktiven Templates stehen. Er schreibt alle Links um, sobald ein entsprechender Menupunkt vorhanden ist. Es muss nicht unbedingt ein "weiterlesen"-Link sein. Wichtig bei SEO angeschaltet ist, dass der Menupunkt den gleichen Alias hat, wie der Beitrag. Hat der volle Beitrag den Alias "das-ist-mein-beitrag", so muss auch der entsprechende Menueintrag den Alias "das-ist-mein-beitrag" haben. Bei SEO off, ist es egal. Aber am besten, man hält sich grundsätzlich dran.
"#menu a" ist zu ersetzen durch den css pfad zum menu-link.
"#main a" ist zu ersetzen durch den css pfad zu den content-links (darf das menu nicht enthalten!).
//Code
$(document).ready(function() {
/*
loadmodule hack by schattle.de
Rewrites all links to corresponding menu-links if exists
Avoids the problem of non-loaded modules in "readmore" or category-links
*/
// change
var menuLink = '#menu a'; // Menu-Link - example: '#mainmenu a'
var toRewrite = '#main a'; // Limit what to rewrite. Must NOT include the menu above!
var debugline = '#debugline'; // For debugging. Change to your debugline (optional)
//no changes beyond
$(toRewrite).each(function() {
var domain = document.domain;
var href = $(this).attr('href');
var outerThis = this;
var linkText = $(this).text();
if (href.startsWith('http') && href.indexOf(domain,0) == -1) { // no rewrite for external link
$(debugline).html($('.debugline').html()+'External-Link found: '+linkText+' -> '+href+'<br>');
return;
}
// If SEO off we have the string &ID=
// No rewrite when no ID (startpage, images, mailto ...)
else if (href.search(/&id=\d*/) > -1){
var refID = href.match(/&id=\d*/);
refID = refID[0].replace('&id=', '');
var isCat = href.indexOf('view=category');
if ( isCat > -1 ){ //find menu item with corresponding category-link
$('a.maximenuck').each(function() {
var hasCat = $(this).attr('href').indexOf('view=category');
var hasID = $(this).attr('href').indexOf('&id='+refID);
if( hasCat > -1 && hasID > -1 ){
var linkText = $(outerThis).text();
var menuURL = $(this).attr('href');
$(debugline).html($('.debugline').html()+'LINK:'+linkText+' -> '+href+' menuURL:'+menuURL+' Cat'+'<br>');
$(outerThis).attr('href',menuURL);
return false;
}
});
}
else { //find menu item with corresponding article-link
$('a.maximenuck').each(function() {
var hasArticle = $(this).attr('href').indexOf('view=article');
var hasID = $(this).attr('href').indexOf('&id='+refID);
if( hasArticle > -1 && hasID > -1 ){
var linkText = $(outerThis).text();
var menuURL = $(this).attr('href');
$(debugline).html($('.debugline').html()+'LINK:'+linkText+' -> '+href+' menuURL:'+menuURL+' Article'+'<br>');
$(outerThis).attr('href',menuURL);
return false;
}
});
}
return;
}
// Else case is as follows:
// 1.) No ID = no rewrite because menuID is undefined
// 2.) If SEO is ON, we have a unique Alias behind the last slash (The Menu-Alias MUST be equal!)
else {
var aliasArr = href.split('/');
var aliasRef = aliasArr[aliasArr.length - 1];
var menuURL = $(menuLink+'[href*="'+aliasRef+'"]').attr('href');
$(debugline).html($('.debugline').html()+'No ID or SEO ON: '+linkText+' -> '+href+' menuURL:'+menuURL+'<br>');
$(this).attr('href',menuURL);
return;
}
});
// End loadmodule hack
});
Umschalter für Einfache Sprache (kompatibel zu Joomla-4):
Der Code sollte am Ende (nach </body>) der index.php des aktiven Templates stehen. Damit kann man (relativ) einfach Content umschalten zu barrierefreier Einfacher Sprache. Dabei muss natürlich die Einfache Sprache erst einmal exisiteren. Sie muss bei dieser Methode in JEDEM Artikel eingefügt werden. Es ist dennoch einfacher, als so etwas über den Joomla-Sprachschalter zu realisieren.
How to use:
1.) Place the following HTML-Code anywhere on the Site (Maybe a Module):
<p class="toggel"><a href="#" class="toggler">Easy Language</a></p>
2.) Touch every Article and optional Modules:
Every Article (or Modules) must have mainly two different DIV in Content as Follows:
<div class="standard">ALL Standard-Content of the Article</div>
<div class="simple">ALL Simple-Language-Content of the Article</div>
When you need Content displayed on both versions, place it outside this DIV-Containers.
For Example a third DIV: <div>All Content for both-versions</div>
//code:
$(document).ready(function() {
// Change to whatever you want
var standardLangText = "Standardsprache"; //String to display if "Simple" ist active
var easyLangText = "Einfache Sprache"; //String to display if "Standard" ist active
// No Changes beyond here
function setCookie(n,w,e){
var a = new Date();
a = new Date(a.getTime() +e);
document.cookie = n+'='+w+'; expires='+a.toGMTString()+';';
}
function getCookie(n){
a = document.cookie;
res = '';
while(a != ''){
while(a.substr(0,1) == ' '){a = a.substr(1,a.length);}
cookieName = a.substring(0,a.indexOf('='));
if(a.indexOf(';') != -1) cookieVal = a.substring(a.indexOf('=')+1,a.indexOf(';'));
else cookieVal = a.substr(a.indexOf('=')+1,a.length);
if(n == cookieName) res = cookieVal;
i = a.indexOf(';')+1;
if(i == 0) i = a.length
a = a.substring(i,a.length);
}
return(res)
}
function deleteCookie(n){
document.cookie = n+'=; expires=Thu, 01-Jan-70 00:00:01 GMT;';
}
// initial we read the cookie if set
if (getCookie('isSimple') == 'yes'){
$('.standard').hide('fast', function(){
//callback here if needed
});
$('.simple').show('fast', function(){
$(this).addClass('open');
$('.toggler').text(standardLangText);
$('.toggler').addClass("toggelt");
});
}
else {
$('.simple').hide('fast', function(){
//callback here if needed
});
$('.standard').show('fast', function(){
$('.toggler').text(easyLangText);
$('.toggler').removeClass("toggelt");
$(this).removeClass('open');
});
}
// Switch Lang and set cookie
$('.toggler').on('click', function(){
if ($('.simple').hasClass('open')){
setCookie('isSimple', 'no', '1000*60*60*24*365');
$('.simple').hide('fast', function(){
$('.standard').show('fast', function(){
});
$('.toggler').text(easyLangText);
$('.toggler').removeClass("toggelt");
$(this).removeClass('open');
});
}
else {
setCookie('isSimple', 'yes', '1000');
$('.simple').show('fast', function(){
$('.standard').hide('fast', function(){
});
$(this).addClass('open');
$('.toggler').text(standardLangText);
$('.toggler').addClass("toggelt");
});
}
});
//end switch simple language
});