it-swarm-es.tech

K2 Agregar etiqueta al artículo si la palabra clave está en el título del artículo

Esto parece estar un poco fuera de mi alcance y conocimiento de MySQL. Entonces, si alguien puede ayudar, sería muy apreciado.

Me gustaría hacer lo siguiente:

  1. Ingrese/defina una palabra clave, p. mercedes
  2. Encuentre todos los artículos de K2 que tengan esa palabra clave en el título
  3. Que a cada uno de esos artículos asigne mi palabra clave mercedes como etiqueta.

Ahora ... Hay tres tablas con columnas relevantes en la lista:

k2_items

id, title

k2_tags

id, name, published (el valor 1 se asigna si se publica la etiqueta)

k2_tags_xref

id, tagID, itemID

Por lo tanto, la consulta debe seleccionar todos los elementos de k2_items tabla que tiene keyword en su título, verifique si keyword ya está definido como tag en k2_tags, si no es así, cree una nueva etiqueta. Después de eso, nuevo k2_tags_xref la entrada debe generarse para conectar la etiqueta keyword con el artículo del artículo K2.

Todavía no tenía un curso de base de datos en mi universidad, así que estoy fuera de mi alcance con este, y se suponía que era solo un simple retoque para el sitio que estoy desarrollando.

Cualquier ayuda con esto sería muy apreciada, y estoy seguro de que ayudará a la comunidad más adelante.

¡Gracias!

5
Reygoch

Hay un par de consultas que debe ejecutar. Utilice estas consultas primero en un entorno de prueba. Hay una idea:

/* Query 1: Select the id of the tag */ 
SELECT id FROM `#__k2_tags` WHERE `name` = 'mercedes' LIMIT 1;

/* Query 2: If previous query returned null, create a new tag */
INSERT INTO `#__k2_tags`
SET `name` = 'mercedes',
`published` = 1;

/* Query 3: Use this to get the last id or use id from Query 1 */
SELECT LAST_INSERT_ID();

/* Query 4: Insert tags for each article that contains in the title the Word mercedes */
INSERT INTO `#__k2_tags_xref` (`tagID`,`itemID`)
(
    SELECT DISTINCT 'YOUR_TAG_ID', i.id
    FROM `#__k2_items` AS i
    WHERE LOCATE('mercedes', title) > 0
)
2
Valentin Despa