kommentarer Tirsdag 25. Desember 2007, kl. 15:01:14
Her er noen få linjer med PHP som gjør at Movable Type, dersom sidene er generert som .php, kan lukke kommentarene og trackbackene selv etter en gitt tid.
Mrk: Dette forutsetter at sidene blir lagret som .php og ikke som .html, samt at du bruker MySQL som databasetjener Du kan eventuelt parse HTML gjennom PHP med litt hjelp fra .htaccess
Jeg har, i min oversikt over «templates» » «Modules» skrevet en modul som heter «PHPFix» og den ser ut omtrent som dette.
<?php
# Kobler til databasen
$dbname = "SERVERNAVN";
$username = "BRUKERNAVN";
$usedb = "DATABASENAVN";
$password = "PASSORD";
@mysql_connect($dbname, $username, $password) OR DIE(mysql_error());
@mysql_select_db($usedb) OR DIE(mysql_error());
# Lukker alle poster eldre enn x antall dager
# for kommentarer og trackbacks
$compingfix = @mysql_query("
UPDATE mt_entry
SET entry_allow_comments = '0', entry_allow_pings = '0'
WHERE entry_created_on < DATE_SUB(curdate(), INTERVAL 14 DAY)
AND entry_allow_comments != '0' AND entry_allow_pings != '0'
");
?>
Dette gjør at modulen «PHPFix» blir hentet inn i alle sidene som har følgende «template-tag» i Movable Type.
<$MTInclude module="PHPFix"$>
For å sjekke om artikkelen skal vise- eller ikke vise kommentarskjemaet henter vi bare ut denne informasjonen fra databasen «on the fly» med følgende kodebit.
<?php
$cck = @mysql_query("
SELECT *
FROM mt_entry WHERE entry_id = '<$MTEntryID$>'
LIMIT 1
");
while ($myobj = @mysql_fetch_object($cck)) {
# Her henter du ut den informasjonen du vil hente ut
# for å se om kommentarene / trackbackene er åpne
$comopen = myobj->entry_allow_comments;
$tbopen = myobj->entry_allow_pings;
}
?>
Ut fra denne spørringen er det da enkelt nok å se om kommentarer og/eller trackbacks er åpne, og du kan dermed skrive ut- eller ignorere informasjon ut fra denne informasjonen. Eksempelvis bruker jeg følgende lille kodebit for å skrive ut/ignorere «MTEntryTrackbackData»
<?php if ($tbopen == '1') { ?>
# Sett inn koden for trackbackdata her
<$MTEntryTrackbackData$>
<?php } ?>
Tilsvarende løsning for å vise eller ignorere skjemaet for kommentarer vi da se ut omtrent som dette.
<?php if ($comopen == '1') { ?>
# Sett inn skjemaet for kommentarfeltet her
<?php } ?>
Og så enkelt er det. Nå slipper jeg å bygge om sidene hver gang en post blir lukket for kommentarer eller trackbacks, og jeg slipper å bygge om sidene for å lukke en post for kommentarer og trackbacks. Det er klart du må overveie om du vil la PHP generere sidene dine eller om du vil ha de statiske, men jeg har valgt å gjøre det på denne måten da det blir litt mindre jobb for meg. Om serveren må jobbe et milisekund ekstra spiller fint liten rolle.
Dette er noe jeg virkelig har savnet mulighet for i MT, og jeg har fortsatt vonde minner fra jeg tidligere hadde behov for manuelt hukke vekk for tilbaketråkk og kommentarmulighet fra omtrent 200 artikler, én om gangen!
Jeg gleder meg til jeg senere får tid til å teste ut PHP-løsningen din — tusen takk for at du delte den med deg!
Denne artikkelen er nå stengt for videre diskusjon for å hindre spam via kommentarskjemaet eller trackback/ping. Den kan dog bli åpnet igjen ved et senere tidspunkt dersom antallet spamforsøk blir lavere.