Hauptmenü

Werkzeuge

Kategorien

Archiv

Nicht mehr referenzierte Datensätze löschen

Erstellt in TYPO3 am 29. Januar 2017 vom Daschmi

In letzter Zeit musste ich viele Updates von TYPO3 durchführen und musste dabei immer TemplaVoila! Umsetzungen durch FLUID Templates und DCE/GRIDELEMENTS ersetzen. Mehrfach hatte ich das Problem, dass dem Kunden auf einmal alte Elemente wieder aufgefallen sind, die er eigentlich bereits „gelöscht“ hatte.

Ursache war das Verhalten von TemplaVoila!. TemplaVoila! löscht Elemente nicht und markiert diese auch nicht als gelöscht (deleted Flag), sondern entfernt lediglich die Zuordnung zu einer Spalte in der pages Tabelle.

Um die Elemente einfach nachträglich herauszufiltern habe ich eine kleine Erweiterung programmiert, die sich in die TYPO3 Funktionen integriert:

Die Erweiterung arbeitet ohne Verwendung von TemplaVoila! Funktionen und kann daher auch in TYPO3 7 ohne Templavaoila Installation verwendet werden.

Folgende Funktionen können mit den nicht mehr verwendeten TemplaVoila! Elementen ausgeführt werden:

  • Auf „hidden“ setzen
    Markiert nicht mehr zugeordnete Elemente über die „hidden“ Spalte so dass sie im Backend als ausgeblendet erscheinen.
  • Auf „deleted“ setzen
    Markiert nicht mehr zugeordnete Elemente über die „deleted“ Spalte.
  • Komplett löschen
    Löscht nicht mehr verwendete Elemente vollständig

ds_tv_cleaner - Entfernen von gelöschten TemplaVoila! Elementen

Stückpreis: 8,40 EUR

Löscht Inhaltselemente, die mit TemplaVoila! angelegt und gelöscht wurden.

  • Die Extension kann ab TYPO3 6.0 eingesetzt werden.
  • Mehrsprachigkeit wird grundlegend unterstützt
  • In der Tabelle pages muss die Spalte tx_templavoila_flex noch vorhanden sein.
  • Sollte nicht auf Seiten angewendet werden die nicht mit TemplaVoila! gepflegt wurden!

Google Chrome DNS Cache leeren

Erstellt in Allgemein am 27. September 2016 vom Daschmi

Um im Chrome Browser von Google den DNS Cache zu leeren einfach folgende URL im Browser aufrufen:

chrome://net-internals/#dns
und auf „Clear Host Cache“ klicken.

Link zur Kategorieverwaltung mittels add_submenu_page

Erstellt in Wordpress am 30. März 2016 vom Daschmi

Ich hatte das Problem, dass ich zur Kategorieverwaltung einer benutzerdefinierten Taxononomie (registriert mit register_taxonomy) leiten wollte. Das ganze habe ich für wpShopGermany wie folgt umgesetzt:

$callback = add_submenu_page('wpsg-Admin', __("Produktkategorien", "wpsg"), __("Produktkategorien", "wpsg"), 'wpsg_produkt', 'wpsg-Productcategories', 'callback');
add_action("load-".$callback, function() { header('Location: '.admin_url('edit-tags.php?taxonomy=wpsg-tax')); exit; } );

TYPO3 Hook um den Untertitel (subtitle) anstatt des Titels (title) in den indexed_search Ergebnissen zu verwenden

Erstellt in Allgemein am 20. März 2016 vom Daschmi

Möchte man den Untertitel (subtitle) statt des Titels (title) in den Suchergebnissen der indexed_search TYPO3 Extension verwenden, so kann man nicht einfach ###TITLE### durch ###SUBTITLE### ersetzen. Das funktioniert leider nicht. Ich habe dieses Problem gelöst, in dem ich den Hook „prepareResultRowTemplateData_postProc“ verwendet habe. Hier die Hook Klasse (class.pihook.php):

<?php

  class tx_indexedsearch_pihook
  {

      var $pObj;  

      function prepareResultRowTemplateData_postProc($tmplContent, $row, $headerOnly)
      {

        $subtitle = '';

        if ($GLOBALS['TSFE']->sys_language_uid > 0)
        {

          $result = $GLOBALS['TYPO3_DB']->exec_SELECTgetRows("subtitle", "pages_language_overlay", "
            sys_language_uid = ".$GLOBALS['TYPO3_DB']->quoteStr($GLOBALS['TSFE']->sys_language_uid, 'pages_language_overlay')." AND
            pid = ".$GLOBALS['TYPO3_DB']->quoteStr($row['page_id'], 'pages_language_overlay')." ".$this->pObj->cObj->enableFields('pages_language_overlay'));
          $subtitle = $result[0]['subtitle'];

        }
        else
        {

          $result = $GLOBALS['TYPO3_DB']->exec_SELECTgetRows("subtitle", "pages", " uid = ".$GLOBALS['TYPO3_DB']->quoteStr($row['page_id'], 'pages')." ".$this->pObj->cObj->enableFields('pages'));
          $subtitle = $result[0]['subtitle'];

        }

        if (strlen(trim($subtitle)) > 0) $tmplContent['SUBTITLEIFSET'] = str_replace($row['item_title'], $subtitle, $tmplContent['title']);
        else $tmplContent['SUBTITLEIFSET'] = $tmplContent['title'];

        return $tmplContent;

      }    

  }

?>

Der Hook selbst muss dann in einer ext_localconf.php registriert werden:

$TYPO3_CONF_VARS['EXTCONF']['indexed_search']['pi1_hooks']['prepareResultRowTemplateData_postProc'] = 'fileadmin/class.pihook.php:&tx_indexedsearch_pihook';

Längste Übereinstimmung aus einer MySQL Tabelle auslesen

Erstellt in PHP am 26. Februar 2016 vom Daschmi

Ich hatte das Problem, dass ich eine Tabelle mit Vorwahlen hatte und für eine Rufnummer die Kosten aus dieser Tabelle ermitteln musste. Hierzu wollte ich den Datensatz ermitteln der von der Länge her am weitesten mit der Nummer übereinstimmt. Ich musste etwas nachdenken und habe es schließlich mit folgendem Query gelöst:

SELECT
	*
FROM
	`tbl_connectionprice`
WHERE
	LEFT(':destinationnumber', LENGTH(`areacode`)) = `areacode`
ORDER BY
	LENGTH(`areacode`) DESC
LIMIT 1

Die Variable :destinationnumber ist dabei die komplette Rufnummer die angerufen wurde inklusive Vorwahl und in der Spalte areacode sind die Vorwahlen definiert.