Selecteer de taal

Joomla kent modules, die veel laten zien over de gepubliceerde artikelen. Bijvoorbeeld de meest recente artikelen of de meest populaire. De gegevens hiervoor worden opgehaald uit de Joomla database.

Lijkt het je interessant om te onderzoeken of je dit soort tabellen zelf kunt samenstellen? We gaan er vanuit, dat je enige kennis hebt van MySQL en dat je queries kunt uitvoeren in phpMyAdmin of in een MySQL client. Daar kan je de scripts draaien, die hieronder beschreven worden. Wanneer je de output in een Joomla artikel wilt laten zien, dan is daarvoor een component met een plugin voor nodig. De naam van de extensie is Plotalot en het wordt verkocht door Les Arbres Design . Bij het pakket hoort een uitgebreid documentatiepakket, dat alle stappen laat zien.

Alle artikelen op een rijtje

Dit is de MySQL query:

SELECT
jl_content.title AS Artikeltitel,

jl_categories.path AS Categoriepad,
jl_content.hits AS Hits
FROM jl_content LEFT JOIN
jl_categories ON jl_content.catid = jl_categories.id
WHERE jl_content.state = 1 and jl_content.access = 1
ORDER BY jl_categories.path, jl_content.title

Toelichting bij de stappen:

  • Vervang de prefix jl_ door de prefix, die je zelf gekozen hebt bij je Joomla installatie
  • De WHERE regel laat zien, dat alleen artikelen geselecteerd worden, die gepubliceerd (state=1) en voor iedereen toegankelijk (access=1) zijn
  • De volgorde wordt eerst bepaald door de categorie en daarna door de titel

De bovenstaande query levert via de Plotalot plugin het volgende resultaat op:

WeblocatieCategoriepadHits
Adobe Photoshop Elements - Organizerdutch/diversen190
Algemene voorwaardendutch/diversen305
Contactgegevensdutch/diversen1041
Controle over je datadutch/diversen3493
Introductiedutch/diversen513
Wat anderen er van vindendutch/diversen281
Logfile 70Bdutch/diversen/hockey224
Bronnen en verwijzingendutch/fietsen6407
GPX bestand importeren in Excel (1)dutch/fietsen8523
GPX gegevens bewerken in Excel (2)dutch/fietsen7440
Opbouw van een gpx bestanddutch/fietsen8651
Top 25 Klimmen - Gemiddelde Hellingdutch/fietsen275
Top 25 Klimmen - Hoogte van de Topdutch/fietsen295
Top 25 Klimmen - Hoogteverschildutch/fietsen279
Top 25 Klimmen - Lengtedutch/fietsen241
Top 25 Klimmen - Maximale Hellingdutch/fietsen274
Top 25 Klimmen - Zwaartedutch/fietsen290
Excel GetURL functiedutch/software/excel5174
Upload van Excel naar MySQL databasedutch/software/excel1665
Aandelen administratie in FrontAccountingdutch/software/frontaccounting3852

 In de Plotalot query zitten enkele wijzigingen:

  • In de CONCAT regel wordt een hyperlink naar het artikel opgebouwd
  • De harde prefix jl_ wordt hier vervangen door de zelf detecterende prefix #__
  • Omdat deze website meertalig is, wordt in de WHERE regel geselecteerd op de Nederlandse taal
  • Om deze pagina overzichtelijk te houden is het aantal regels beperkt tot 20

Met deze aanvullingen is dit de Plotalot query:

SELECT
CONCAT('<a target="_self" href="/%%J_ROOT_URI%%index.php/',
LEFT(#__content.language,2),
'/?option=com_content&view=article&id=',
#__content.id,'&catid=', #__content.catid,'">',
#__content.title,'</a>') AS Weblocatie,
#__categories.path AS Categoriepad,
#__content.hits AS Hits
FROM #__content LEFT JOIN
#__categories ON #__content.catid = #__categories.id
WHERE #__content.state = 1 and #__content.access = 1
and LEFT(#__content.language,2) = 'nl'
ORDER BY #__categories.path, #__content.title LIMIT 20

Wanneer je de smaak van het maken van queries in MySQL te pakken hebt, dan is het een kleine stap om zelf nieuwe variaties te maken.

Nieuwste artikelen

SELECT
jl_content.title AS Artikel,
jl_categories.path AS Categoriepad,
date(created) AS Gemaakt,
jl_content.hits AS Hits
FROM jl_content
LEFT JOIN jl_categories ON jl_content.catid = jl_categories.id
WHERE jl_content.state = 1 and jl_content.access = 1
ORDER BY created DESC LIMIT 10

Meest populaire artikelen

SELECT
jl_content.title AS Artikeltitel,

jl_categories.path AS Categoriepad,
jl_content.hits AS Hits
FROM jl_content LEFT JOIN
jl_categories ON jl_content.catid = jl_categories.id
WHERE jl_content.state = 1 and jl_content.access = 1
ORDER BY jl_content.hits desc limit 10

Aantal artikelen per categorie:

SELECT
jl_categories.path AS Pad,
COUNT(jl_categories.title) AS Aantal
FROM jl_content LEFT JOIN
jl_categories ON jl_content.catid = jl_categories.id LEFT JOIN
jl_categories jl_categories1 ON jl_categories.parent_id =
jl_categories1.id
WHERE jl_content.state = 1 and jl_content.access = 1
GROUP BY jl_categories.path
UNION
SELECT
'Totaal' AS Pad,
COUNT(jl_content.title) AS Aantal
FROM jl_content
WHERE jl_content.state = 1 and jl_content.access = 1 

Inhoud van je Joomla configuratie:

SELECT 'Template' AS Omschrijving, template AS Waarde
FROM jl_template_styles
WHERE client_id=0 AND home=1
UNION
SELECT 'Aantal componenten' AS Omschrijving, COUNT(name) AS Waarde
FROM jl_extensions
WHERE type = 'component'
UNION
SELECT 'Aantal modules' AS Omschrijving,
SUM(CASE WHEN published = 1 THEN 1 ELSE 0 END) AS Waarde
FROM jl_modules
UNION
SELECT 'Aantal actieve plugins' AS Omschrijving, COUNT(name) AS Waarde
FROM jl_extensions
WHERE type = 'plugin' AND enabled = 1
UNION
SELECT "Aantal artikelen" AS "Omschrijving",COUNT(title) AS Waarde
FROM jl_content
UNION
SELECT "Openbare artikelen" AS "Omschrijving",COUNT(title) AS Waarde
FROM jl_content
WHERE jl_content.state = 1 and jl_content.access = 1

 Let er op, dat je bij elk voorbeeld prefix jl_ vervangt door de prefix, die je zelf gekozen hebt bij je Joomla installatie.

 

Add comment