Ich habe die interessante Antwort auf die Frage " Wie kann ich mit drush eine Liste von Inhaltstypen erhalten? " Gesehen , die wie folgt beginnt:
Sie können einen Drush-Befehl mit dem Namen erstellen
content-type-list
.
Aber ich frage mich, wie es aussehen sollte, wenn der Befehl einen anderen Namen haben sollte, z. B. mijn-contenttypes-lijst
(anstelle von content-type-list
), und drush drush mcl
(anstelle von drush ctl
) verwenden sollte.
Einige Gründe, warum ich möglicherweise einen anderen Namen verwenden möchte:
- Weil es mit etwas anderem in Drupal in Konflikt steht, für das ich bereits verwendet habe
content-type-list
und / oderctl
. - Der Befehl ist schwer zu merken (z. B. weil er nicht in meiner Muttersprache ist), daher möchte ich ihn an einen anderen Namen anpassen.
Was genau müsste ich an dem in dieser Antwort enthaltenen Code ändern, der derzeit so aussieht:
<?php
/**
* @file
* Drush commands related to Content Types.
*/
/**
* Implements hook_drush_command().
*/
function drush_content_types_drush_command() {
$items['content-type-list'] = array(
'description' => dt("Show a list of available content types."),
'aliases' => array('ctl'),
);
return $items;
}
/**
* Callback for the content-type-list command.
*/
function drush_drush_content_types_content_type_list() {
$content_types = array_keys(node_type_get_types());
sort($content_types);
drush_print(dt("Machine name"));
drush_print(implode("\r\n", $content_types));
}
PS: Ich verstehe, dass ich auch Aliase dafür erstellen kann (wie in der verknüpften Antwort gezeigt), aber darum geht es in meiner Frage nicht. ZB wenn ich einen Befehl will, der etwas anderes macht.
Sie müssten ein paar Dinge ändern:
Der Array-Schlüssel unter $ items und der Wert für "Aliase" unter diesem Bedarf wurden geändert. Der Array-Schlüssel wird verwendet, um den Rückruf zu identifizieren, der bei Verwendung des Befehls drush oder des Alias aufgerufen werden soll. Der Rückruf beginnt aus irgendeinem Grund nicht mit dem Präfix der Befehlsdatei, sondern mit "drush" und dann mit dem Präfix der Befehlsdatei und dem oben aufgeführten Array-Schlüssel, wobei die Bindestriche durch Unterstriche ersetzt werden. Die zweite (Rückruf-) Funktion würde also so aussehen ...
Wenn Sie diese Änderungen vornehmen, erhalten Sie das, was Sie möchten. Weitere Informationen zum Erstellen eigener Drush-Befehle finden Sie hier: Command Authoring
quelle
Siehe auch den drushify Befehl auf drupal.org.
quelle
... Vorab sage ich, dass Ihre Frage wirklich so klingt, als ob Sie ein Alais erstellen sollten. Da Sie jedoch explizit fragen, wie Sie Ihren eigenen brandneuen Befehl mit einem neuen Namen erstellen können, können Sie Folgendes tun:
Sie müssen den Array-Schlüssel in der Funktion hook_drush_command sowie den Namen der Rückruffunktion ändern. Sie können eine Datei mit dem Namen drush_foo erstellen und beliebige Befehle definieren. Beachten Sie, dass der Array-Schlüssel der Funktion hook_drush_command mit dem Namen der Rückruffunktion identisch ist (außer dass Bindestriche durch Unterstriche ersetzt werden). Versuchen Sie so etwas:
Vergessen Sie auch nicht, dass Sie beim Hinzufügen (oder Ändern) eines Drush-Befehls IMMER ausführen sollten,
drush cc drush
damit Drush seinen eigenen Cache leeren und feststellen kann, dass ein neuer Befehl vorhanden istquelle