raw shopware requests

ich möchte alles was urls (für menschen) modifiziert, deaktiveren. geht das?

zbs. ich möchte nicht sehen www.foo.bar/some/articlecategory/names/ sondern www.foo.bar/controller/action/arguments (oder was auch immer für ne schema shopware benutzt).

oder gibts ne einfachere weg zu wissen wohin genau eine request ging?
(xdebug wäre ne workaround, aber keine lösung)

ps. hmm, laut http://symfony.com/projects/shopware benutzt shopware symfony routing, aber wie können wir http://jedistirfry.co.uk/blog/2013-03/router-debugging-in-symfony benutzen?

Einfach alle Einträge in s_core_rewrites löschen und den entsprechenden Cronjob zum Generieren der SEO Urls deaktivieren.

Viele Grüße

1 Like

cool, danke!

ps. s_core_rewrite_urls
 

nun bekomme ich für kategorie artikel listing seiten folgende url

www.foo.bar/frontend/cat/index/sCategory/18?p=1

(für vollständigkeitshalber, habe ich manuell die modul frontend addiert)

laut Shopware controller

In Shopware, all requests will be dispatched to the corresponding controller. Internally, any request is mapped to an URL like this: http://my-shop.com/frontend/listing/index. Speaking of controllers, the following parts can be distinguished:

http://my-shop.com - the protocol and domain part
frontend - the module
listing - the controller
index - the action

müsste ich jetzt eine controller namens cat finden, oder?

es gibt aber unter engine/Shopware/Controllers/Frontend keine datei namens cat.php.
und auch nirgens anders ist solche controller definiert:

grep -r 'Shopware_Controllers_Frontend_Cat' engine/Shopware/
(keine ergebnisse)

nun frage ich mich:

  • habe ich was eindeutiges übersehen?
  • wo landet die request /cat/index/sCategory/18?p=1?
  • wenn es kein controller ist, was ist diese extra regel?
    - gibt es mehr extra regeln?

 

In Grundeinstellungen -> SEO/Router-Einstellungen gibt es noch „sonstige SEO-Urls“. Da steht zb:
sViewport=cat&sCategory={$sCategoryStart},listing/

Du suchst also den listing controller.

Viele Grüße

hmm,

nicht mal in unsere live system gibts einträge in backend
Grundeinstellungen > “seo” > sonstige SEO-Urls

in welche datenbank tabelle sollte diese einträge sein?
ist es schlimm wenn die weg sind?

ok, die werte aus Grundeinstellungen > „seo“ > sonstige SEO-Urls werden anscheinend in die tabelle s_core_config_values gespeichert… am besten da nicht reinschauen…

und weil da keine einträge für cat gibt/gab, wundere ich von wo diese übersetzung jetzt kommt…

hmm,

in datenbank kann es nicht sein, weil

grep -n --color 'cat[^a-Z]' db.sql

keine ergebnisse bringt was annährend relevant aussehen würde. aber mit

grep -rn --color 'cat[^a-Z]' engine/Shopware/

kommt sehr viele einträge die wahrscheinlich relevant sind, und wenn ich zbs.

            case 'cat':
            case 'supplier':
                $request->setControllerName('listing')->setDispatched(false);
                break;

anschaue, (und weil diese „plugin“ in backend nicht sichtbar ist), vermute ich das diese für wegen rückwärts kompatibilität hard-kodiert ist…

Hi,

genau so ist es, ein paar Sachen sind leider noch hart kodiert.

BTW: Die Idee mit dem „Routing abstellen“ finde ich eigentlich ganz nett, das könnte man später mal als Config-Switch machen. Zur Zeit ginge das auch mit dem folgenden Plugin (weiß nicht, ob es praktikabel ist, aber ich wollte es mal testen):

assertMinimumVersion('4.3.0')) {
            throw new \RuntimeException('At least Shopware 4.3.0 is required');
        }


        $this->subscribeEvent(
            'Enlight_Controller_Front_RouteStartup',
            'onAfterRouter'
        );

        return true;
    }

    public function onAfterRouter()
    {
        /** @var Router $router */
        $router = Shopware()->Container()->get('router');

        $router->setMatchers(array_filter($router->getMatchers(), function(MatcherInterface $matcherInterface) {
            return !$matcherInterface instanceof RewriteMatcher;
        }));


        $router->setGenerators(array_filter($router->getGenerators(), function(GeneratorInterface $generatorInterface) {
            return !$generatorInterface instanceof RewriteGenerator;
        }));
    }
}

 

gibt es pläne die symfony toolbar in shopware zu benutzen?

diese wäre für entwickler so was von cool!
http://symfony.com/blog/new-in-symfony-3-1-forwards-and-redirects-in-the-toolbar-and-profiler