it-swarm-es.tech

Eliminar fila de SQL personalizado al eliminar artículo en Joomla

Todavía soy nuevo en Joomla y en la codificación de SQL.

Estaba pensando en cómo debería administrar un gran sistema que hice con información que se guarda en una tabla sql, que contiene algunas entradas del usuario y el "id" de un artículo.

Si usted u otro administrador elimina un artículo, ¿creo que también tengo que eliminar la fila que contiene la identificación de ese artículo en mi tabla sql personalizada?

¿Hay alguna manera de hacer un script que se ejecute cada vez que se elimina un artículo? de esa manera podría obtener la identificación del artículo y luego eliminarlo de mi tabla personalizada.

¿Cómo manejan ustedes sus tablas sql personalizadas que contienen referencias a artículos o usuarios en Joomla?

1
JonasB

Cree un complemento con el evento onContentAfterDelete. Ejemplo básico:

<?php
defined('_JEXEC') or die;

use Joomla\CMS\Factory;
use Joomla\CMS\Plugin\CMSPlugin;

class PlgContentExample extends CMSPlugin
{
    public function onContentAfterDelete($context, $item)
    {
        // Check that the deleted item is an article.
        if ($context !== 'com_content.article')
        {
            return true;
        }

        $db = Factory::getDbo();
        $query = $db->getQuery(true)
            ->delete($db->quoteName('#__customtable'))
            ->where($db->quoteName('article_id') . ' = ' . (int) $item->id);
        $db->setQuery($query);

        try
        {
            $db->execute();
        }
        catch (\RuntimeException $e)
        {
            // Informational log only
        }
    }
}

Reemplazar #__customtable con el nombre de tu mesa y article_id con la columna que contiene ID de artículo.

Documentos:

Plugin/Eventos/Contenido

Creando un complemento de contenido

Desarrollo de complementos

2
Sharky