mal wieder mod_rewrite

Begonnen von pyr0, 02 Dezember 2013, 14:20:58

⏪ vorheriges - nächstes ⏩

0 Mitglieder und 1 Gast betrachten dieses Thema.

pyr0

so hab den Fehler scheinbar gefunden, neue Version liegt hier bereit http://module-factory.net/Files/portfolio.zip
;) :smile:
Kein Support über PN, Mail !
Bitte die Fragen im Forum stellen, nur so helfen die Antworten auch den anderen Usern.
Bitte auch die Boardsuche nicht vergessen, oft ist genau dein Problem schon an anderer Stelle gelöst worden!

AlternativeComputing

#21
Das hat nichts mit genervt zu tun  ;)

Wenn man mich nach einer Demo DB in Form einer Sql Datei fragt, kann ich die doch mit geben, da ist nichts dabei.
Und wenn es nur eine Insert File ist.

Denn der Dump ist in einer Minute gemacht und man kann sich auf das eigentliche Problem konzentrieren.

Aber ist ja jetzt auch egal.

<Edit>

Auch diese Version ist Fehlerhaft:



Es sind folgende Fehler aufgetreten:
modules/Portfolio/admin/category.php:
· Incorrect integer value: '' for column 'category_id' at row 1 query: INSERT {prefix}_portfolio_category (category_id, category_name, category_counter ) VALUES ('', 'Test', '0') on line 102



Auch hier sind die Porto Link deaktiviert:



</Edit>
MfG

Peter

pyr0

#22
komisch; ich bekomm den fehler nicht
Kein Support über PN, Mail !
Bitte die Fragen im Forum stellen, nur so helfen die Antworten auch den anderen Usern.
Bitte auch die Boardsuche nicht vergessen, oft ist genau dein Problem schon an anderer Stelle gelöst worden!

pyr0

hier mal ein sql-dump wie gewüntscht:

-- phpMyAdmin SQL Dump
-- version 4.0.9
-- http://www.phpmyadmin.net
--
-- Host: 127.0.0.1
-- Erstellungszeit: 12. Dez 2013 um 18:37
-- Server Version: 5.5.34
-- PHP-Version: 5.4.22

SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";

--
-- Datenbank: `pmx`
--

-- --------------------------------------------------------

--
-- Tabellenstruktur für Tabelle `mx47c30f_portfolio`
--

CREATE TABLE IF NOT EXISTS `mx47c30f_portfolio` (
  `pf_id` int(10) NOT NULL AUTO_INCREMENT,
  `pf_time` int(50) NOT NULL,
  `pf_cat_id` int(10) NOT NULL,
  `pf_title` varchar(100) NOT NULL,
  `pf_desc` varchar(200) NOT NULL,
  `pf_desc_long` text NOT NULL,
  `pf_img` varchar(50) NOT NULL,
  `pf_count` int(10) NOT NULL,
  `pf_activ` enum('0','1') NOT NULL DEFAULT '0',
  PRIMARY KEY (`pf_id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;

--
-- Daten für Tabelle `mx47c30f_portfolio`
--

INSERT INTO `mx47c30f_portfolio` (`pf_id`, `pf_time`, `pf_cat_id`, `pf_title`, `pf_desc`, `pf_desc_long`, `pf_img`, `pf_count`, `pf_activ`) VALUES
(1, 1386869754, 5, 'Testportfolio', 'Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut l', 'Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet. <br /><br />Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi. Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. <br /><br />Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat. Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla facilisis at vero eros et accumsan et iusto odio dignissim qui blandit praesent luptatum zzril delenit augue duis dolore te feugait nulla facilisi.&nbsp;', 'no_portfolio.jpg', 0, '1');

-- --------------------------------------------------------

--
-- Tabellenstruktur für Tabelle `mx47c30f_portfolio_category`
--

CREATE TABLE IF NOT EXISTS `mx47c30f_portfolio_category` (
  `category_id` int(10) NOT NULL AUTO_INCREMENT,
  `category_name` varchar(50) NOT NULL,
  `category_counter` varchar(10) NOT NULL,
  PRIMARY KEY (`category_id`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 AUTO_INCREMENT=6 ;

--
-- Daten für Tabelle `mx47c30f_portfolio_category`
--

INSERT INTO `mx47c30f_portfolio_category` (`category_id`, `category_name`, `category_counter`) VALUES
(5, 'Neu', '1');

-- --------------------------------------------------------

--
-- Tabellenstruktur für Tabelle `mx47c30f_portfolio_images`
--

CREATE TABLE IF NOT EXISTS `mx47c30f_portfolio_images` (
  `pf_id` int(10) NOT NULL AUTO_INCREMENT,
  `pf_id_img` int(10) NOT NULL,
  `img_name` varchar(50) NOT NULL,
  `img_desc` varchar(100) NOT NULL,
  PRIMARY KEY (`pf_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;

-- --------------------------------------------------------

--
-- Tabellenstruktur für Tabelle `mx47c30f_portfolio_log`
--

CREATE TABLE IF NOT EXISTS `mx47c30f_portfolio_log` (
  `pf_log_id` int(10) NOT NULL AUTO_INCREMENT,
  `pf_log_time` int(30) NOT NULL,
  `pf_log_ip` varchar(30) NOT NULL,
  `pf_log_what` text NOT NULL,
  `pf_log_username` varchar(50) NOT NULL,
  PRIMARY KEY (`pf_log_id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;


hoffe das es damit geht
Kein Support über PN, Mail !
Bitte die Fragen im Forum stellen, nur so helfen die Antworten auch den anderen Usern.
Bitte auch die Boardsuche nicht vergessen, oft ist genau dein Problem schon an anderer Stelle gelöst worden!

AlternativeComputing

Sooo, nun weiß ich warum die mod_rewrite Regeln bei Dir nicht greifen.

Dir fehlt die dazugehörige Datei im Ordner core und dann die dazu passenden Regeln in der .htacces.

Die Regeln:



# pragmaMx - Web Content Management System
# Copyright by pragmaMx Developer Team - http://www.pragmamx.org
# $Revision: 1.20.2.1 $
# $Author: dia_bolo $
# $Date: 2012-02-04 11:12:42 $

#AddType x-mapp-php5 .php
#AddHandler x-mapp-php5 .php

#AddHandler php-fastcgi .php .php4 .php3

# rename this file to .htaccess, and you will get nice and clean urls.

# Depends on your configuration, you must set RewrteBase to
# switch on Mod_rewrite. See for this the online docs:
# http://httpd.apache.org/docs/mod/mod_rewrite.html


# falls nicht funktioniert, dann die nächste Zeile wieder auskommentieren!
# (Am Anfang der nächsten Zeile ein "#" einfügen... )
Options +FollowSymLinks

## EXPIRES CACHING ##
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/jpg "access 1 year"
ExpiresByType image/jpeg "access 1 year"
ExpiresByType image/gif "access 1 year"
ExpiresByType image/png "access 1 year"
ExpiresByType text/css "access 1 month"
ExpiresByType application/pdf "access 1 month"
ExpiresByType text/x-javascript "access 1 month"
ExpiresByType application/x-shockwave-flash "access 1 month"
ExpiresByType image/x-icon "access 1 year"
ExpiresDefault "access 2 days"
</IfModule>
## EXPIRES CACHING ##

# Rewrite Engine aktivieren
RewriteEngine on

# eventuell existierendes utf-8 Problem fixen
#SetEnv PMX_REWRITE_DECODE_UTF8 off

# evtl. bei Bedarf Rewrite Basisordner definieren
# falls nicht funktioniert, dann die nächste Zeile wieder einkommentieren, vorher allerdings den Pfad anpassen!!!
# RewriteBase /www

# individuelle Rewrite-Regeln:
RewriteRule ^home\.html$ index.php [L]


# ##########################################################################
#
# Individuelle Rewrite-Regeln fuer Standardmodule
#
# ##########################################################################

# Portfolio
RewriteRule ^Portfolio.html$ mod.php?name=Portfolio [L]
RewriteRule ^Portfolio-Cat-([^/]+)?\.html$ mod.php?name=Portfolio&op=category&cat_name=$1 [L]
RewriteRule ^Portfolio-.*([0-9]+)(-.*)?\.html$ mod.php?name=Portfolio&op=detail&pf_id=$1&_MORE_=$2 [L]

# ##############################################################################
# URL's automatisch generieren fuer alles was ueber die modules.php laeuft
#
# diese Regeln nicht verändern!!!
#
# ##############################################################################


RewriteRule ^([^-]+)-([^/]+)\.html$ mod.php?$1&________________________$2 [L]
RewriteRule ^([^-/]+)\.html$ mod.php?name=$1 [L]



Die mod_rewrite.php liegt mit core Ordner im Anhang.

Diese Datei ist NUR grob vorgearbeitet, den Rest musst Du machen.
Mach Dich mit der Technik vertraut, so wird es auch im PMX 2.X sein.
MfG

Peter

AlternativeComputing

#25
Nachtrag:

Wenn Du die Portfolios via:

modules.php?name=Portfolio&op=detail&pf_id=1&pf_name=Testportfolio

aufrufst, bekommst Du Probleme beim Modrewrite.

Rufst Du sie aber NUR per ID auf:

modules.php?name=Portfolio&op=detail&pf_id=1

dann bekommst Du saubere rewrite URLs hin.

Eine für den ID Aufruf funktionierende mod_rewrite.php:



<?php
/**
 * This op is part of
 * pragmaMx - Web Content Management System.
 * Copyright by pragmaMx Developer Team - http://www.pragmamx.org
 *
 * pragmaMx is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * $Revision: 1.9 $
 * $Author: tora60 $
 * $Date: 2011/09/19 12:24:26 $
 */
// TODO: Variablen besser benennen
// /// $key kann in url vorkommen
// /// $link, sollte $link, oder so heissen
/* falls die Datei direkt aufgerufen, das include einfach beenden */
if (!defined('PMX_HOME_URL')) return;
class_exists('pmxModrewrite'false) or die('access denied');

/*

# Portfolio
RewriteRule ^Portfolio.html$ mod.php?name=Portfolio [L]
RewriteRule ^Portfolio-category-([^/]+)?\.html$ mod.php?name=Portfolio&op=category&cat_name=$1 [L]
RewriteRule ^Portfolio-results-[^0-9]*-([0-9]+)(-.*)?\.html$ mod.php?name=Portfolio&op=detail&pf_id=$1&_MORE_=$2 [L]

*/
 
class pmxModrewrite_Portfolio extends pmxModrewrite {
    public function 
get($name$parameter)
    {
        global 
$prefix;

        
$replaces = array();

        
$detail = array();

        foreach (
$parameter as $key => $para) {
            switch (
true) {
                case ( (isset(
$para['op']) && $para['op'] == 'detail') && (isset($para['pf_id']) && (isset($para['pf_id']) ) ) ):
                    
$detail[0][] = $para['pf_id'];
                    
$detail[$key] = $para;
                    break;
                case ((isset(
$para['op']) && $para['op'] == 'category') && (isset($para['cat_name']))):
                    
$new_url 'Portfolio-category-' $para['cat_name'] . '.html';
                    
/* die globalen Ersetzungsparameter mit den neuen Werten überschreiben */
                    
$replaces[$key] = $para['prefix'] . $new_url $para['suffix'];
                    break;
            }
        }

        
/**
         * # News-Topic-TopicTITEL-(ID).html
         * RewriteRule ^News-Topic-.*-\(([0-9]+)\)(-.*)?\.html$ mod.php?News&________________________cat_name-$1$2 [L]
         */
        
if ($detail) {
            
$inquery implode(','array_unique(array_shift($detail)));
            
$qry "SELECT pf_id, pf_title FROM {$prefix}_portfolio WHERE pf_id in ($inquery)";
            
$result sql_query($qry);
            
$titles = array();
            while (list(
$pfid$pftitle) = sql_fetch_row($result)) {
                
/**
                 * den aus der DB ausgelesenen Titel als URL tauglich machen
                 * - Umlaute werden umgeschrieben
                 * - Sonderzeichen werden durch den angegebenen 2ten Parameter ersetzt
                 * Einstellung:
                 * der zweite Parameter der Funktion, als Sonderzeichenersatz
                 */
                
$titles[$pfid] = parent::title_entities($pftitle'-');
            }

            foreach (
$detail as $key => $link) {
                if (isset(
$titles[$link['pf_id']])) {
                    
/**
                     * schreibt alle Parameter um in das normale pragmaMx mod_rewrite Format,
                     * also getrennt mit den Bindestrichen
                     * Einstellung:
                     * alle Parameter, die nicht benötigt werden, weil sie z.B. anderweitig
                     * in der URL verwendet werden, als zusätzlichen Parameter der Funktion
                     * übergeben
                     */
                    
$new_url parent::title_parameters($link'pf_id''op');
                    
/**
                     * den neuen URL zusammensetzen
                     * Einstellung:
                     * nach belieben zusammensetzen und entspr. die .htaccess anpassen
                     */
                    // $title = $name . '-lid-' . $title . '-' . $lid . $end; // Original m-t
                    
$new_url $name '-results-' $titles[$link['pf_id']] . '-' $link['pf_id'] . $new_url;
                    
/**
                     * die globalen Ersetzungsparameter mit den neuen Werten überschreiben
                     * Einstellung: keine, muss exakt so bleiben!
                     */
                    
$replaces[$key] = $link['prefix'] . $new_url $link['suffix'];
                }
            }
        }

        return 
$replaces;
    }
}

?>




Die dazugehörigen Regeln für die .htacces:



# Portfolio
RewriteRule ^Portfolio.html$ mod.php?name=Portfolio [L]
RewriteRule ^Portfolio-category-([^/]+)?\.html$ mod.php?name=Portfolio&op=category&cat_name=$1 [L]
RewriteRule ^Portfolio-results-[^0-9]*-([0-9]+)(-.*)?\.html$ mod.php?name=Portfolio&op=detail&pf_id=$1&_MORE_=$2 [L]

MfG

Peter