14 berichten aan het bekijken - 1 tot 14 (van in totaal 14)
  • Q:

    Bijdrager
    Shmoo

    PHP of Javascript gebruiken voor het automatisch toevoegen van trefwoorden

    Ik ben aan het zoeken naar een manier om eenvoudig de content binnen een textarea te controleren tegen een X lijst van trefwoorden en zodra er een gevonden wordt ( true ) dan moet dit woord in een ander input field geplaatst worden.

    Nu heb ik een aantal scripts gevonden zowel PHP als JS welke zoiets of iets vergelijkbaars doen maar beide manieren hebben aanpassingen nodig om het op mijn site werkend te maken.

    Javascript
    Deze werkt eigenlijk vrij simpel en direct het enige probleem is dat er elke 2000ms gecontroleerd wordt en zodra er een positieve match is verspringt ook de focus van het textarea field naar het input field. Dit is natuurlijk uitermate irritant want het input field zal ooit op deze manie van werken verborgen moeten worden.

    PHP
    Dit is een vrij complex ( voor mijn doen ) script dat gelijkertijd ook trefwoorden tegen Google, Yahoo en Bing checkt, deze check zal ik er dan uit moeten slopen en vervangen met mijn eigen lijst van trefwoorden.
    Ook is het script gebouwd om te werken in de back-end bij het toevoegen van blog posts ik wil het aanpassen zodat het ook front-end gaat werken.

    Mijn voorkeur gaat uit naar de PHP versie van het script al zal dit moeilijker zijn dan werken met Javascript maar bij de Javascript optie zit ik weer met het probleem dat ik in de footer van mijn site binnen een HTML script tag een lijst met trefwoorden moet printen.
    Als dit er straks 50 – 80 stuks zullen zijn dan kun je je voorstellen wat voor bende dit gaat worden.

    Kan iemand mij helpen in de juiste richting te zoeken want ik heb het idee dat dit wel op 1000 verschillende manieren gemaakt kan worden maar dat ik te zeer naar specifieke voorbeelden aan het zoeken ben.


    Bijdrager
    michiel112

    Wil je alleen op bepaalde verboden woorden checken of ook nog wat anders?

    Wil je vrij algemeen zoeken: https://www.google.com/search?q=server+or+client+side+validation


    Bijdrager
    michiel112

    http://www.smashingmagazine.com/2009/07/07/web-form-validation-best-practices-and-tutorials/ is misschien wel een goede basis om mee te beginnen met lezen. Is wel meer voor een form in het algemeen dan specifiek een textarea (wat natuurlijk ook een onderdeel ervan is) en het is niet zo zeer specifiek voor een controle op woorden, maar lijkt me handig om eerst even de algemene principes te begrijpen (als je dit nog niet doet) om vervolgens meer specifiek te gaan zoeken…


    Bijdrager
    Shmoo

    Nou het is niet zo zeer Validation van forms maar meer dit.

    ( druk op de get button )
    http://thinkphp.github.io/AutoTagger/

    Alleen moet dit niet controleren tegen een bepaalde dikke SEO databank maar gewoon tegen mijn eigen gemaakte lijst met 50 – 80 belangrijke (FAQ) Tags.


    Bijdrager
    Fingerlicking

    Je zou natuurlijk zowel in JS als in PHP een array kunnen maken met je keywords en je textarea value exploden/splitten op een spatie of wordboundery en deze woorden laten matchen tegen je array, in_array in PHP of $.inArray in jQuery. In JS gooi je die waarde in een hidden field die je laat submitten. Ik zou zelf voor een PHP oplossing gaan, scheelt weer een ajax call die de keywords ophaalt.


    Bijdrager
    verwijderd-profiel

    Ik heb voor mijn eigen website dit gebruikt ( http://rumkin.com/tools/password/passchk.php ) voor het checken van de sterkte van wachtwoorden. Hier wordt ook een lijst met veel voorkomende woorden gebruikt die hij vergelijkt met het ingevoerde.

    Misschien dat je hier een gedeelte van kan gebruiken?
    Het is Open Source.


    Bijdrager
    michiel112
    Fingerlicking op 03 februari 2014

    Ik zou zelf voor een PHP oplossing gaan, scheelt weer een ajax call die de keywords ophaalt.

    Daartegenover staan dan toch een hoop ajax calls om de textarea te checken voordat deze gesubmit wordt? Of hoe zou jij dat dan doen?


    Bijdrager
    Shmoo

    Thanks voor het meedenken,

    Ik wil het graag zo veel mogelijk in PHP maken want je zou het ook met Angular.js kunnen maken maar dan krijg je weer direct een Javascript bieb van 100+ kb voor je kiezen om alleen deze functie te verwerken.

    + Er zijn add_action calls aanwezig die het mogelijk moet maken om content toe te voegen tijdens het submitten.

    
    add_action( 'bbp_new_topic',  'shmoo_auto_save_tags', 10, 5 );
    add_action( 'bbp_edit_topic', 'shmoo_auto_save_tags', 10, 5 );
    

    Maar om met mijn tags te kunnen werken moet ik ze alleen eerst in een array plaatsen dus had ik dit gemaakt:

    
    <?php
    	$shmoo = wp_tag_cloud( array( 'format' => 'array', 'taxonomy' => 'topic-tag' ) );
    	print_r( $shmoo );
    ?>
    

    Alleen zoals je zien worden het auto. linkjes dat lijkt me niet de bedoeling en kan in de weg zitten wanneer ik straks de tags in de array wil gaan checken.
    Is er een PHP tag die mijn tags in de array auto. stript en er weer platte tekst (strings) van maakt?


    Bijdrager
    Shmoo

    Gevonden er bestaat een strip_tags functie.

    
    <?php
    $shmoo = wp_tag_cloud( array( 'format' => 'array', 'taxonomy' => 'topic-tag' ) );
    
    function tag_stripper( &$items, $format ) {
    	$items = strip_tags( $items );
    }
    
    array_walk( $shmoo, 'tag_stripper' );
    print_r( $shmoo );
    ?>
    

    Het eerste gedeelte, mijn lijstje met tags in een array is gemaakt nu verder naar het gedeelte dat de content moet ophalen dat ge-submit wordt vanuit de textarea.


    Bijdrager
    Fingerlicking

    var str = $(‘.textarea’).val().split(/\b/),
    wordsArray = [‘woord’, ‘ajax’],
    matches = [];

    $.each(str, function(index, woord){
    if(($.inArray(woord, wordsArray) > -1)){
    matches.push(woord);
    }
    });

    if(matches){
    $(‘.hiddenField’).val(matches.join(‘, ‘));
    }

    Of iets in die trant.


    Bijdrager
    michiel112

    Ook is het script gebouwd om te werken in de back-end bij het toevoegen van blog posts ik wil het aanpassen zodat het ook front-end gaat werken.

    Wat wil je nu precies? Dat je op submit drukt en dan pas de matchen te zien krijgt of wil je ze al tijdens het typen in de textarea?


    Bijdrager
    Shmoo

    Nou er bestond een WordPress script dat in de back-end werkte dit wilde ik eerst gebruiken als basis voor mijn systeem, bij dit script zag je dus werkelijk na X seconde de matchen verschijnen in het input field van de Tags Meta Box. Je zou deze selectie van aanbevolen Tags dus zelf dan nog kunnen aanpassen voordat je op submit drukt.

    In mijn systeem ( front-end ) wilde ik dit het liefst helemaal niet, ik wil het Tag input field aan de voorkant van de site juist helemaal verwijderen zodat mensen niet meer zelf hun eigen tags kunnen toevoegen om spam trefwoorden en trefwoorden als Mac en iPhone ( dat geen trefwoorden zijn ) te verbannen.

    Nu heb ik dus in PHP een plugin voor bbPress in elkaar geknutseld dat de content van het topic controleert zodra er op submit gedrukt wordt. Zijn er trefwoorden in de content aanwezig dan worden deze automatisch als tags toegevoegd aan het topic.
    Moderators en site-admins kunnen in de back-end trefwoorden toevoegen zodat ze zelf het beheer houden over wat trefwoorden zijn en wat niet.


    Bijdrager
    Fingerlicking

    Als je wilt dat zij er controle over houden, dan zou ik toch voor een JS oplossing gaan! Anders is het een grote verrassing welke tags het systeem ervan heeft gemaakt en moeten ze alsnog de post nalopen, niet echt user friendly in mijn ogen.

    Op een keypress event kun je de woorden laten filteren, en zelfs al kijken of ze al in je array voorkomen (voorkom je dubbele tags).

    Voeg deze tags toe aan een hidden field, en een soort van button zoals je al gemaakt hebt.

    Voeg een delete optie toe op die buttons om de tags te verwijderen, uiteraard ook in je hiddenfield verwijderen, hoef je daarna alleen nog ff de post te verwerken.


    Bijdrager
    Shmoo

    Het systeem maakt zelf geen tags aan het voegt alleen maar auto. reeds bestaande tags toe aan de topics wanneer deze tags voorkomen in de content van het topic.

    Moderators en site-admins kunnen deze tags beheren vanuit het back-end daar waar ze sowieso al rondhangen voor het beheren van spam topics en met beheren bedoel ik dan in dit geval nieuwe tags toevoegen wanneer zij vinden dat dit nodig is omdat een trefwoord vaak voorkomt i.c.m. X probleem. Het doel van dit script is juist dat het allemaal geautomatiseerd wordt en dat niemand er omkijken naar heeft zodat je niet meer naar alle topics hoeft te kijken welke tags eraan gekoppeld worden en-/of dit wel de juiste zijn. Er gaat extreem veel tijd zitten in het modereren van content op een forum en niemand heeft na een jaar nog tijd om Tags te controleren wat weer resulteert in een tag-systeem dat geen enkele toegevoegde waarde aan de website meer heeft omdat niemand het gebruikt of het helemaal verkeerd gebruikt wordt.

    Het tags systeem moet gaan werken als een soort van FAQ systeem binnen het forum zodat je heel snel alle topics met een X tag bij elkaar kunt filteren zonder een zoekfunctie uit te voeren.
    Het gaat nooit helemaal 100% waterdicht zijn maar het heeft op deze manier veel meer functie dan het standaard systeem waar iedereen maar wat tags kan toevoegen die hij-/zij wilt.

    De bedoeling is ook niet dat er 5000 tags ingesteld worden maar max. 100 of zo, als je kijkt naar sites als Stockoverflow die hebben ook een prachtig systeem dat adviseert welke tags er toegevoegd kunnen worden – precies zoals jij aangeeft heb je daar wel nog de mogelijkheid tot handmatig modereren voordat je op submit drukt. Alleen dat soort sites worden beheert door mensen die weten hoe het internet werkt en wat tags zijn – mensen die op Stockoverflow nog geen X status hebben kunnen zelf geen nieuwe tags toevoegen en mensen die wel X status hebben die weten wat tags zijn en kun je dus toevertrouwen dat ze de juiste tags aanmaken.

    Maar mijn idee was gebaseerd op dit forum.
    http://foundation.zurb.com/forum

    Hier worden tags ook auto. toegevoegd op basis van de content en je ziet direct het probleem wanneer je mensen nog de mogelijkheid geeft om handmatig tags te veranderen naar eigen wensen.

    Dit zijn niet echt tags die je aan topics gekoppeld wilt zien en zou je dus weer handmatig moeten gaan modereren, een klusje waar geen moderator op zit te wachten.

    Mensen denken dat tags keywords zijn waar topics op gevonden worden binnen Google.

    Terwijl dit een prachtig voorbeeld is van hoe het wel goed kan werken wanneer iemand gewoon met zijn handen van de tags functie afblijft, in dit geval is het een forum over het bouwen van websites.

    Interchange is een module-naam uit de Foundation Framework en background-image is een CSS onderdeel. Prachtig toch, als iemand dit topic leest en problemen heeft met de Interchange module maar dit topic helpt deze persoon niet bij zijn probleem dan kan hij heel eenvoudig op de Interchange tag drukken en alle topics die over Interchange gaan bij elkaar filteren zonder veel te brede zoektermen te hoeven intypen in zoekvensters.
    Aan de hand van de topic-titels op die ‘tags-filter-page’ kun je dan wel bepalen of een topic jouw probleem miss. zou kunnen oplossen ja of nee.

14 berichten aan het bekijken - 1 tot 14 (van in totaal 14)

Je moet ingelogd zijn om een reactie op dit onderwerp te kunnen geven.