postrow.custom_fields --> über Extension deaktivieren?

In diesem Forum gibt es Starthilfe zum neuen Extension-System von phpBB 3.1/3.2. Fragen zur Entwicklung von Extensions und zur Konvertierung von phpBB 3.0.x MODs sind ebenfalls willkommen.
Antworten
Benutzeravatar
Saint
Mitglied
Beiträge: 1166
Registriert: 09.04.2004 14:06
Wohnort: Hamburg
Kontaktdaten:

postrow.custom_fields --> über Extension deaktivieren?

Beitrag von Saint »

Hintergrund:
Ich lagere gerade alle benötigten Styleänderungen in eine eigene Extension aus (Spezielle Links im Menü, Highslide JS, Favicon, etc).
Das klappt auch prima. Das endgültige Ziel ist natürlich komplett ohne Änderungen am Core-Code auszukommen.
Leider hänge ich da an einer Stelle:
Eine spezielle Modifikation - benutzerdefinierte Profilfelder, in denen der User seinen Hifi-Park angeben kann.
Die lasse ich in einer kompakten Tabelle unterhalb der Signatur anzeigen. Ist kein Problem über viewtopic_body_postrow_post_content_footer das mit rein zu nehmen.
Nun kommt aber das Problem:
Dieser Gerätepark wird dann natürlich auch unterhalb des Avatars angezeigt, das eine ewig lange Liste ergibt.
In der viewtopic_body.html dieser Code:

Code: Alles auswählen

        <!-- BEGIN custom_fields -->
            <!-- IF not postrow.custom_fields.S_PROFILE_CONTACT -->
                <dd class="profile-custom-field profile-{postrow.custom_fields.PROFILE_FIELD_IDENT}"><strong>{postrow.custom_fields.PROFILE_FIELD_NAME}{L_COLON}</strong> {postrow.custom_fields.PROFILE_FIELD_VALUE}</dd>
            <!-- ENDIF -->
        <!-- END custom_fields --> 
Momentan müsste ich den Code auskommentieren oder löschen.
Die Frage: wie kann ich über eine Extension diesen Code deaktivieren oder modifizieren? Geht das überhaupt?

Besten Dank und viele Grüße!
Benutzeravatar
Elsensee
Ehemaliges Teammitglied
Beiträge: 832
Registriert: 19.05.2010 15:14
Wohnort: Hamburg
Kontaktdaten:

Re: postrow.custom_fields --> über Extension deaktivieren?

Beitrag von Elsensee »

Man könnte darüber nachdenken, daraus ein eigenes Modul oder eigenes Feld im UCP zu machen anstelle eines Profilfelds. Ist vielleicht ein Overkill, aber das wäre sicherlich eine Lösung... :D

Eine andere wäre, dich in das Event core.generate_profile_fields_template_data_before (in der Datei phpbb/profilefields/manager.php) einzuhängen und dort dein Profilfeld aus dem Array $profile_row entfernen.

Oder du setzt in der Datenbank (ich weiß nicht, ob das auch im ACP geht :oops: :lol: ) den Wert von field_show_on_vt für dein Profilfeld auf 0 oder false oder sowas. Dann sollte viewtopic.php das Profilfeld auch nicht mehr mögen. :wink: :D
Posts mostly powered by GitHub and phpBB.de Cross-Reference

2015-03-20 - Never forget 8)
Benutzeravatar
Saint
Mitglied
Beiträge: 1166
Registriert: 09.04.2004 14:06
Wohnort: Hamburg
Kontaktdaten:

Re: postrow.custom_fields --> über Extension deaktivieren?

Beitrag von Saint »

Jetzt kämpfe ich gerade damit, das dieser Code direkt in der viewtopic_body.html läuft, in meiner viewtopic_body_postrow_post_content_footer.html leider nicht:

Code: Alles auswählen

    <!-- BEGIN custom_fields -->
        <!-- IF postrow.custom_fields.PROFILE_FIELD_NAME eq "Favorite Team" -->
            <b>{postrow.custom_fields.PROFILE_FIELD_NAME}:</b> {postrow.custom_fields.PROFILE_FIELD_VALUE}<br />
        <!-- ENDIF -->
    
        <!-- IF postrow.custom_fields.PROFILE_FIELD_NAME eq "Gender" -->
            <b>{postrow.custom_fields.PROFILE_FIELD_NAME}:</b> {postrow.custom_fields.PROFILE_FIELD_VALUE}<br />
        <!-- ENDIF -->
    <!-- END custom_fields -->
Ab <!-- BEGIN custom_fields --> bricht der Output ab.
Hat jemand eine Idee?
Benutzeravatar
Saint
Mitglied
Beiträge: 1166
Registriert: 09.04.2004 14:06
Wohnort: Hamburg
Kontaktdaten:

Re: postrow.custom_fields --> über Extension deaktivieren?

Beitrag von Saint »

Weder:

Code: Alles auswählen

<!-- BEGIN custom_fields -->{custom_fields.PROFILE_FIELD_VALUE}<!-- END custom_fields -->
noch:

Code: Alles auswählen

                                        <!-- IF custom_fields.PROFILE_FIELD_IDENT eq 'geraete_a' -->
                                        {custom_fields.PROFILE_FIELD_VALUE}
                                        <!-- ENDIF -->
gibt etwas aus. Diverse Variationen, von postrow.custom_fields bis PROFILE_FIELD_NAME.
Weder in der viewtopic_body_postrow_custom_fields_after.html, noch in der viewtopic_body_postrow_post_content_footer.html
Direkt in der viewtopic_body.html läuft es.
Vom Style ist es auch nicht abhängig.
Hat keiner einer Idee wie ich das zum laufen bekomme, bzw was ich falsch mache? Ich weiß langsam nicht mehr weiter und würde das echt gerne aus dem Core-Template auslagern.
Benutzeravatar
Talk19zehn
Ehemaliges Teammitglied
Beiträge: 4914
Registriert: 08.06.2009 12:03
Kontaktdaten:

Re: postrow.custom_fields --> über Extension deaktivieren?

Beitrag von Talk19zehn »

Hi Saint, du brauchst m.E. 3 Events. Bei mir klappt es. Wenn ich dich korrekt verstanden habe, ist im Miniprofil nix der Customs zu lesen und alles ist in der Signatur untergebracht. Jedenfalls ist so mein Aufbau. Ich habe das mal "zusammengeschustert" und wie soll ich ich das Teil zukommen lassen? Es ist wirklich nur ein erster Ansatz und darum mag ich das Teilchen nicht oder noch nicht online stellen. Aufhübschen und verbessern muss/kann man auch noch. Valide ist´s auch, freu!
Auweia,- evtl. ist aber auch alles für den Papierkorb ... :lol: Hier mal das Teilchen, welches ich als Referenz gerne kurz weitergebe: Das folgende Vorgehen könnte ich mir vorstellen und habe dies inhaltlich angewandt.

Beispiel: FELDKENNUNG ersetze 3x mit dem Inhalt laut ACP.

Code: Alles auswählen

	  <!-- IF postrow.S_PROFILE_FELDKENNUNG -->
		  <div><strong>{postrow.PROFILE_FELDKENNUNG_NAME}:</strong> {postrow.PROFILE_FELDKENNUNG_VALUE}</div>
	  <!-- ENDIF -->
Die Feld-Kennung: browser
ergibt folgenden Code:

Code: Alles auswählen

	<!-- BEGIN custom_fields -->
	  <!-- IF postrow.S_PROFILE_BROWSER -->
		  <div><strong>{postrow.PROFILE_BROWSER_NAME}:</strong> {postrow.PROFILE_BROWSER_VALUE}</div>
	  <!-- ENDIF -->


viewtopic_body_postrow_custom_fields_before.html

Code: Alles auswählen

<div style="display: none;">
viewtopic_body_postrow_custom_fields_after.html

Code: Alles auswählen

</div>
	<div style="clear: both"></div>
viewtopic_body_postrow_post_content_footer.html

Code: Alles auswählen

<div>
	<div>
		<!-- BEGIN custom_fields -->
		  <!-- IF postrow.S_PROFILE_BROWSER -->
			 <div><strong>{postrow.PROFILE_BROWSER_NAME}:</strong> {postrow.PROFILE_BROWSER_VALUE}</div>
		  <!-- ENDIF -->
	</div>
</div>
<div style="clear: both"></div>
Bedenke: Durch das Ausblenden müssen genutzte Standard-CPFs erneut gemäß dem obigen Beispiel in der viewtopic_body_postrow_custom_fields_after.html hinzugefügt werden. Hoffentlich habe ich jetzt "nix" in der "Kurzform" vergessen. IF-Statements, IDs und Klassen müssen selbstverständlich noch eigenverantwortlich gesetzt/aufgenommen werden. Diese Extension stellt daher keinen fertigen Code zur Verfügung. Sie ist als reine Referenz zu verstehen.

LG



EDIT: 20.04.2015: 21:25 Okay - Los geht´s ...
EXTENSION ==> im Entwurf via E-Mail soeben versandt.

Grüße
Beste Grüße
phpBB3 Designs: Stylearea Ongray-Designs
Benutzeravatar
Saint
Mitglied
Beiträge: 1166
Registriert: 09.04.2004 14:06
Wohnort: Hamburg
Kontaktdaten:

Re: postrow.custom_fields --> über Extension deaktivieren?

Beitrag von Saint »

Denn einmal zusammenfassend. Ausgangslage:
Im Harmony Forum können die User ihre Fernbedienung (bis zu drei Stück), die Verwaltungssoftware (Auswahlfeld) und auch die Geräte ihres Hifi-Geräte Parks (bis zu 15) angeben.
Das ist über CPFs gelöst, schon in 3.0 hatte ich die viewtopic_body.php entsprechend angepasst, das nicht alle Angaben im Mini-Profil / unter dem Avatar rein geklatscht werden. Im Mini-Profil werden die Fernbedienungen und die Software angezeigt, die Geräte als kleine Tabelle unter der Signatur:
[ externes Bild ]
Beim Sprung auf phpBB 3.1 lief das auch alles problemlos in der viewtopic_body.html. In einer Extension leider nicht.
Das Problem wurde netterweise mit dem Code von Talk19zehn gelöst: http://www.ongray-design.de/screenshots/ongray.zip
Auch hat sie gleich mein Ursprungsproblem gelöst: wie kann ich den Output der CPFs lösen, ohne etwas im Template oder im Core-Code zu verändern. Das mir also nicht im schlimmsten Fall 19 Angaben ins Mini-Profil geballert werden.
Dafür klinkt sie sich vor den Output der CPFs über viewtopic_body_postrow_custom_fields_before.html ein, öffnet diesen Tag und lässt damit simpel gar keine CPF ausgeben:

Code: Alles auswählen

<div style="display: none;"> 
In viewtopic_body_postrow_custom_fields_after.html schließt sie den Tag wieder und man kann gezielt hinzufügen was man sich ausgeben lassen will. Dabei beachten:
der Wohnort (phpbb_location) ist flöten gegangen, muss also wieder rein:

Code: Alles auswählen

</div>

<dd class="profile-custom-field profile-{postrow.custom_fields.PROFILE_FIELD_IDENT}">
    <!-- BEGIN custom_fields -->
        <!-- IF postrow.S_PROFILE_PHPBB_LOCATION -->
            <div><strong>{postrow.PROFILE_PHPBB_LOCATION_NAME}:</strong> {postrow.PROFILE_PHPBB_LOCATION_VALUE}</div>
        <!-- ENDIF -->
    
    <!-- BEGIN custom_fields -->
        <!-- IF postrow.S_PROFILE_FERNBEDIENUNG -->
            <div><strong>{postrow.PROFILE_FERNBEDIENUNG_NAME}:</strong> {postrow.PROFILE_FERNBEDIENUNG_VALUE}</div>
        <!-- ENDIF -->

    <!-- BEGIN custom_fields -->
        <!-- IF postrow.S_PROFILE_FERNBEDIENUNG_ZWO -->
            <div><strong>{postrow.PROFILE_FERNBEDIENUNG_ZWO_NAME}:</strong> {postrow.PROFILE_FERNBEDIENUNG_ZWO_VALUE}</div>
        <!-- ENDIF -->
      
    <!-- BEGIN custom_fields -->
        <!-- IF postrow.S_PROFILE_FB_DREI -->
            <div><strong>{postrow.PROFILE_FB_DREI_NAME}:</strong> {postrow.PROFILE_FB_DREI_VALUE}</div>
        <!-- ENDIF -->  
      
    <!-- BEGIN custom_fields -->
        <!-- IF postrow.S_PROFILE_SOFTWARE -->
            <div><strong>{postrow.PROFILE_SOFTWARE_NAME}:</strong> {postrow.PROFILE_SOFTWARE_VALUE}</div>
        <!-- ENDIF -->
</dd>  
<div style="clear: both"></div> 
Den Hifi-Gerätepark lasse ich dann noch über den viewtopic_body_postrow_post_content_footer Hook ausgeben. Beispiel, auf eine Zeile reduziert:

Code: Alles auswählen

<!-- IF FORUM_ID != 35 and FORUM_ID != 58 -->
<div id="sig{postrow.POST_ID}" class="signature">
    <!-- IF postrow.S_PROFILE_GERAETE_A or postrow.S_PROFILE_GERAETE_B or postrow.S_PROFILE_GERAETE_C -->
        <table width="100%">
                    <tr>
                        <td style="vertical-align: top; width:33%; padding-right:10px;">
                            <!-- BEGIN custom_fields -->
                                <div><!-- IF postrow.S_PROFILE_GERAETE_A --><span style="font-size: 85%">{postrow.PROFILE_GERAETE_A_VALUE}</span><!-- ENDIF --></div>
                        </td>
                        <td style="vertical-align: top; width:33%; padding-right:10px;">
                            <!-- BEGIN custom_fields -->
                                <div><!-- IF postrow.S_PROFILE_GERAETE_B --><span style="font-size: 85%">{postrow.PROFILE_GERAETE_B_VALUE}</span><!-- ENDIF --></div>
                        </td>
                        <td style="vertical-align: top; width:33%; padding-right:10px;">
                            <!-- BEGIN custom_fields -->
                                <div><!-- IF postrow.S_PROFILE_GERAETE_C --><span style="font-size: 85%">{postrow.PROFILE_GERAETE_C_VALUE}</span><!-- ENDIF --></div>
                        </td>                        
                    </tr> 
        </table>
    <!-- ENDIF -->
</div>        
        <div style="clear: both"></div>
<!-- ENDIF --> 
Ansonsten habe ich dann soweit alles (Meta-Tags, Link auf eigenes Script mit append_sid, Favicon, Highslide, etc) in meine Extension ausgelagert und das Ziel ist erreicht: Nichts mehr an phpBB und Template geändert. Logo mal ausgenommen. Schöne Sache. :)
Herzlichen Dank nochmals an alle Beteiligten und vor allem an Talk19zehn!
Antworten

Zurück zu „Extension Bastelstube“