Puncte:0

Salvați numărul de cuvinte din zona textului în mod programat

drapel cn

Încerc să păstrez un număr de cuvinte pe un set de câmpuri de text lungi. Din câte văd, există mai multe opțiuni:

  1. Creați o vizualizare și adăugați php la un șablon personalizat care produce numărul de cuvinte. Cele mai multe soluții pe care le-am găsit par să se refere prea la acest număr din 2005, care este considerabil depășit.

Aceasta ar fi o soluție viabilă, cu excepția faptului că niciuna dintre opțiunile de cod enumerate nu funcționează și nu sunt suficient de priceput cu php sau jquery pentru a le actualiza la D7 pe cont propriu. Am incercat asta:

<?php $wordcount = " | ".count(explode(" ", strip_tags(trim($content))))." words" ; ?>

Dar primesc o eroare de variabilă nevalidă.

  1. În partea de jos a aceleiași probleme, există o soluție D6 care salvează numărul de cuvinte de fiecare dată când nodul este salvat:
funcția od_tweaks_nodeapi(&$nod, $op, $a3 = NULL, $a4 = NULL) {
  if ($op == „inserare”) { // Salvați numărul de cuvinte
    $corp = $nod->corp;
    $număr_cuvinte = număr(explode(" ", strip_tags(trim($corp))));
    $nid = $nod->nid;
    db_query("INSERT INTO {od_tweaks} (nid, wordcount) VALUES ($nid, $word_count)");
  } else if ($op == „actualizare”) {
    $corp = $nod->corp;
    $număr_cuvinte = număr(explode(" ", strip_tags(trim($corp))));
    $nid = $nod->nid;
    db_query("UPDATE {od_tweaks} SET wordcount = $word_count WHERE nid = $nid");
  }
}
  1. Folosește un modul, pe care aș prefera să-l evit. De asemenea, majoritatea modulelor de numărare a cuvintelor D7 sunt acum învechite. Număr de cuvinte nu pare să facă foarte mult și nu există documentație. Validarea câmpului necesită mai multe module și un pic de agitație. Pare o soluție grea pentru ceea ce ar trebui să fie o problemă ușoară de cod. Cele mai multe dintre celelalte soluții pe care le-am găsit vor produce un număr de cuvinte care rulează pentru un câmp activ, dar nu vor salva sau combina.

Câmpurile în cauză pot fi actualizate împreună cu nodul complet sau actualizate prin câmpuri editabile, așa că mă gândesc că cea mai bună modalitate este fie un hook sau jquery care renumărește cuvintele de fiecare dată când câmpul este actualizat și apoi salvează acea valoare într-un camp Nou. Având în vedere cazul meu de utilizare, acest lucru îmi va oferi flexibilitate de a adăuga și combina valorile numărului de cuvinte în diferite moduri.

Deci, se pare că opțiunea 2 este direcția corectă, dar codul este învechit. Există o modalitate mai bună de a face acest lucru în D7?

drapel cn
„Set de câmpuri de text lungi” - toate acestea sunt pe aceeași entitate? Sau sunt răspândite în mai multe entități legate de o referință de entitate sau similar? De asemenea, cât de precis trebuie să fie numărul de cuvinte?
drapel cn
Același tip de entitate și același nume de câmp, dar extras dintr-o colecție de trimiteri de utilizatori. De exemplu, dacă un utilizator a trimis o serie de postări pe blog, trebuie să fiu capabil să calculez și să afișez numărul de cuvinte pentru fiecare, dar și pentru întregul set. Există o structură de plată pe cuvânt legată de aceasta, așa că trebuie să fie exactă.
drapel in
Poate doriți să vă uitați la https://www.drupal.org/project/computed_field . Modulul permite adăugarea unui câmp ascuns, a cărui valoare salvată este calculată programatic prin codul definit pentru acesta. De acolo, câmpul poate fi folosit în altă parte ca un câmp normal. Alternativ, Drupal are modalități încorporate de a crea câmpuri calculate, deși va trebui să mai săpați puțin. Consultați https://www.drupal.org/docs/drupal-apis/entity-api/dynamicvirtual-field-values-using-computed-field-property-classes
drapel cn
Mulțumiri. Cred că deja mă îndrept în direcția asta. Aproape am ajuns acolo folosind https://www.drupal.org/project/read_time/, dar acceptă doar noduri de conținut și trebuie să preiau text din entityforms.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.