Hauptmenü

Werkzeuge

Kategorien

Archiv

Einhell

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.

Excel Funktion AUFRUNDEN mit PHP nachgebildet

Erstellt in PHP am 12. Januar 2016 vom Daschmi

Die Excel Funktion „AUFRUNDEN“ kann mit folgender Funktion in PHP nachgebildet werden:

public static function AUFRUNDEN($value, $digit)
{

	$pow = pow(10, $digit);

	return (ceil($pow * $value) + ceil($pow * $value - ceil($pow * $value))) / $pow;

} // public static function AUFRUNDEN($value, $digit)

Makro für doppelte Unterstreichung in MathJax

Erstellt in Allgemein am 10. Dezember 2015 vom Daschmi

Um einen Text doppelt zu unterstreichen kann man in MathJax folgendes Makro definieren um sich die Arbeit zu vereinfachen:

MathJax.Hub.Config({
  TeX: {
    Macros: {
      du: ["\\underline{\\underline{#1}}", 1]
    }
  }
} );

WordPress Menü Reihenfolge drehen

Erstellt in Wordpress am 6. Dezember 2015 vom Daschmi

Hat man im WordPress ein Menü, welches man mittels wp_nav_menu anzeigt und möchte die Elemente drehen. So kann man folgenden Filter verwenden:

function daschmi_reverse_menu($menu, $options)
{

  return array_reverse($menu);

}

Das Menü bindet man dann wie folgt ein:

add_filter('wp_nav_menu_objects', 'daschmi_reverse_menu');
wp_nav_menu(array('theme_location' => 'header-menu'));
remove_filter('wp_nav_menu_objects', 'daschmi_reverse_menu');

PDFs automatisch aus Ordner drucken mit C#

Erstellt in C# am 26. November 2015 vom Daschmi

Aufgabenstellung war das Drucken von PDF Dokumenten die automatisiert auf einem Netzlaufwerk abgelegt werden. Letztendlich habe ich es über ein kleines C# Programm gelöst welches den Acrobat aufruft, das Dokument druckt und anschließend löscht.

Im Beispiel werden alle Dokumente gedruckt, die im Ordner „U:\PRINT\“ abgelegt werden. Dem Programm können zwei Parameter übergeben werden, einmal der Pfad zum Acrobat Reader und einmal der Ordner der überwacht werden soll.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Threading;
using System.Diagnostics;

namespace ConsoleApplication1
{

    class Program
    {

        static void Main(string[] args)
        {

            String strAcrobat = @"C:\Program Files (x86)\Adobe\Reader 11.0\Reader\AcroRd32.exe";
            String strPath = @"C:\Users\Daniel\Desktop\PRINT\";

            if (args.Length == 2 && !String.IsNullOrEmpty(args[0])) strAcrobat = args[0];
            if (args.Length == 2 && !String.IsNullOrEmpty(args[1])) strPath = args[1];

            do
            {

                while (!Console.KeyAvailable)
                {

                    string[] arFiles = Directory.GetFiles(strPath);

                    foreach (String strFile in arFiles)
                    {

                        Console.WriteLine("Drucke :" + strFile);

                        ProcessStartInfo procStartInfo = new ProcessStartInfo(strAcrobat, " /p /h " + strFile);

                        procStartInfo.RedirectStandardOutput = true;
                        procStartInfo.UseShellExecute = false;
                        procStartInfo.CreateNoWindow = true;

                        System.Diagnostics.Process proc = new System.Diagnostics.Process();
                        proc.StartInfo = procStartInfo;
                        proc.Start();
                        proc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;

                        if (proc.HasExited == false)
                        {
                            proc.WaitForExit(10000);
                        }

                        proc.EnableRaisingEvents = true;

                        proc.Close();
                        KillAdobe("AcroRd32");

                        Console.WriteLine("Lösche :" + strFile);
                        Console.WriteLine("");

                        File.Delete(strFile);

                    }

                }

            } while (Console.ReadKey(true).Key != ConsoleKey.Escape);

        } // static void Main(string[] args)

        private static bool KillAdobe(string name)
        {

            foreach (Process clsProcess in Process.GetProcesses().Where(clsProcess => clsProcess.ProcessName.StartsWith(name)))
            {

                clsProcess.Kill();

                return true;

            }

            return false;

        } // private static bool KillAdobe(string name)

    }

}

Zertifikat für den Apple Push Server erstellen

Erstellt in IPhone SDK am 10. November 2015 vom Daschmi

Damit man mit dem Apple Notification Server kommunizieren kann, muss man jedes Jahr ein Zertifikat erstellen. Dazu muss man den Privaten Schlüssel und das Zertifikat exportieren und wie folgt umwandeln.

Exportierte .p12 Dateien in .pem Dateien umwandeln:

openssl pkcs12 -clcerts -nokeys -out cert.pem -in cert.p12
openssl pkcs12 -nocerts -out key.pem -in key.p12

Passwort aus Key entfernen:

openssl rsa -in key.pem -out key-nopwd.pem

Dateien kombinieren:

cat cert.pem key-nopwd.pem > apn.pem

Kommunikation testen:

openssl s_client -connect gateway.push.apple.com:2195 -cert cert.pem -key key-nopwd.pem

HTTP in iOS 9.0 standardmäßig deaktiviert.

Erstellt in IPhone SDK am 21. Oktober 2015 vom Daschmi

Apple hat das unverschlüsselte HTTP Protokoll mit dem Update auf iOS 9.0 standardmäßig deaktiviert und es sind nur noch HTTPS Anfragen zulässig. Weiterhin werden nur noch bestimmte Verschlüsselungsalgorithmen von Apple als sicher eingestuft und erlaubt.

Apple erläutert diesen Schritt hier.

Mittels folgendem Eintrag in der plist Datei eines XCode Projektes sind aber weiterhin HTTP Anfragen möglich:

<key>NSAppTransportSecurity</key>
<dict>
  <key>NSAllowsArbitraryLoads</key><true/>
</dict>

Title in Link (a) und Image (img) Tag für Content Elemente

Erstellt in TS Schnipsel, TYPO3 am 4. August 2015 vom Daschmi

Möchte man im TYPO3 ein Bild verlinken und gibt einen ALT und TITLE Text an, so wird der TITLE Text auf den Link gesetzt und der Image Tag erhält den ALT Text. In meinen Augen ist dies korrekt, aber manche SEO Optimierer wünschen sich den TITLE Text auf dem Link Tag und dem Image Tag. Dies kann über folgende Variable in den Typoscript Konstanten gesteuert werden:

styles.content.imgtext.titleInLinkAndImg = 1