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:
| Weblocatie | Categoriepad | Hits |
|---|---|---|
| Adobe Photoshop Elements - Organizer | dutch/diversen | 190 |
| Algemene voorwaarden | dutch/diversen | 305 |
| Contactgegevens | dutch/diversen | 1041 |
| Controle over je data | dutch/diversen | 3493 |
| Introductie | dutch/diversen | 513 |
| Wat anderen er van vinden | dutch/diversen | 281 |
| Logfile 70B | dutch/diversen/hockey | 224 |
| Bronnen en verwijzingen | dutch/fietsen | 6407 |
| GPX bestand importeren in Excel (1) | dutch/fietsen | 8523 |
| GPX gegevens bewerken in Excel (2) | dutch/fietsen | 7440 |
| Opbouw van een gpx bestand | dutch/fietsen | 8651 |
| Top 25 Klimmen - Gemiddelde Helling | dutch/fietsen | 275 |
| Top 25 Klimmen - Hoogte van de Top | dutch/fietsen | 295 |
| Top 25 Klimmen - Hoogteverschil | dutch/fietsen | 279 |
| Top 25 Klimmen - Lengte | dutch/fietsen | 241 |
| Top 25 Klimmen - Maximale Helling | dutch/fietsen | 274 |
| Top 25 Klimmen - Zwaarte | dutch/fietsen | 290 |
| Excel GetURL functie | dutch/software/excel | 5174 |
| Upload van Excel naar MySQL database | dutch/software/excel | 1665 |
| Aandelen administratie in FrontAccounting | dutch/software/frontaccounting | 3852 |
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.