Joomla: articoli orfani non collegati a menu

Uno dei bug più fastidiosi delle vecchie versioni di Joomla in versione SEF, bug ancora presente in moltissimi plugin scritti in pessimo php e con scarso supporto SEF, riguarda la creazione di pagine duplicate per articoli non assegnati ad alcun menù oppure non presenti in alcuna categoria collegata direttamente ad un menù.

Commettere l’errore di non controllare plugin di terze parti (oppure di utilizzare versioni vecchie di Joomla) avendo abilitato gli URL search engine friendly può essere fatale, dato che questi articoli orfani possono creare montagne di pagine duplicate.

Non esistono al momento estensioni di Joomla per trovare questi articoli orfani non associati a nessun menù, ma con una semplice query SQL (da eseguire su shell o in phpMyAdmin) potete iniziare ad avere delle indicazioni importanti.

La seguente interrogazione SQL incrocia i dati delle tabelle jos_menu e jos_content e vi indica tutti gli articoli non associati direttamente ad un menù.

SELECT * FROM `jos_content` AS co WHERE co.id NOT IN (SELECT c.id FROM `jos_menu` as m join `jos_content` as c on m.link = concat('index.php?option=com_content&view=article&id=',c.id));

 

Tenete però presente che la query qui sopra vi inserirà tra i risultati anche gli articoli (decine, centinaia o migliaia) che hanno un loro url univoco e che non presentano potenziali problemi, perchè associati ad una voce di menù di tipo “aspetto categoria” o “aspetto categoria blog”, come può essere ad esempio una sezione NEWS.

Se avete una soluzione per rimuovere questi “falsi positivi” segnalatemelo. La soluzione data da un sito a pagamento (expert-exchange) qui di seguito NON funziona.

<del> SELECT * FROM `jos_content` AS co WHERE co.id NOT IN (SELECT c.id FROM `jos_menu` as m join `jos_content` as c on m.link = concat('index.php?option=com_content&amp;view=article&amp;id=',c.id))</del>
<del> AND co.catid NOT IN (SELECT SUBSTRING_INDEX(`link`,'=',-1) FROM `jos_menu` WHERE `link` LIKE 'index.php?option=com_content&amp;view=&amp;category%' AND `published` = 1)</del>

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.